Activiti學習筆記一 工作流基本概念

           最近剛接觸流程引擎這一概念,對Activiti進行學習,感覺正在入門中,整理下自己的學習筆記把!

1:工作流的概念

        工作流(Workflow),就是“業務過程的部分或整體在計算機應用環境下的自動化”,它主要解決的是“使在多個參與者之間按照某種預定義的規則傳遞文檔、信息或任務的過程自動進行,從而實現某個預期的業務目標,或者促使此目標的實現”。

        工作流管理系統(Workflow Management System, WfMS)是一個軟件系統,它完成工作量的定義和管理,並按照在系統中預先定義好的工作流規則進行工作流實例的執行。工作流管理系統不是企業的業務系統,而是爲企業的業務系統的運行提供了一個軟件的支撐環境。

        工作流管理聯盟(WfMC,Workflow Management Coalition)給出的關於工作流管理系統的定義是:工作流管理系統是一個軟件系統,它通過執行經過計算的流程定義去支持一批專門設定的業務流程。工作流管理系統被用來定義、管理、和執行工作流程。

        工作流管理系統的目標:管理工作的流程以確保工作在正確的時間被期望的人員所執行——在自動化進行的業務過程中插入人工的執行和干預。

2:工作流的執行過程

        部署流程定義  開始  ---->  申請   ---->  審覈   ---->  結束

3:Activiti介紹

      Activiti5是由Alfresco軟件在2010517日發佈的業務流程管理(BPM)框架,它是覆蓋了業務流程管理、工作流、服務協作等領域的一個開源的、靈活的、易擴展的可執行流程語言框架。Activiti基於Apache許可的開源BPM平臺,創始人Tom BaeyensJBoss jBPM的項目架構師,它特色是提供了eclipse插件,開發人員可以通過插件直接繪畫出業務流程圖。

3.1 工作流引擎

      ProcessEngine對象,這是Activiti工作的核心。負責生成流程運行時的各種實例及數據、監控和管理流程的運行。

3.2 BPMN

       業務流程建模與標註(Business Process Model andNotation,BPMN) ,描述流程的基本符號,包括這些圖元如何組合成一個業務流程圖(Business Process Diagram)。

3.3 數據庫

       Activiti數據庫支持:

    Activiti的後臺是有數據庫的支持,所有的表都以ACT_開頭。第二部分是表示表的用途的兩個字母標識。用途也和服務的API對應。

       ACT_RE_* : 'RE'表示repository。這個前綴的表包含了流程定義和流程靜態資源(圖片,規則,等等)。

       ACT_RU_* : 'RU'表示runtime。這些運行時的表,包含流程實例,任務,變量,異步任務,等運行中的數據。 Activiti只在流程實例執行過程中保存這些數據,在流程結束時就會刪除這些記錄。這樣運行時表可以一直很小速度很快。

       ACT_ID_* : 'ID'表示identity。這些表包含身份信息,比如用戶,組等等。

       ACT_HI_* : 'HI'表示history。這些表包含歷史數據,比如歷史流程實例,變量,任務等等。

       ACT_GE_* : 通用數據,用於不同場景下,如存放資源文件。

3.3.1 資源庫流程資源表

  1. act_re_deployment 部署信息表
  2. act_re_model          流程設計模型部署表
  3. act_re_procdef        流程定義數據表

3.3.2 運行時數據庫表

  1. act_ru_execution     運行時流程執行實例表
  2. act_ru_identitylink    運行時流程人員表,主要存儲任務節點與參與者的相關信息
  3. act_ru_task              運行時任務節點表
  4. act_ru_variable        運行時流程變量數據表

3.3.3 歷史數據庫表

  1. act_hi_actinst           歷史節點表
  2. act_hi_attachment    歷史附件表
  3. act_hi_comment       歷史意見表
  4. act_hi_identitylink     歷史流程人員表
  5. act_hi_detail             歷史詳情表,提供歷史變量的查詢
  6. act_hi_procinst         歷史流程實例表
  7. act_hi_taskinst         歷史任務實例表
  8. act_hi_varinst           歷史變量表

