Activiti-簡單使用
【6】Activiti軟體環境
jdk1.6版本及以上
資料庫:h2/mysql/oracle/mssql/db2等
支持Activiti 5 運行的jar包,在activiti-5.13\wars\activiti-rest\WEB-INF\lib添加
集成開發工具Myeclipse 8.6以上
【7】Activiti架構及核心API
- activiti.cfg.xml
- ProcessEngineConfigation
- ProcessEngine
- RepositoryService
- TaskService
- IdentityService
- FormService
- RuntimeService
- ManagementService
- HistoryService
【8】使用
(1)設定流程定義圖bpmn
assignee:代理人,指定人,處理人
(2)創建流程引擎及作業流資料表
- 資料庫及表可以自動創建
可以在配置資料庫連接時,實作自動創建資料庫和表
- 取得ProcessEngine物件
先取得ProcessEngineConfigation物件,再由該物件來構建ProcessEngine
/*
*1,通過代碼新式創建
-
- 取得ProcessEngineConfigation物件
-
- 設定資料庫連接
-
- 設定創建表的策略(當沒有表時自動創建)
-
- 通過ProcessEngineConfigation物件創建ProcessEngine物件
/
- 通過ProcessEngineConfigation物件創建ProcessEngine物件
//取得流程引擎,且自動創建Activiti涉及的資料庫和表
public class TestActiviti{
public void createProcessEngine(){
ProcessEngineConfigation engineConfigation = ProcessEngineConfigation.createStandaloneProcessEngineConfiguration();
engineConfigation.setJdbcDriver(jdbcDriver);
engineConfigation.setJdbcUrl(jdbcUrl);
engineConfigation.setJdbcUsername(userName);
engineConfigation.setJdbcPassword(passWord);
//DB_SCHEMA_UPDATA_FALSE 不
//DB_SCHEMA_UPDATA_CREATE_DTOP 先洗掉,再創建
//DB_SCHEMA_UPDATA_TRUE 創建
engineConfigation.setDatabaseSchemaUpdate(DB_SCHEMA_UPDATA_TRUE);
ProcessEngine processEngine = engineConfigation.buildProcessEngine();
}
}
/*
*2,通過加載activit.cfg.xml獲取流程引擎和自動創建資料庫
*
/
public class TestActiviti{
public void createProcessEngine(){
//從類加載路徑加載資源
ProcessEngineConfigation engineConfigation=ProcessEngineConfigation.createProcessEngineConfigurationFromResource("activit.cfg.xml");
ProcessEngine processEngine = engineConfigation.buildProcessEngine();
}
}
【activit.cfg.xml】
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<!-- 配置ProcessEngineConfiguration -->
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!-- 配置資料庫連接 -->
<property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" />
<property name="jdbcDriver" value="org.h2.Driver" />
<property name="jdbcUsername" value="sa" />
<property name="jdbcPassword" value="" />
<!-- 配置創建表策略 -->
<property name="databaseSchemaUpdate" value="true" />
<property name="jobExecutorActivate" value="false" />
<property name="asyncExecutorEnabled" value="true" />
<property name="asyncExecutorActivate" value="false" />
<property name="mailServerHost" value="mail.my-corp.com" />
<property name="mailServerPort" value="5025" />
</bean>
</beans>
/*
*3,通過ProcessEngine來獲取默認的流程引擎
*
/
public class TestActiviti{
public void createProcessEngine(){
//默認加載類路徑下的activiti.cfg.xml
ProcessEngine processEngine=
ProcessEngine.getDefaultProcessEngine();
}
}
【activit.cfg.xml】
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<!-- 配置ProcessEngineConfiguration -->
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!-- 配置資料庫連接 -->
<property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" />
<property name="jdbcDriver" value="org.h2.Driver" />
<property name="jdbcUsername" value="sa" />
<property name="jdbcPassword" value="" />
<!-- 配置創建表策略 -->
<property name="databaseSchemaUpdate" value="true" />
<property name="jobExecutorActivate" value="false" />
<property name="asyncExecutorEnabled" value="true" />
<property name="asyncExecutorActivate" value="false" />
<property name="mailServerHost" value="mail.my-corp.com" />
<property name="mailServerPort" value="5025" />
</bean>
</beans>
(3)部署流程
public class TestActiviti{
public void deploy(){
//獲取流程引擎
ProcessEngine processEngine=
ProcessEngine.getDefaultProcessEngine();
//獲取倉庫服務:管理流程定義
RepositoryService repositoryService = processEngine.getRepositoryService();
Deployment deploy = repositoryService
.createDeployment() //創建一個部署的構建器
.addClasspathResource(bpmn資源路徑) //從類路徑添加資源,一次只能添加一個
.addClasspathResource(png資源路徑) //從類路徑添加資源,一次只能添加一個
.name("流程命名")
.category("") //設定部署的類別
.deploy(); //部署
}
}
【act_re_deployment 部署表】
id由act_ge_property的next_dbid絕定
【act_re_procdef 流程定義表】
該表的key屬性是bpmn的id決定
該表的name屬性是bpmn的name絕定
【act_ge_property 通用屬性表 】
id生成策略,影響部署id
【act_ru_execution 執行物件,流程實體,流程物件】
【act_ru_task 任務表】
(4)啟動流程
public class TestActiviti{
public void startProcess(){
String processDefiKey="leaveB";
//獲取流程引擎
ProcessEngine processEngine=
ProcessEngine.getDefaultProcessEngine();
//取運行時服務
RuntimeService runtimeService = processEngine.getRuntimeService();
//通過流程定義的key來執行流程,取得流程實體
ProcessInstance pi = runtimeService.startProcessInstanceByKey(processDefiKey);
System.out.println("流程實體id"+pi.getId());
System.out.println("流程定義id"+pi.getProcessDefinitionId());
}
}
(5)查詢任務
public class TestActiviti{
public void queryTask(){
//獲取流程引擎
ProcessEngine processEngine=
ProcessEngine.getDefaultProcessEngine();
//任務辦理人
String assignee="張三";
//取得任務服務
TaskService taskService = processEngine.getTaskService();
//創建任務查詢物件
TaskQuery taskQuery = taskService.createtaskquery();
//辦理人的任務串列
List<Task> list = taskQuery.taskAssinee(assignee).liat();
//遍歷任務串列
if(list!=null && list.size()>0){
for(Task task:list){
Sysyem.out.println("任務的辦理人"+task.getAssignee());
Sysyem.out.println("任務的id"+task.getId());
Sysyem.out.println("任務的名稱"+task.getName());
}
}
}
}
(6)完成任務
public class TestActiviti{
public void compileTask(){
//獲取流程引擎
ProcessEngine processEngine=
ProcessEngine.getDefaultProcessEngine();
String taskId="204";
//taskId:任務id
processEngine.getTaskService().complete(taskId);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292928.html
標籤:其他
上一篇:微信小程式原始碼:淘寶客外賣返利優惠券、頭像 壁紙 朋友圈文案查詢、古詩詞技術文章查詢
下一篇:Android adb 提示adb server version(x) doesn‘t match this client
