Camunda调用子流程案例

news2024/9/19 23:38:29

调用子流程

调用子流程是指子流程在主流程的外面。子流程一般是多个流程可重用的流程,也可以独立调用子流程。
可以对比编程中的方法抽取。子流程运行时,主流程也是等待状态。子流程结束,主流程继续。

BPMN设计

主流程

在这里插入图片描述

全局配置

在这里插入图片描述

上传视频

在这里插入图片描述

处理单个视频

在这里插入图片描述

确认上传

XML内容

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">
  <bpmn:process id="Process_called_activity" name="调用子流程" isExecutable="true">
    <bpmn:startEvent id="StartEvent_1">
      <bpmn:outgoing>Flow_17do2o9</bpmn:outgoing>
    </bpmn:startEvent>
    <bpmn:sequenceFlow id="Flow_17do2o9" sourceRef="StartEvent_1" targetRef="Activity_0hvc1zt" />
    <bpmn:userTask id="Activity_0hvc1zt" name="上传视频" camunda:assignee="${customer}">
      <bpmn:extensionElements>
        <camunda:formData>
          <camunda:formField id="num" label="数量" type="long" defaultValue="1" />
        </camunda:formData>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_17do2o9</bpmn:incoming>
      <bpmn:outgoing>Flow_1g4a6nc</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:sequenceFlow id="Flow_1g4a6nc" sourceRef="Activity_0hvc1zt" targetRef="Activity_0rb7n5o" />
    <bpmn:sequenceFlow id="Flow_08kb2ee" sourceRef="Activity_0rb7n5o" targetRef="Activity_11s7j95" />
    <bpmn:userTask id="Activity_11s7j95" name="确认上传" camunda:assignee="aaa">
      <bpmn:incoming>Flow_08kb2ee</bpmn:incoming>
      <bpmn:outgoing>Flow_0udt21b</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:endEvent id="Event_0pgl9h9">
      <bpmn:incoming>Flow_0udt21b</bpmn:incoming>
    </bpmn:endEvent>
    <bpmn:sequenceFlow id="Flow_0udt21b" sourceRef="Activity_11s7j95" targetRef="Event_0pgl9h9" />
    <bpmn:callActivity id="Activity_0rb7n5o" name="处理单个视频" calledElement="process_sub_process_vedio">
      <bpmn:extensionElements>
        <camunda:inputOutput />
        <camunda:out sourceExpression="${targetResult}" target="result" />
        <camunda:in sourceExpression="${videoName}" target="targetVideoName" />
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_1g4a6nc</bpmn:incoming>
      <bpmn:outgoing>Flow_08kb2ee</bpmn:outgoing>
      <bpmn:multiInstanceLoopCharacteristics camunda:collection="${videoNameList}" camunda:elementVariable="videoName" />
    </bpmn:callActivity>
  </bpmn:process>
</bpmn:definitions>

子流程

在这里插入图片描述

视频格式检验。视频内容检查也是同养设置,不赘述。

在这里插入图片描述

监听器将处理结果进行设置

XML内容

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">
  <bpmn:process id="process_sub_process_vedio" name="处理单个视频" isExecutable="true">
    <bpmn:startEvent id="StartEvent_1">
      <bpmn:outgoing>Flow_1uxffv9</bpmn:outgoing>
    </bpmn:startEvent>
    <bpmn:sequenceFlow id="Flow_1uxffv9" sourceRef="StartEvent_1" targetRef="Gateway_07vpeap" />
    <bpmn:parallelGateway id="Gateway_07vpeap">
      <bpmn:incoming>Flow_1uxffv9</bpmn:incoming>
      <bpmn:outgoing>Flow_1705jbd</bpmn:outgoing>
      <bpmn:outgoing>Flow_1v6afyz</bpmn:outgoing>
    </bpmn:parallelGateway>
    <bpmn:sequenceFlow id="Flow_1705jbd" sourceRef="Gateway_07vpeap" targetRef="Activity_1djbbmd" />
    <bpmn:serviceTask id="Activity_1djbbmd" name="视频格式" camunda:delegateExpression="${videoFormatTask}">
      <bpmn:incoming>Flow_1705jbd</bpmn:incoming>
      <bpmn:outgoing>Flow_1fpwrea</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:sequenceFlow id="Flow_1v6afyz" sourceRef="Gateway_07vpeap" targetRef="Activity_1ap7i3h" />
    <bpmn:serviceTask id="Activity_1ap7i3h" name="内容审查" camunda:delegateExpression="${videoContentCheckTask}">
      <bpmn:incoming>Flow_1v6afyz</bpmn:incoming>
      <bpmn:outgoing>Flow_06q9myy</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:parallelGateway id="Gateway_0r05r0g">
      <bpmn:incoming>Flow_1fpwrea</bpmn:incoming>
      <bpmn:incoming>Flow_06q9myy</bpmn:incoming>
      <bpmn:outgoing>Flow_1q8g3uy</bpmn:outgoing>
    </bpmn:parallelGateway>
    <bpmn:sequenceFlow id="Flow_1fpwrea" sourceRef="Activity_1djbbmd" targetRef="Gateway_0r05r0g" />
    <bpmn:sequenceFlow id="Flow_06q9myy" sourceRef="Activity_1ap7i3h" targetRef="Gateway_0r05r0g" />
    <bpmn:endEvent id="Event_0cycxs7">
      <bpmn:incoming>Flow_1q8g3uy</bpmn:incoming>
    </bpmn:endEvent>
    <bpmn:sequenceFlow id="Flow_1q8g3uy" sourceRef="Gateway_0r05r0g" targetRef="Event_0cycxs7">
      <bpmn:extensionElements>
        <camunda:executionListener event="take">
          <camunda:script scriptFormat="groovy">def result="正常";
