一、调用活动是在一个流程中调用另外一个独立的流程,这样能够到达流程的通用性的目的(被调用的流程能够在各处重复使用)。 express
使用callActiviti元素调用活动,属性calledElement的值定义了外部流程的流程ID,使用activiti:in标签订义输入变量。 app
<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>
使用普通的顺序流就能够把调用活动和其余元素链接起来: ide
<sequenceFlow id="flow24" sourceRef="contactSupplier" targetRef="callactivity-payment"></sequenceFlow> <sequenceFlow id="flow29" sourceRef="callactivity-payment" targetRef="confirmReceipt"></sequenceFlow>
三、调用活动的启动事件也设定了activiti:initiator="applyUserId"属性,因为它与主流程的变量是分离的,因此不能获取到当前操做人。须要在任务开始前调用identityService.setAuthenticatedUserId指定当前操做人。 oop
四、事件子流程和子流程相似,把一系列活动归结到一块儿处理,不一样的是事件子流程不能直接启动,而要被动的由其余的事件触发启动。在子流程中使用了异常结束事件并定义异常编码: 编码
<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表示此子流程只能由事件触发启动。 code
<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>