一、調用活動是在一個流程中調用另外一個獨立的流程,這樣能夠到達流程的通用性的目的(被調用的流程能夠在各處重複使用)。 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>