1.建表
/*
* 生成activiti所需的25張表
*/
@Test
public void testCreateTable(){
ProcessEngineConfiguration pec = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();
pec.setJdbcDriver("com.mysql.jdbc.Driver");
pec.setJdbcUrl("jdbc:mysql://localhost:3306/activitiTest?useUnicode=true&characterEncoding=utf8&serverTimeZone=GMT%2b8");
pec.setJdbcUsername("root");
pec.setJdbcPassword("111111");
/*
* 配置模式true 自動建立和更新表
*/
pec.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
ProcessEngine pe = pec.buildProcessEngine();
}
/*
* 使用配置檔案生成activiti所需的25張表
*/
@Test
public void testCfgCreateTable(){
ProcessEngineConfiguration pec = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
ProcessEngine pe = pec.buildProcessEngine();
}
其中activiti.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activitiTest?useUnicode=true"/>
<property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUsername" value="root"/>
<property name="jdbcPassword" value="111111"/>
</bean>
</beans>
2.已有bpmn,流程啟動
package com.tongyao.activiti.flow;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.jupiter.api.Test;
import java.util.List;
public class HelloWorldProcess {
/*
*擷取預設流程引擎執行個體,會自動調用activiti.cfg.xml
*/
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/*部署*/
@Test
public void deploy(){
Deployment deployment = processEngine.getRepositoryService()//擷取部署相關service
.createDeployment()//建立部署
.addClasspathResource("diagrams/HelloWorld.bpmn")//加載資源檔案
.deploy();//部署
System.out.println("流程部署id="+deployment.getId());
System.out.println("流程部署name="+deployment.getName());
}
/*啟動流程執行個體*/
@Test
public void start(){
ProcessInstance pi = processEngine.getRuntimeService()//擷取運作service
.startProcessInstanceByKey("myFirstProcess");//流程定義表procedef的key值
System.out.println("流程執行個體ID:"+pi.getId());
System.out.println("流程定義ID:"+pi.getProcessDefinitionId());
}
/*檢視任務*/
@Test
public void findTask(){
List<Task> taskList = processEngine.getTaskService()//擷取任務service
.createTaskQuery()//建立任務查詢
.taskAssignee("peimx")//指定某人
.list();
for(Task task:taskList){
System.out.println("任務ID:"+task.getId());
System.out.println("任務Name:"+task.getName());
System.out.println("任務建立時間:"+task.getCreateTime());
System.out.println("任務委派人:"+task.getAssignee());
System.out.println("流程執行個體ID:"+task.getProcessInstanceId());
}
}
/*完成任務*/
@Test
public void completeTask(){
processEngine.getTaskService()//擷取任務service
.complete("2504");
}
}