第一節:實現Activiti6.0的第一個demo
阿新 • • 發佈:2020-06-24
一、搭建專案架構
- 使用idea需要安裝actiBPM外掛用來畫流程圖
- 建立一個空的java專案,並新增資料夾如下: lib:存放需要使用的jar包,可從下面連結直接下載解壓,記得加入將包加入專案中,如下: jar包提取碼:c0zq resource:存放資原始檔,比如bpmn流程檔案等
- 新建一個流程first.bpmn
- 新增log4j.properties檔案,配置日誌
log4j.rootLogger=INFO, stdout
# Console Appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= %d{hh:mm:ss,SSS} [%t] %-5p %c %x - %m%n
# Custom tweaks
log4j.logger.com.codahale.metrics=WARN
log4j.logger.com.ryantenney=WARN
log4j.logger.com.zaxxer=WARN
log4j.logger.org.apache=WARN
log4j.logger.org.hibernate=WARN
log4j.logger.org.hibernate.engine.internal=WARN
log4j.logger.org.hibernate.validator=WARN
log4j.logger.org.springframework=WARN
log4j.logger.org.springframework.web=WARN
log4j.logger.org.springframework.security=WARN
複製程式碼
- 引入activiti的配置檔案activiti.cfg.xml 可從官網複製:activiti.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">
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!--如果mysql是8.0,需要自己引用對應的mysql-connector-java-8.0.16.jar,並在連線上加上時區如下-->
<!--<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?serverTimezone=UTC" />-->
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti" />
<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
<property name="jdbcUsername" value="root" />
<property name="jdbcPassword" value="123456" />
<property name="databaseSchemaUpdate" value="true" />
<!--以下注釋掉-->
<!-- <property name="asyncExecutorActivate" value="false" />-->
<!-- <property name="mailServerHost" value="mail.my-corp.com" />-->
<!-- <property name="mailServerPort" value="5025" />-->
</bean>
</beans>
複製程式碼
- 建立對應的資料庫
二、編碼
- 在src對應目錄下建立類:ActivitiTest,編碼如下
package com.xjf.c3;
/*注意匯入activiti6.0的包*/
import org.activiti.engine.*;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
/**
* @Auther: XuJiaFei
* @Date: 2019/11/8 09:49
* @Description:
*/
public class ActivitiTest {
public static void main(String[] args) {
//獲取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//儲存服務
RepositoryService repositoryService = processEngine.getRepositoryService();
//執行服務
RuntimeService runtimeService = processEngine.getRuntimeService();
//任務服務
TaskService taskService = processEngine.getTaskService();
//釋出流程
repositoryService.createDeployment().addClasspathResource("first.bpmn").deploy();
//建立一個請假流程,獲取流程例項。此處的流程id為first.bpmn的process的id
ProcessInstance pi = runtimeService.startProcessInstanceByKey("myProcess_1");
//員工完成請假的任務
Task task = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult();
System.out.println("當前流程節點:" + task.getName());
taskService.complete(task.getId());
//經理完成審批任務
task = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult();
System.out.println("當前流程節點:" + task.getName());
taskService.complete(task.getId());
//流程執行完了,再去獲取任務會為null
task = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult();
System.out.println("流程執行結束了:" + task);
//關閉引擎
processEngine.close();
//退出
System.exit(0);
}
}
複製程式碼
注意:
-
runtimeService.startProcessInstanceByKey("myProcess_1")對應的key,是first.bpmn中的,在idea中將first.bpmn重新命名為first.xml,能看到對應的xml
千萬注意將process後面的 xmlns=" " 去掉,不然會啟動失敗 -
執行後資料庫會生成28張表