SpringBoot+Acyiviti

1.IDEA畫BPMN圖後轉成XML,文字亂碼修改文字生成PNG圖片,XML改回BPMN格式,進行部署java

public void deploy() {
repositoryService.createDeployment().name("myProcess_1").addClasspathResource("processes/activiti_1.bpmn").deploy();
}
 報錯:Activiti MalformedByteSequenceException: 3 字節的 UTF-8 序列的字節 3 無效。
 解決:將BPMN複製出來用notepad++轉碼UTF-8保存放回。mysql

2.發起流程:spring

public void startProcess(){
String processDefiKey="myProcess_1";//bpmn 的 process標籤的id屬性
processEngine.getIdentityService().setAuthenticatedUserId("initiator_1");
ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefiKey);sql

System.out.println("流程實例的id:"+pi.getProcessInstanceId());//ProcessInstance 對象
System.out.println("流程定義的id:"+pi.getProcessDefinitionId());//默認執行的是最新版本的流程定義
}
報錯: Error creating bean with name 'org.activiti.spring.boot.SecurityAutoConfiguration': Initialization of bean failed; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
解決:SpringBoot啓動類加上@SpringBootApplication(exclude = SecurityAutoConfiguration.class) ,activiti-spring-boot-starter-basic.jar包含spring-boot-starter-security數據庫

3.查詢正在運行的任務mybatis

public void queryTask(){
//任務的辦理人
String assignee="長頸鹿";
//建立一個任務查詢對象
TaskQuery taskQuery = processEngine.getTaskService().createTaskQuery();
List<Task> list = taskQuery.taskAssignee(assignee).list();
//遍歷任務列表
if(list!=null&&list.size()>0){
for(Task task:list){
System.out.println("任務的辦理人:"+task.getAssignee());
System.out.println("任務的id:"+task.getId());
System.out.println("任務的名稱:"+task.getName());
}
}
}
4.完成任務app

public void compileTask(){
String taskId="2506";//act_ru_task表id列
processEngine.getTaskService().complete(taskId);
}ide

5.歷史流程查詢
//歷史流程實例
public void queryHistoryProcInst(){
List<HistoricProcessInstance> list = processEngine.getHistoryService()
.createHistoricProcessInstanceQuery().processInstanceId("2501").list();
if(list!=null&&list.size()>0){
for(HistoricProcessInstance temp:list){
System.out.println("歷史流程實例id:"+temp.getId());
System.out.println("歷史流程定義的id:"+temp.getProcessDefinitionId());
System.out.println("歷史流程實例開始時間--結束時間:"+temp.getStartTime()+"-->"+temp.getEndTime());
}
}
}
//歷史任務實例
public void queryHistoryProcInst(){
String processInstanceId="2501";
List<HistoricTaskInstance> list = processEngine.getHistoryService()
.createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).list();
if(list!=null&&list.size()>0){
for(HistoricTaskInstance temp:list){
System.out.print("歷史流程實例任務id:"+temp.getId());
System.out.print("歷史流程定義的id:"+temp.getProcessDefinitionId());
System.out.print("歷史流程實例任務名稱:"+temp.getName());
System.out.println("歷史流程實例任務處理人:"+temp.getAssignee());
}
}
}spring-boot

6.刪除流程
public void deleteProcessDefi(){
String deploymentId="faefcc49-c3bf-11e9-ad7f-7c2a31635b29";
processEngine.getRepositoryService().deleteDeployment(deploymentId);
}url

依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>

<dependencies>
<!-- https://mvnrepository.com/artifact/org.activiti/activiti-spring-boot-starter-basic -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

配置
spring:
jpa:
hibernate:
ddl-auto: update
database: MYSQL
show-sql: true
datasource:
url: jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8
username: ***
password: ***
driver-class-name: com.mysql.cj.jdbc.Driver
activiti:
check-process-definitions: false

mybatis:
typeAliasesPackage: demo.entity
mapperLocations: classpath:mappers/*.xml

表功能解釋

日誌表:
1. act_evt_log                        存儲事件處理日誌,方便管理員跟蹤處理。
通用數據表
2. act_ge_bytearray               二進制數據表,一些文件存在這個表。
3. act_ge_property                屬性數據表存儲整個流程引擎級別的數據,初始化表結構時,會默認插入三條記錄
歷史數據表
4. act_hi_actinst                    歷史節點表
5. act_hi_attachment             歷史附件表
6. act_hi_comment                歷史意見表
7. act_hi_detail                      歷史詳情表,提供歷史變量的查詢
8. act_hi_identitylink              歷史流程人員表
9. act_hi_procinst                  歷史流程實例表
10.act_hi_taskinst                 歷史任務實例表
11.act_hi_varinst                   歷史變量表
用戶組織表
12.act_id_group                    用戶組信息表
13.act_id_info                       用戶擴展信息表
14.act_id_membership         用戶與用戶組對應信息表
15.act_id_user                      用戶信息表
資源流程規則表
16.act_procdef_info              流程定義信息
17.act_re_deployment          部署信息表
18.act_re_model                   流程設計模型部署表
19.act_re_procdef                 流程定義數據表  
運行時數據庫表
20.act_ru_event_subscr       監聽表
21.act_ru_execution             運行時流程執行實例表
22.act_ru_identitylink           運行時流程人員表,主要存儲任務節點與參與者的相關信息
23.act_ru_job                       運行時定時任務數據表
24.act_ru_task                     運行時任務節點表
25.act_ru_variable               運行時流程變量數據表

BPMN流程圖相關:1.候選人/候選組(candidate):能夠執行任務的一類人或者多個組,候選人/候選組中均可以去簽收任務,一旦某人簽收,就成爲受理人,其餘人就不能再簽收受理此任務;usertask流程圖中,candidate標示候選;候選人涉及的表ACT_RU_IDENTITYLINK;2.受理人(assignee):有兩種狀況,一種是候選人/組中有人簽收任務後成爲受理人,另一種是流程圖中直接指定受理人,可是能夠指定一個動態受理人;受理人涉及的表ACT_RU_TASK;3.持有人(owner):持有人設置主要是存入歷史表中,用於歷史任務的查詢,涉及的表ACT_HI_TASKINST

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息