execution.setVariable("targetResult",result);</camunda:script>
        </camunda:executionListener>
      </bpmn:extensionElements>
    </bpmn:sequenceFlow>
  </bpmn:process>

</bpmn:definitions>

测试验证

在这里插入图片描述

使用关羽的账号,登陆camunda演示站点,并且发起流程

在这里插入图片描述

点击预览,可以看到流程运行轨迹

在这里插入图片描述

点击上一步的[处理单个视频]节点,可以看到多实例运行的情况。可以看到有2次运行记录。至此完成调用子流程的演示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2113323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

并查集基础与简单扩展应用

并查集 基础题目路径压缩 扩展应用扩展题目1扩展题目2 并查集的结构是一棵树 并查集有两种功能&#xff0c;一种是判断两个元素是否在同一集合&#xff0c;第二种是合并两个集合 并查集的实现需要记录每个节点的父亲节点 判断两个元素是否在同一集合&#xff0c;即判断两个元…

ARM编程模型、指令集、ARM汇编语言程序设计

一、编程模型 1.1数据和指令类型 在之后的演示当中&#xff0c;我们大多数将采用ARM指令集 1.2处理器工作模式 1.3ARM寄存器 1.3.1分类 &#xff08;1&#xff09; 31 个通用寄存器&#xff0c;包括 PC&#xff08;程序计数器&#xff09;在内&#xff0c;都是 32 位的寄存器…

实习项目|苍穹外卖|day7

缓存菜品 1.根据原型进行需求分析与设计&#xff08;接口文档&#xff09; 2.根据接口设计DTO&#xff08;redis数据类型选取&#xff09; 3.编码controller-》service-》mapper GetMapping("/list")ApiOperation("根据分类id查询菜品")public Result<…

51单片机-第十三节-直流电机驱动(PWM)

一、直流电机介绍&#xff1a; 直流电机是一种将电能转换为机械能的装置。 一般的直流电机有两个电极&#xff0c;电极正接&#xff0c;电机正转&#xff0c;电极反接&#xff0c;电机反转。 直流电机主要由永磁体&#xff08;定子&#xff09;、线圈&#xff08;转子&#…

GB35114 USC安防平台 中星微国密摄像机配置 流程

中星微国密摄像机配置介绍 如下以中星微VS-IPC8021S-Y-T4摄像机为例&#xff0c;需要先各自获取p10文件&#xff0c;并通过证书签发机构或者测试SM2证书签发获取证书。 网络配置如下: 摄像机的IP地址为192.168.1.108&#xff0c;国标ID为34020000001320000015 系统的IP地址…

Robotframework框架基础

1.Robot Framework是开源的自动化测试框架&#xff0c;基于关键字驱动的测试方法2.它提供用于创建和执行自动化测试的工具和库&#xff0c;并支持使用不同的测试库和插件进行扩展 一.以下是Robot Framework框架的基础知识 1. 安装&#xff1a;通过pip安装Robot Framework和相…

打造可视化数字大屏供应链管理平台详解:从食堂采购系统源码开始

这篇文章将深入探讨直播美颜SDK与主播美颜工具的技术原理及其发展趋势&#xff0c;帮助开发者了解如何通过技术手段实现流畅、高效的实时美颜效果。 一、什么是直播美颜SDK&#xff1f; 直播美颜SDK是一种为开发者提供实时美颜功能的集成开发工具包。它通过对摄像头捕捉到的画…

现代计算机中数字的表示与浮点数、定点数

现代计算机中数字的表示与浮点数、定点数 导读&#xff1a;浮点数运算是一个非常有技术含量的话题&#xff0c;不太容易掌握。许多程序员都不清楚使用操作符比较float/double类型的话到底出现什么问题。这篇文章讲述了浮点数的来龙去脉&#xff0c;所有的软件开发人员都应该读…

轻松搞定用户认证:微搭低代码平台打造完美登录体验01用户登录

