activiti5/6 系列之--流程复用技术 callActivity
Posted zhjh256
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了activiti5/6 系列之--流程复用技术 callActivity相关的知识,希望对你有一定的参考价值。
定义:当流程执行到callActivity,会创建一个新分支,它是到达调用节点的流程的分支。 这个分支会用来执行子流程,默认创建并行子流程,就像一个普通的流程。 上级流程会等待子流程完成,然后才会继续向下执行。
XML:
<callActivity id="callCheckCreditProcess" name="Check credit" calledElement="checkCreditProcess" />
注意,子流程的流程定义是在执行阶段解析的
传递变量
可以把流程变量传递给子流程,反之亦然。数据会复制给子流程,当它启动的时候, 并在它结束的时候复制回主流程。
<callActivity id="callSubProcess" calledElement="checkCreditProcess" > <extensionElements> <activiti:in source="someVariableInMainProcess" target="nameOfVariableInSubProcess" /> <activiti:out source="someVariableInSubProcss" target="nameOfVariableInMainProcess" /> </extensionElements> </callActivity>
实例
下面的流程图演示了简单订单处理。先判断客户端信用,这可能与很多其他流程相同。 检查信用阶段这里设计成调用节点。
流程看起来像下面这样:
<startEvent id="theStart" /> <sequenceFlow id="flow1" sourceRef="theStart" targetRef="receiveOrder" /> <manualTask id="receiveOrder" name="Receive Order" /> <sequenceFlow id="flow2" sourceRef="receiveOrder" targetRef="callCheckCreditProcess" /> <callActivity id="callCheckCreditProcess" name="Check credit" calledElement="checkCreditProcess" /> <!-- 下面这个子流程的id,见下文 --> <sequenceFlow id="flow3" sourceRef="callCheckCreditProcess" targetRef="prepareAndShipTask" /> <userTask id="prepareAndShipTask" name="Prepare and Ship" /> <sequenceFlow id="flow4" sourceRef="prepareAndShipTask" targetRef="end" /> <endEvent id="end" />
子流程看起来像下面这样:
<bpmn2:process id="checkCreditProcess" tns:packageName="net.hs.cw.bpme.ta" name="InputNav" isExecutable="true" processType="Private"> <bpmn2:startEvent id="StartEvent_1" name="StartProcess"> <bpmn2:extensionElements> <tns:metaData name="elementname"> <tns:metaValue><![CDATA[StartProcess]]></tns:metaValue> </tns:metaData> </bpmn2:extensionElements> <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> </bpmn2:startEvent>
子流程的流程定义没有什么特别的。 它也可以单独使用,不用其他流程调用。
以上是关于activiti5/6 系列之--流程复用技术 callActivity的主要内容,如果未能解决你的问题,请参考以下文章
FFmpeg使用 FFmpeg 处理音视频格式转换流程 ( 解复用 | 解码 | 帧处理 | 编码 | 复用 )