Camunda Unit Test
package com.xiaobing.workflow;
import com.xiaobing.camunda.Application;
import org.camunda.bpm.engine.*;
import org.camunda.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.camunda.bpm.engine.repository.Deployment;
import org.camunda.bpm.engine.repository.DeploymentBuilder;
import org.camunda.bpm.engine.runtime.ProcessInstance;
import org.camunda.bpm.engine.task.Task;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@SpringBootTest(classes = Application.class)
public class ApplicationTest {
@Autowired
private RepositoryService repositoryservice;
@Autowired
private RuntimeService runtimeservice;
@Autowired
private TaskService taskservice;
/**
* 流程自动部署
*/
@Test
public void deployFlow(){
Deployment deployment = repositoryservice.createDeployment()
.name("ask_for_leave_main_process")
.addClasspathResource("BPMN/ask_for_leave_main_process.bpmn")
.deploy();
System.out.println("deployment.getId(): " + deployment.getId());
}
/**
* 获取流程引擎
*/
@Test
public void getEngine(){
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
//打印流程引擎相关信息
System.out.println(engine);
}
/**
* prosess engin config
*/
@Test
public void processEngineConfig(){
ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
configuration.setJdbcUrl("")
.setDatabaseType("mysql")
.setJdbcDriver("")
.setJdbcUsername("root")
.setJdbcPassword("@5252asd.")
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
.setHistory(ProcessEngineConfiguration.HISTORY_FULL);
//create the process engine object according to ProcessEngineConfiguration
ProcessEngine processEngine = configuration.buildProcessEngine();
System.out.println(processEngine);
// new object way
StandaloneProcessEngineConfiguration standaloneProcessEngineConfiguration = new StandaloneProcessEngineConfiguration();
configuration.setJdbcUrl("")
.setDatabaseType("mysql")
.setJdbcDriver("")
.setJdbcUsername("root")
.setJdbcPassword("@5252asd.")
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
.setHistory(ProcessEngineConfiguration.HISTORY_FULL);
//create the process engine object according to ProcessEngineConfiguration
ProcessEngine process_Engine = configuration.buildProcessEngine();
System.out.println(process_Engine);
}
/**
* 启动流程实例
*/
@Test
public void startFlow(){
//System.out.println(runtimeservice);
String processId = "Process_main:10:97a62c46-2fc4-11ef-9f19-085bd6ec73c2";
ProcessInstance processInstance = runtimeservice.startProcessInstanceById(processId);
//部署的流程实例的相关信息
System.out.println("processInstance.getId()="+processInstance.getId());
System.out.println("processInstance.getProcessDefinitionId()="+processInstance.getProcessDefinitionId());
}
/**
* 查询任务
* 代办任务
* 流程定义ID:每次部署流程的时候会产生一个id
* 流程实例ID:启动实例,会产生一个实例id
*/
@Test
public void queryTask(){
List<Task> list = taskservice.createTaskQuery()
//根据多个条件查询
//.processDefinitionId("XXX")
//.taskAssigned("demo")
.list();
if (list != null && list.size() > 0){
for (Task task : list){
System.out.println(task.getId());
System.out.println(task.getAssignee());
}
}
}
/**
* 任务审批完成
*
*/
public void completeTask(){
//根据用户找到关联的task
Task task = taskservice.createTaskQuery()
//.processInstanceId("XXX")
.taskAssignee("xiaobing")
.singleResult();
Map<String, Object> map = new HashMap<>();
map.put("user","demo");
if (task != null){
taskservice.complete(task.getId(),map);
System.out.println("任务审批完成");
}
}
}