目录 1 创建数据源2 搭建后端API3 用户登录4 最终的代码总结 欢迎阅读我们的微搭低代码全栈开发课程&#xff0c;这是我们的第二篇。在第一篇中我们整体描述了小程序的功能结构&#xff0c;这一篇我们就进入实际的开发。 在开发小程序的时候&#xff0c;第一个需要考虑的就是用…

数据结构基础讲解(一)——线性表之顺序表专项练习

本文数据结构讲解参考书目&#xff1a; 通过网盘分享的文件&#xff1a;数据结构 C语言版.pdf 链接: https://pan.baidu.com/s/159y_QTbXqpMhNCNP_Fls9g?pwdze8e 提取码: ze8e 目录 前言 一.线性表的定义 二.线性表的基本操作 三.线性表的顺序存储和表示 四.顺序表中基本操作…

如何设置好看的电脑屏保?电脑屏保设置教程

如何设置好看的电脑屏保&#xff1f;电脑屏保设置教程。大家好&#xff0c;今天小编给大家带来了好看的电脑屏保&#xff0c;教大家如何设置一个好看的电脑屏保。屏保软件很多&#xff0c;今天我们介绍一款比较有特殊的屁屏保软件&#xff1a;芝麻时钟&#xff08;芝麻时钟 桌面…

【C++二分查找】1760. 袋子里最少数目的球

本文涉及的基础知识点 C二分查找 LeetCode1760. 袋子里最少数目的球 给你一个整数数组 nums &#xff0c;其中 nums[i] 表示第 i 个袋子里球的数目。同时给你一个整数 maxOperations 。 你可以进行如下操作至多 maxOperations 次&#xff1a; 选择任意一个袋子&#xff0c;并…

AMEsim和Simulink联合仿真生成新的.mexw64液压模型文件

AMEsim和Simulink进行联合仿真非常重要的就是AMEsim经过第四阶段Simulation会在相同文件下面生成一个与AMEsim液压模型相同名字的.mexw64文件&#xff0c;在Simulink进行联合仿真的S-Function需要找的也就是这个文件&#xff0c;只不过输入的时候除了液压模型名字之外&#xff…

形态学运算合集

圆形结构元素 禹晶、肖创柏、廖庆敏《数字图像处理&#xff08;面向新工科的电工电子信息基础课程系列教材&#xff09;》 禹晶、肖创柏、廖庆敏《数字图像处理》资源二维码

Post-Training有多重要?一文带你了解全部细节

1. 简介 随着LLM学界和工业界日新月异的发展&#xff0c;不仅预训练所用的算力和数据正在疯狂内卷&#xff0c;后训练&#xff08;post-training&#xff09;的对齐和微调方法也在不断更新。InstructGPT、WebGPT等较早发布的模型使用标准RLHF方法&#xff0c;其中的数据管理风…

Git撤销add

git要提交版本第一步是add&#xff0c;就算是文件本身已经存在只是修改&#xff0c;也需要添加&#xff0c;即添加到暂存区。其中最偷懒和也保险的命令是&#xff1a; git add . 即添加了本地&#xff08;多称工作目录&#xff09;所有文件。 撤销add有以下文章&#xff1a; …

解决SRS流媒体服务服务器无法接收客户端ipv6 RTMP推流的思路

这篇短文我不介绍SRS是什么&#xff0c;主要介绍一个场景问题&#xff0c;场景是你使用服务器并且部署了SRS服务配置成一个媒体流转发服务&#xff0c;也就是客户端往SRS流媒体服务器推流&#xff0c;然后SRS把流转推出去&#xff0c;但是会涉及到一个问题是&#xff1a;用户客…

人工智能时代开启ai代写模式,让创作变得更加简单!

随着人工智能技术的飞速发展&#xff0c;我们的生活和工作方式正在发生翻天覆地的变化。在这个信息爆炸的时代&#xff0c;内容创作领域也迎来了新的变革——ai代写。这一模式的出现&#xff0c;让文章写作变得更加简单高效&#xff0c;为创作者们打开了新的可能。 一、ai代写的…

短剧影视小程序任意文件读取

1 漏洞描述&#xff1a; 任意文件读取&#xff1a; 在/Ems.php 控制器中的 juhecurl 方法存在curl_exec函数&#xff0c;且参数url为用户可控&#xff0c;导致漏洞产生 2 搜索语句&#xff1a; Fofa&#xff1a; "/VwmRIfEYDH.php" 3 漏洞复现&#xff1a; poc …

JVM - 字节码文件详解

文章目录 目录 文章目录 1. 无关性基石 2. Class类文件结构 magic- 魔数 主副版本号 常量池 访问标志 类索引,父类索引与接口索引集合 字段 方法 属性 3. 类加载机制 类的生命周期 类加载过程 加载 连接 验证 准备 解析 初始化 4. 类加载器 类与类加载器…