一、什麼是工作流程
工作流程(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流程設計器外掛程式
第一步:獲得下載activiti-eclipse外掛程式的安裝包
第二步:解壓安裝包,複製解壓檔案裡面的activiti到eclipse中的dropins目錄中
第三步:重啟eclipse,勾選save選項
第四步:如果重啟eclipse無法顯示activiti表徵圖,表明所使用的eclipse版本不支援該外掛程式,可以選擇換myeclipse或其他版本的eclipse 五、 初始化activiti架構資料表 5.1 下載activiti架構
Activiti架構下載地址:http://activiti.org/ 5.2建立一個資料庫
5.3使用activiti架構的自動建表功能
activiti架構提供了和hibernate類似的自動建表功能
搭建開發環境:
第一步:建立一個java項目activiti1110
第二步:匯入jar包(從下載下來的activiti-5.13工作流程引擎下面的DEMO匯入jar包),還需要匯入mysql驅動包 1、不使用設定檔(不建議)
測試代碼:
package net.csdn.activiti; import org.activiti.engine.ProcessEngine;importorg.activiti.engine.ProcessEngineConfiguration;import org.junit.Test; public class HelloWorld { /** * 使用activiti架構提供的自動建表(沒有設定檔) */ @Test public void test1(){ //建立一個流程引擎設定物件 ProcessEngineConfiguration configuration =ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration(); //配置資料來源 configuration.setJdbcDriver("com.mysql.jdbc.Driver"); configuration.setJdbcUrl("jdbc:mysql://localhost:3306/activiti_1110?useUnicode=true&characterEncoding=UTF-8"); configuration.setJdbcUsername("root"); configuration.setJdbcPassword("root"); //設定自動建表 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://localhost:3306/activiti_1110"/> <property name="jdbcUsername" value="root" /> <property name="jdbcPassword" value="root" /> <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(); }
3、使用設定檔(使用預設配置)
要求設定檔名稱必須為activiti-context.xml或者activiti.cfg.xml因為,因為預設的配置ProcessEngines.getDefaultProcessEngine();會初始化這兩個檔案的其中一個,預設的配置資訊如下:
測試代碼:
/** * 使用架構提供的自動建表(使用設定檔) */ @Test public void test3() { ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine(); }
六、瞭解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 屬性資料表格儲存體整個流程引擎層級的資料,初始化表結構時,會預設插入三條記錄