1. 程式人生 > >Activiti5工作流(一)

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外掛,開發人員可以通過外掛直接繪畫出業務流程圖。

img

四、 安裝activiti流程設計器外掛

4.1 線上安裝

開啟Eclipse -> Help -> Install New SoftWare-> Add

然後按照如下對話方塊輸入:

img

4.12 離線安裝

第一步:獲得下載activiti-eclipse外掛的安裝包

第二步:解壓安裝包,複製解壓檔案裡面的features和plugins到eclipse中的對應目錄中

第三步:重啟eclipse。

五、 初始化activiti框架資料表

5.1 下載activiti框架

5.2建立一個數據庫

img

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 屬性資料表儲存整個流程引擎級別的資料,初始化表結構時,會預設插入三條記錄