Activiti5工做流實戰-4

1:核心API 
1.1:ProcessEngine 
說明: 
1) 在Activiti中最核心的類,其餘的類都是由他而來。 
2) 產生方式:併發

在前面看到了兩種建立ProcessEngine(流程引擎)的方式,而這裏要簡化不少,調用ProcessEngines的getDefaultProceeEngine方法時會自動加載classpath下名爲activiti.cfg.xml文件。 
3) 能夠產生RepositoryServiceoop

4) 能夠產生RuntimeServiceui

5) 能夠產生TaskServicespa

各個Service的做用: 
RepositoryService 管理流程定義 
RuntimeService 執行管理,包括啓動、推動、刪除流程實例等操做 
TaskService 任務管理 
HistoryService 歷史管理(執行完的數據的管理) 
IdentityService 組織機構管理 
FormService 一個可選服務,任務表單管理 
ManagerServiceorm

1.2:RepositoryService 
是Activiti的倉庫服務類。所謂的倉庫指流程定義文檔的兩個文件:bpmn文件和流程圖片。 
1) 產生方式xml

2) 能夠產生DeploymentBuilder,用來定義流程部署的相關參數對象

3) 刪除流程定義圖片

1.3:RuntimeService 
是activiti的流程執行服務類。能夠從這個服務類中獲取不少關於流程執行相關的信息。 
1.4:TaskService 
是activiti的任務服務類。能夠從這個類中獲取任務的信息。 
1.5:HistoryService 
是activiti的查詢歷史信息的類。在一個流程執行完成後,這個對象爲咱們提供查詢歷史信息。 
1.6:ProcessDefinition 
流程定義類。能夠從這裏得到資源文件等。 
1.7:ProcessInstance 
表明流程定義的執行實例。如范冰冰請了一天的假,她就必須發出一個流程實例的申請。一個流程實例包括了全部的運行節點。咱們能夠利用這個對象來了解當前流程實例的進度等信息。流程實例就表示一個流程從開始到結束的最大的流程分支,即一個流程中流程實例只有一個。 
1.8:Execution 
Activiti用這個對象去描述流程執行的每個節點。在沒有併發的狀況下,Execution就是同ProcessInstance。流程按照流程定義的規則執行一次的過程,就能夠表示執行對象Execution。 
如圖爲ProcessInstance的源代碼: 
這裏寫圖片描述
從源代碼中能夠看出ProcessInstance就是Execution。但在現實意義上有所區別: 
這裏寫圖片描述 
在單線流程中,如上圖的貸款流程,ProcessInstance與Execution是一致的。 
這裏寫圖片描述 
這個例子有一個特色:wire money(匯錢)和archive(存檔)是併發執行的。 這個時候,總線路表明ProcessInstance,而分線路中每一個活動表明Execution。 
總結: 
* 一個流程中,執行對象能夠存在多個,可是流程實例只能有一個。 
* 當流程按照規則只執行一次的時候,那麼流程實例就是執行對象。element

 bpmn.xml文件的配置相關資源

<userTask id="usertask3" name="User Task" activiti:assignee="${assignee}">
       <multiInstanceLoopCharacteristics isSequential="false" activiti:collection="assigneeList" activiti:elementVariable="assignee"><loopCardinality>2</loopCardinality>
        <completionCondition>${nrOfCompletedInstances/nrOfInstances >= 0.25}</completionCondition>
      </multiInstanceLoopCharacteristics>
 </userTask>

1.activiti:candidateUsers="shareniu1,shareniu2,shareniu3,shareniu4" 這個節點能夠4我的審覈。

2.<loopCardinality>2</loopCardinality> 循環2次結束。

3.<multiInstanceLoopCharacteristics isSequential="true"> 串行並行的配置。

4.activiti:candidateUsers="shareniu1,shareniu2,shareniu3,shareniu4" 這個節點能夠4我的審覈。

5.<loopCardinality>2</loopCardinality> 循環2次結束。

6.<multiInstanceLoopCharacteristics isSequential="true"> 串行並行的配置。ture是串

 7.<completionCondition>${nrOfCompletedInstances/nrOfInstances >= 0.25}</completionCondition> 完成條件的配置。表示超過1/4人完成則經過

這裏咱們還能夠得出一個結論:

若是使用串行方式操做nrOfActiveInstances 變量始終是1,由於並行的時候纔會去+1操做。

相關文章
相關標籤/搜索