3.3.4 組織機構表

  1. act_id_group             用戶組信息表
  2. act_id_info                用戶擴展信息表
  3. act_id_membership  用戶與用戶組對應信息表
  4. act_id_user               用戶信息表

基本的組織機構管理,自帶功能太簡單,實際項目中很多需求難以滿足,關於用戶認證方面建議還是自己開發一套

3.3.5 通用數據表

  1. act_ge_bytearray      二進制數據表
  2. act_ge_property        屬性數據表存儲整個流程引擎級別的數據,初始化表

4:準備環境

    4.1 Activiti5軟件環境

  1. JDK1.6或者更高版本
  2. 支持的數據庫有:h2, mysql, oracle, postgres, mssql, db2等。

  3. 支持activiti5運行的jar包

  4. 開發環境爲Eclipse4.3 其他版本也可

    4.2 安裝 Eclipse 插件 流程設計器

    步驟如下:

  1. 打開 Help -> Install New Software. 在如下面板中:

  2. 在如下Install界面板中,點擊Add按鈕

  3. 然後填入Name和Location

           Name: ActivitiBPMN 2.0 designer

           Location:http://activiti.org/designer/update/

 

     4. 回到Install界面,在面板正中列表中把所有展示出來的項目都勾上

     5.點擊複選框,在Detail部分記得選中 "Contact all updates sites.." , 因爲它會檢查所有當前安裝所需要的插件並可以被Eclipse下載.

     6. 安裝完以後,點擊新建工程new->Other…打開面板,如果看到下圖內容:

      說明安裝成功了。

     4.3  設置插件

        雖然流程引擎在單獨部署bpmn文件時會自動生成圖片,但在實際開發過程中,自動生成的圖片會導致和BPMN中的座標有出入,在實際項目中展示流程當前位置圖會有問題。

        所已完成以上配置後,會由我們自己來管理流程圖片。在發佈流程時把流程規則文件和流程圖片一起上傳就行了。

 

     4.4準備Activiti5開發環境

      4.4.1添加Activiti5 的jar包  項目時maven構建的根據需要添加吧!

 

		<!-- activiti -->
		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-spring</artifactId>
			<version>${activiti.version}</version>
		</dependency>
		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-engine</artifactId>
			<version>${activiti.version}</version>
		</dependency>
		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-bpmn-model</artifactId>
			<version>${activiti.version}</version>
		</dependency>
		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-bpmn-converter</artifactId>
			<version>${activiti.version}</version>
		</dependency>
		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-process-validation</artifactId>
			<version>${activiti.version}</version>
		</dependency>
		<dependency>
			<groupId>joda-time</groupId>
			<artifactId>joda-time</artifactId>
			<version>2.5</version>
		</dependency>


   4.4.2 初始化數據庫

/**
 * Copyright (c) 2014, www.wisdombud.com
 * All Rights Reserved.
 */
package junit;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.junit.Test;

/**
 * 功能: TODO.<br/>
 * date: 2014年12月2日 上午11:02:01 <br/>
 * 
 * @author [email protected]
 * @version
 * @since JDK 1.7
 */
public class ActivitiTest {

    @Test
    public void createTable() {
        ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration
                .createStandaloneProcessEngineConfiguration();
        processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");
        processEngineConfiguration
                .setJdbcUrl("jdbc:mysql://localhost:3306/activitims?useUnicode=true&characterEncoding=utf8");
        processEngineConfiguration.setJdbcUsername("srtc");
        processEngineConfiguration.setJdbcPassword("srtc");
        processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
        // 流程引擎對象
        ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
        System.out.println("ProcessEngine:" + processEngine);
    }
}


在Activiti中,在創建核心的流程引擎對象時會自動建表。如果程序正常執行,mysql會自動建庫,然後創建23張表。

 


 

 

 

 

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