Activiti學習筆記二 核心API

上一篇簡單記錄了工作流的概念,以及對Activiti5進行了簡單介紹,生成了23張數據庫表。

這一篇記錄下Activiti的幾個核心API

引擎API(圖例)

一. ProcessEngine

  1. 在Activiti中最核心的類,其他的類都是由他而來。

  2. 最簡單的創建方式(Activiti流程引擎是通過acitiviti.cfg.xml文件進行配置的。注意,這不適用於使用Spring構建流程引擎的情況。)

    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  3. 使用配置文件(activiti.cfg.xml)
      <!-- 數據庫配置文件 -->
     <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
      <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
      <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activitims?useUnicode=true&amp;characterEncoding=utf8"></property>
      <property name="jdbcUsername" value="srtc"></property>
      <property name="jdbcPassword" value="srtc"></property>
      <!-- 沒有表創建表 -->
      <property name="databaseSchemaUpdate" value="true"></property>
     </bean>
     
  4.    /**
         * 功能: 使用配置文件.<br/>
         * date: 2014年12月15日 下午2:37:26 <br/>
         * 
         * @author [email protected]
         */
        @Test
        public void createTableByCfg() {
            // 流程引擎對象
            ProcessEngine processEngine = ProcessEngineConfiguration
                    .createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
            System.out.println("ProcessEngine:" + processEngine);
        }
    
    
  5. 由流程引擎創建各個Service,這些Service是用來調用工作流23張表的服務
  • 創建RepositoryService
RepositoryService repositoryService = processEngine.getRepositoryService();
  • 創建RuntimeService
RuntimeService runtimeService = processEngine.getRuntimeService();
  • 創建TaskService
TaskService taskService = processEngine.getTaskService();

6.各個Service的作用

       

RepositoryService

管理流程定義

RuntimeService

執行管理,包括啓動、推進、刪除流程實例等操作

TaskService

任務管理

HistoryService

歷史管理(執行完的數據的管理)

IdentityService

組織機構管理

FormService

一個可選服務,任務表單管理

ManagerService

 

 

二.RepositoryService

是Activiti的倉庫服務類。所謂的倉庫指流程定義文檔的兩個文件:bpmn文件和流程圖片。
  • 可以產生DeploymentBuilder,用來定義流程部署的相關參數
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
  • 刪除流程定義
repositoryService.deleteDeployment(deploymentId);
 

三.RuntimeService

       是activiti的流程執行服務類。可以從這個服務類中獲取很多關於流程執行相關的信息。

四.TaskService

       是activiti的任務服務類。可以從這個類中獲取任務的信息。

五.HistoryService

       是activiti的查詢歷史信息的類。在一個流程執行完成後,這個對象爲我們提供查詢歷史信息。

六.ProcessDefinition

      流程定義類。可以從這裏獲得資源文件等。

七.ProcessInstance

     代表流程定義的執行實例。如范冰冰請了一天的假,她就必鬚髮出一個流程實例的申請。一個流程實例包括了所有的運行節點。我們可以利用這個對象來了解當前流程實例的進度等信息。流程實例就表示一個流程從開始到結束的最大的流程分支,即一個流程中流程實例只有一個。

八.Execution

       Activiti用這個對象去描述流程執行的每一個節點。在沒有併發的情況下,Execution就是同ProcessInstance。流程按照流程定義的規則執行一次的過程,就可以表示執行對象Execution。

ProcessInstance的源代碼:

從源代碼中可以看出ProcessInstance就是Execution。但在現實意義上有所區別:

在單線流程中,如上圖的貸款流程,ProcessInstance與Execution是一致的。

這個例子有一個特點:wire money(匯錢)和archive(存檔)是併發執行的。   這個時候,總線路代表ProcessInstance,而分線路中每個活動代表Execution。

總結:

  • 一個流程中,執行對象可以存在多個,但是流程實例只能有一個。
  • 當流程按照規則只執行一次的時候,那麼流程實例就是執行對象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章