目录
- 定义
- 图形标记
- XML内容
- 界面操作
- 使用示例
- 子流程设计
- 子流程的XML内容
- 主流程设计
- 主流程的XML内容
- 视频教程
定义
调用活动是在一个流程定义中调用另一个独立的流程定义,通常可以定义一些通用的流程作为
这种调用子流程,供其他多个流程定义复用。这种子流程使用 callActivity 元素来进行调用,很方
便地嵌入到主流程中,用起来比较方便。
图形标记
调用活动显示为标准的节点,它是一个圆角矩形,不过是粗边框,如图所示。
XML内容
调用活动的 XML 定义如下:
<callActivity id="Activity_1q7t28e" name="贷款额度审批" calledElement="ApproveLoanSubProcess" flowable:inheritVariables="true" flowable:processInstanceName="贷款额度审批" flowable:calledElementType="key">
<extensionElements>
<flowable:assigneeType>static</flowable:assigneeType>
<flowable:formData />
<flowable:modelBpmnExtension>[{"id":"8c7aefbf087f4d680fc36b871d77c967","modelId":"1252465dd6e511eda69100ff2cb2ed0e","modelKey":"ApproveLoanSubProcess","name":"贷款额度审批","appSn":"businessFlow","appName":"财务流程","categoryCode":"zshjt","categoryName":"中石化集团","status":3,"statusName":"已发布"}]</flowable:modelBpmnExtension>
</extensionElements>
</callActivity>
调用活动是一个普通活动,需要通过 calledElement 属性引用被调用的外部流程定义的 key。调
用活动可以向子流程传递与接收流程变量:①使用 flowable:in 标签定义父流程变量传入到子流程流
程变量的映射,在子流程启动时复制到子流程;②使用用 flowable:out 标签定义子流程变量回传到父
流程变量的映射,在其结束时复制回主流程。调用活动的拓展属性如表所示:
属性名称 | 属性说明 | 示例 |
calledElement | 被调用流程的 key,对应的流程定义应独立存在 |
|
businessKey | 子流程的 businessKey,可以使用表达式 |
|
inheritBusinessKey | 值为 true 时子流程复用父流程的 businessKey,该属性在businessKey 属性没有配置时才生效 |
|
inheritVariables | 值为 true 时将父流程所有流程变量传递给子流程 |
|
flowable:in | 将父流程的流程变量传入子流程(父流程变量必须事先定义,否则将不能获取) |
|
flowable:out | 调用活动执行完成后的结果 |
|
由于主子流程是不同的实例,因此无法通过主流程的 key 查询子流程的任务,在查询子任务时需要使用子流程的 key 来进行查询。
界面操作
使用示例
子流程设计
子流程如图所示,子流程发起后首先进入“审批贷款额度”用户任务节点,审批完成后
由分支网关进行分支决策:贷款额度小于 100w 流程直接结束;贷款额度大于 100w 进入“复核贷
款额度”用户任务节点,审批完成后流程结束。
子流程的XML内容
<process id="ApproveLoanSubProcess" name="子流程-调用活动-审批贷款子流程" isExecutable="true">
<startEvent id="ab7ef4cb0c5e6455ab4406613fb6b198f" />
<userTask id="a43f40e7a7d60446585661ed8b2232732" name="审批贷款额度">
<extensionElements>
<flowable:formData />
<flowable:assigneeType>static</flowable:assigneeType>
</extensionElements>
</userTask>
<sequenceFlow id="a75d9acf085184bc5b49fcbb29a7768e9" sourceRef="ab7ef4cb0c5e6455ab4406613fb6b198f" targetRef="a43f40e7a7d60446585661ed8b2232732" />
<exclusiveGateway id="Gateway_09287wv" default="Flow_0nh3xov" />
<sequenceFlow id="Flow_1yaqka8" sourceRef="a43f40e7a7d60446585661ed8b2232732" targetRef="Gateway_09287wv" />
<userTask id="Activity_1pxhie8" name="复核贷款额度">
<extensionElements>
<flowable:formData />
<flowable:assigneeType>static</flowable:assigneeType>
</extensionElements>
</userTask>
<sequenceFlow id="Flow_0nh3xov" name="额度">>100万元" sourceRef="Gateway_09287wv" targetRef="Activity_1pxhie8" />
<endEvent id="Event_1cgk4gr" />
<sequenceFlow id="Flow_1wdrb0h" name="额度<=100万元" sourceRef="Gateway_09287wv" targetRef="Event_1cgk4gr">
<conditionExpression xsi:type="tFormalExpression">${loanAmount<=1000000}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="Flow_1c8sxxy" sourceRef="Activity_1pxhie8" targetRef="Event_1cgk4gr" />
</process>
主流程设计
主流程如图所示,主流程发起后进入“贷款申请”用户任务节点,提交后进入“贷款额
度审批”调用活动节点,父流程进入等待状态,启动并执行上述子流程,子流程结束后父流程继续
执行,进入“发放贷款”用户任务节点,办理完成后流程结束。
主流程的XML内容
<process id="CallActivitySubprocessTest" name="子流程-调用活动" isExecutable="true">
<startEvent id="a3d0c6c7163c5499cb41510c83ba21645" />
<userTask id="a8c6f47b1424b4115ba9f66434f10529e" name="贷款申请">
<extensionElements>
<flowable:formData />
<flowable:assigneeType>static</flowable:assigneeType>
</extensionElements>
</userTask>
<sequenceFlow id="a9b2a0637bfa449e29959c2b21d476125" sourceRef="a3d0c6c7163c5499cb41510c83ba21645" targetRef="a8c6f47b1424b4115ba9f66434f10529e" />
<sequenceFlow id="Flow_14yhbzw" sourceRef="a8c6f47b1424b4115ba9f66434f10529e" targetRef="Activity_1q7t28e" />
<callActivity id="Activity_1q7t28e" name="贷款额度审批" calledElement="ApproveLoanSubProcess" flowable:inheritVariables="true" flowable:processInstanceName="贷款额度审批" flowable:calledElementType="key">
<extensionElements>
<flowable:assigneeType>static</flowable:assigneeType>
<flowable:formData />
<flowable:modelBpmnExtension>[{"id":"8c7aefbf087f4d680fc36b871d77c967","modelId":"1252465dd6e511eda69100ff2cb2ed0e","modelKey":"ApproveLoanSubProcess","name":"贷款额度审批","appSn":"businessFlow","appName":"财务流程","categoryCode":"zshjt","categoryName":"中石化集团","status":3,"statusName":"已发布"}]</flowable:modelBpmnExtension>
</extensionElements>
</callActivity>
<endEvent id="Event_16u42q4" />
<userTask id="Activity_0olujzk" name="发放贷款">
<extensionElements>
<flowable:formData />
<flowable:assigneeType>static</flowable:assigneeType>
</extensionElements>
</userTask>
<sequenceFlow id="Flow_1dqsl2g" sourceRef="Activity_1q7t28e" targetRef="Activity_0olujzk" />
<sequenceFlow id="Flow_0n0kqrn" sourceRef="Activity_0olujzk" targetRef="Event_16u42q4" />
</process>
视频教程