activiti5初識

因工做須要,接手新的項目,其中用到了activiti實現的工做流,特地去大體學習下,特此記錄下。java

 

1.acticiti5框架說明及表結構介紹mysql

Activiti5工做流引擎框架: 它其實是一個javaEE的半成品項目(企業通常用它來作二次開發).
-- dao層.
-- service層.
-- 它有數據庫表(24表). Activiti5.18,全部表都是以act開頭
-- Activiti5底層用得持久層框架是MyBatis3,
它有本身的數據庫表,提供了七個核心業務服務類.web

 

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

act_re_deployment 部署信息表
act_re_model 流程設計模型部署表
act_re_prodef

流程定義數據表sql

 

 

 

 

 

ACT_RU_* :'RU’ 表示 runtime(運行時)。運行時數據庫表。這些運行時的表,數據庫

包含流程實例、任務、變量、異步任務 等運行中的數據。api

這樣運行時表能夠一直很小數據很快。spring-mvc

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

 

 

 

 

 

 

 

 

 

ACT_ID_* :'ID' 表示 identity(身份)。組織機構表。mvc

這些表包含了身份信息,好比用戶、組 等。框架

act_id_group 用戶組信息表
act_id_info 用戶擴展信息表
 act_id_membership  用戶與用戶組對應信息表
 act_id_user  用戶信息表

 

 

 

 

 

 

 

 

ACT_HI_* :'HI' 表示 history(歷史)。歷史數據庫表。這些表包含歷史數據,

好比歷史流程實例,變量、任務 等。

act_hi_actinst 歷史節點表
act_hi_attachment 歷史附件表
act_hi_comment 歷史意見表
act_hi_identitylink 歷史流程人員表
act_hi_detail 歷史詳情表,提供歷史變量查詢
act_hi_procinst 歷史流程實例表
act_hi_tasking 歷史任務實例表
act_hi_varinst 歷史變量表

 

 

 

 

 

 

 

 

 

 

 

 

ACT_GE_* :'GE' 表示 general(廣泛的)。通用數據表。

用於不一樣場景下,如存放資源文件。

act_ge_bytearry 二進制數據表
act_ge_property

屬性數據表,
存儲整個流程引擎級別的數據,初始化表

 

 

 

 

 

 還有一個log表act_evt_log

2.下載及安裝使用

官網地址:http://www.activiti.org

下載 activiti-5.18.0.zip

解壓後:

database : (數據庫相關)存放了Activiti框架的sql語句.
docs: api文檔、用戶指南、xsd
libs: 存放了本身全部的jar.
wars: web應用.

1)安裝數據庫,生成表

執行如下腳本

-- activiti.mysql55.create.engine.sql
-- activiti.mysql55.create.history.sql
-- activiti.mysql.create.identity.sql

2)集成spring

引用maven

<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>5.18.0</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>5.18.0</version>
</dependency>
3)配置activiti.xml配置,配置jdbc,及上一步生成的庫的連接路徑,注入activiti服務接口
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd">

<!-- 加載activiti引擎 -->

<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!-- 鏈接數據的配置 -->
<property name="jdbcDriver" value="${jdbc.driverClassName}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="jdbcUsername" value="${jdbc.username}"></property>
<property name="jdbcPassword" value="${jdbc.password}"></property>
<property name="activityFontName" value="宋體"/>
<property name="labelFontName" value="宋體"/>
<property name="jdbcPingEnabled" value="true"></property>
<property name="jdbcMaxActiveConnections" value="1000"></property>
<property name="jdbcMaxIdleConnections" value="200"></property>
<property name="jdbcMaxCheckoutTime" value="20000"></property>
<property name="jdbcPingConnectionNotUsedFor" value="3600000"></property>
</bean>
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
<!-- activiti的各類服務接口 -->
<bean id="repositoryService" factory-bean="processEngine"
factory-method="getRepositoryService" />
<bean id="runtimeService" factory-bean="processEngine"
factory-method="getRuntimeService" />
<bean id="taskService" factory-bean="processEngine"
factory-method="getTaskService" />
<bean id="historyService" factory-bean="processEngine"
factory-method="getHistoryService" />
<bean id="managementService" factory-bean="processEngine"
factory-method="getManagementService" />
<bean id="IdentityService" factory-bean="processEngine"
factory-method="getIdentityService" />
<bean id="formService" factory-bean="processEngine"
factory-method="getFormService" />

</beans>
其中核心api說明以下:

ProcessEngineConfiguration.流程引擎配置信息類.
屬性的設置、構建流程引擎.

ProcessEngine: 流程引擎.
獲取七個業務處理類.

 RepositoryService倉儲服務:

act_re_*、act_ge_*

RuntimeService運行時服務
act_ru_*

TaskService任務服務
act_ru_*

FormService表單服務

IdentityService身份服務
act_id_*

 HistoryService歷史服務
act_hi_*

 ManagementService管理服務.
act_id_*、act_evt_log

3.插件安裝

idea能夠安裝actiBPM

 而後能夠建立bpm流程文件

 

 

 

 4.activiti的代碼實現

1)部署bmp流程,使得其流程保存到數據庫字段中

RepositoryService repositoryService = processEngine.getRepositoryService();     Deployment deployment = repositoryService.createDeployment()         .addClasspathResource("onboarding.bpmn20.xml").deploy();

2)開始流程,結束流程,查詢歷史流程,查詢流程節點狀態等都是調用核心api便可,具體能夠參考activiti中接口方法,參照使用。

相似以下:

/**查詢歷史任務*/List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()        .taskAssignee(request.getData().getAssignee())        .finished().processFinished()        .processDefinitionNameLike(processDefinitionName)        .orderByHistoricTaskInstanceEndTime()        .desc()        .listPage(request.getData().getFirstResult(), request.getData().getMaxResults())總而言之,activiti就是爲咱們封裝了一套流程流轉的邏輯,包括裏面實現的邏輯和節點數據的保存,而後封裝了sql的語法上封裝了本身的語言來查詢和添加數據,開始和結束流程也只是對數據的新增和修改,至於查看流程流轉流程則只是對一系列數據的查詢,大致如此了,想明白這些,也就不是什麼神祕難懂的東西了。
相關文章
相關標籤/搜索