1、调用活动是在一个流程中调用另一个独立的流程,这样可以到达流程的通用性的目的(被调用的流程可以在各处重复使用)。
使用callActiviti元素调用活动,属性calledElement的值定义了外部流程的流程ID,使用activiti:in标签定义输入变量。
<callActivity id="callactivity-payment" name="付款" calledElement="payment">
<extensionElements>
<activiti:in source="applyUserId" target="applyUserId"></activiti:in>
<activiti:in source="listing" target="usage"></activiti:in>
<activiti:in source="amountMoney" target="amountMoney"></activiti:in>
</extensionElements>
</callActivity>
使用普通的顺序流就可以把调用活动和其他元素连接起来:
<sequenceFlow id="flow24" sourceRef="contactSupplier" targetRef="callactivity-payment"></sequenceFlow>
<sequenceFlow id="flow29" sourceRef="callactivity-payment" targetRef="confirmReceipt"></sequenceFlow>
3、调用活动的启动事件也设定了activiti:initiator="applyUserId"属性,由于它与主流程的变量是分离的,所以不能获取到当前操作人。需要在任务开始前调用identityService.setAuthenticatedUserId指定当前操作人。
4、事件子流程和子流程类似,把一系列活动归结到一起处理,不同的是事件子流程不能直接启动,而要被动的由其他的事件触发启动。在子流程中使用了异常结束事件并定义异常编码:
<endEvent id="errorendevent1" name="TerminateEndEvent">
<errorEventDefinition errorRef="PAYMENT_REJECT"></errorEventDefinition>
</endEvent>
<subProcess id="catchErrorForPayment" name="捕获付费子流程异常" triggeredByEvent="true">
<startEvent id="errorstartevent1" name="Error start">
<errorEventDefinition errorRef="PAYMENT_REJECT"></errorEventDefinition>
</startEvent>
<serviceTask id="recordErrorInfo" name="记录异常信息" activiti:expression="${execution.setVariable('ERROR_INFO', message)}"></serviceTask>
<endEvent id="endevent6" name="End"></endEvent>
<sequenceFlow id="flow29" sourceRef="recordErrorInfo" targetRef="endevent6"></sequenceFlow>
<sequenceFlow id="flow34" sourceRef="errorstartevent1" targetRef="recordErrorInfo"></sequenceFlow>
</subProcess>
在子流程中添加了triggeredByEvent属性=true表示此子流程只能由事件触发启动。
<subProcess id="subprocess1" name="员工子任务">
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="${users}" activiti:elementVariable="user"/>
<startEvent id="startevent2" name="start" activiti:initiator="subProcessStartUser"/>
<userTask id="usertask1" activiti:assignee="${user}"/>
</subProcess>
来源:oschina
链接:https://my.oschina.net/u/2453016/blog/611290