1:test/java/hello/InitDBTest.java 初始化数据库
使用ProcessEngineConfiguration方式
使用activiti.cfg.xml方式
2:创建一个工作流文件,需要生成png图片
图片生成:Window->Preferences->Activiti->Save Actions->第一行勾中即可生成png图片=============代码
3:发布流程
Deployment deployment = processEngine.getRepositoryService()
.createDeployment().name("流程名称")
.addClasspathResource("diagrams/LeaveProcess.bpmn") //bpmn文件的路径classpath
.addClasspathResource("diagrams/LeaveProcess.png") //图片路径 .deploy(); //Id生成流程ID
System.out.println(deployment.getId()+" -- "+deployment.getName());
4:创建流程实例并运行流程
ProcessInstance process = processEngine.getRuntimeService().startProcessInstanceByKey("leaveProcess"); //key为流程设置的ID 点击流程文件空白处,查看Properties试图,第一个Tab中的ID属性值
//ProcessId为当前流程的唯一标示,流程实例的主线,在该流程实例运行过程中会根据具体的任务产生中间运行的多个任务节点
System.out.println("pid:" + process.getId() +",activitiId:" + process.getActivityId());
5:进入下一个节点,直到当前流程结束
String taskId = "302"; //任务ID,数据库中查看
//获得流程引擎对象
processEngine.getTaskService().complete(taskId); //进入下一个节点
如果流程中包含排他网关或者并行网关
/**
* 排他网关根据条件执行到下一个节点
* 执行到下一个任务节点
*/
public void next_1_Task(){
String taskId = "1504"; //当前流程实例的运行的当前任务ID
TaskService taskService = processEngine.getTaskService();
//设置下一个任务的处理人
taskService.setAssignee(taskId, "财务美");
//设置参数信息
Map<String, Object> variables = new HashMap<String, Object>(); variables.put("money", 200);
//进入下一个节点
taskService.complete(taskId, variables);
}