Activiti5工作流(一)
一、什麼是工作流
工作流(Workflow),就是“業務過程的部分或整體在計算機應用環境下的自動化”,它主要解決的是“使在多個參與者之間按照某種預定義的規則傳遞文件、資訊或任務的過程自動進行,從而實現某個預期的業務目標,或者促使此目標的實現”。
工作流管理系統(Workflow Management System,WfMS)是一個軟體系統,它完成工作量的定義和管理,並按照在系統中預先定義好的工作流邏輯進行工作流例項的執行。工作流管理系統不是企業的業務系統,而是為企業的業務系統的執行提供了一個軟體的支撐環境。
二、 常見的工作流框架
流行的工作流框架有:Activity5.13、JBPM4.4、OSWorkFlow、WorkFlow
工作流框架底層需要有資料庫提供支援,activiti5.13版本,有23張表。
JBPM4.4框架底層有資料庫支援,18張表。
JBPM底層使用hibernate操作資料庫。
Activiti框架底層使用的mybatis操作資料庫。
三、 Activiti5介紹
Activiti5是由Alfresco軟體在2010年5月17日釋出的業務流程管理(BPM)框架,它是覆蓋了業務流程管理、工作流、服務協作等領域的一個開源的、靈活的、易擴充套件的可執行流程語言框架。Activiti基於Apache許可的開源BPM平臺,創始人Tom Baeyens是JBoss jBPM的專案架構師,它特色是提供了eclipse外掛,開發人員可以通過外掛直接繪畫出業務流程圖。
四、 安裝activiti流程設計器外掛
4.1 線上安裝
開啟Eclipse -> Help -> Install New SoftWare-> Add
然後按照如下對話方塊輸入:
4.12 離線安裝
第一步:獲得下載activiti-eclipse外掛的安裝包
第二步:解壓安裝包,複製解壓檔案裡面的features和plugins到eclipse中的對應目錄中
第三步:重啟eclipse。
五、 初始化activiti框架資料表
5.1 下載activiti框架
5.2建立一個數據庫
5.3使用activiti框架的自動建表功能
搭建開發環境:
第一步:建立一個Java專案activiti
第二步:匯入jar包,還需要匯入MySQL驅動包
1、不使用配置檔案(不建議)
package net.csdn.activiti; import org.activiti.engine.ProcessEngine; importorg.activiti.engine.ProcessEngineConfiguration; import org.junit.Test; public class HelloActiviti { @Test public void test1() { // 建立一個流程引擎配置物件 ProcessEngineConfiguration configuration = ProcessEngineConfiguration .createStandaloneProcessEngineConfiguration(); // 配置資料來源 configuration.setJdbcDriver("com.mysql.jdbc.Driver"); configuration .setJdbcUrl("jdbc:mysql://192.168.10.129:3306/activity?useUnicode=true&characterEncoding=UTF-8"); configuration.setJdbcUsername("yundai365"); configuration.setJdbcPassword("yundai365@#"); // 設定自動建表 configuration.setDatabaseSchemaUpdate("true"); // 建立一個流程引擎物件,在建立流程引擎物件過程中會自動建立表 ProcessEngine processEngine = configuration.buildProcessEngine(); } }
2、使用配置檔案activiti-context.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <!-- 配置流程引擎配置物件 --> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="jdbcDriver" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql://192.168.10.129:3306/activiti_1" /> <property name="jdbcUsername" value="yundai365" /> <property name="jdbcPassword" value="yundai365@#" /> <property name="databaseSchemaUpdate" value="true" /> </bean> </beans>
/** * 使用框架提供的自動建表(提供配置檔案)---配置檔案activiti-context.xml可以從框架提供的例子程式中獲取 */ @Test public void test2() { String resource = "activiti-context.xml";// 配置檔名稱 String beanName = "processEngineConfiguration";// 配置id值 ProcessEngineConfiguration conf = ProcessEngineConfiguration .createProcessEngineConfigurationFromResource(resource, beanName); ProcessEngine processEngine = conf.buildProcessEngine(); }
六、瞭解23張表
Activiti的後臺是有資料庫的支援,所有的表都以ACT_開頭。 第二部分是表示表的用途的兩個字母標識。用途也和服務的API對應。
1) ACT_RE_*: 'RE'表示repository。 這個字首的表包含了流程定義和流程靜態資源(圖片,規則,等等)。
2) ACT_RU_*: 'RU'表示runtime。 這些執行時的表,包含流程例項,任務,變數,非同步任務,等執行中的資料。 Activiti只在流程例項執行過程中儲存這些資料,在流程結束時就會刪除這些記錄。 這樣執行時表可以一直很小速度很快。
3) ACT_ID_*: 'ID'表示identity。 這些表包含身份資訊,比如使用者,組等等。
4) ACT_HI_*: 'HI'表示history。 這些表包含歷史資料,比如歷史流程例項,變數,任務等等。
5) ACT_GE_*: 通用資料, 用於不同場景下。
資源庫流程規則表
1) act_re_deployment 部署資訊表
2) act_re_model 流程設計模型部署表
3) act_re_procdef 流程定義資料表
執行時資料庫表
1) act_ru_execution 執行時流程執行例項表
2) act_ru_identitylink 執行時流程人員表,主要儲存任務節點與參與者的相關資訊
3) act_ru_task 執行時任務節點表
4) act_ru_variable 執行時流程變數資料表
歷史資料庫表
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 歷史變量表
組織機構表
1) act_id_group 使用者組資訊表
2) act_id_info 使用者擴充套件資訊表
3) act_id_membership 使用者與使用者組對應資訊表
4) act_id_user 使用者資訊表
這四張表很常見,基本的組織機構管理,關於使用者認證方面建議還是自己開發一套,元件自帶的功能太簡單,使用中有很多需求難以滿足
通用資料表
1) act_ge_bytearray 二進位制資料表
2) act_ge_property 屬性資料表儲存整個流程引擎級別的資料,初始化表結構時,會預設插入三條記錄