Activiti连线分支
1.画流程图(设置分支)
2.代码部分
部署流程
@Test
public void deployProcess() {
RepositoryService repositoryService = processEngine.getRepositoryService();
DeploymentBuilder builder = repositoryService.createDeployment();//创建部署对象
builder.name("分支图一");//添加部署名称
builder.addClasspathResource("sequenceFlow.bpmn");
builder.addClasspathResource("sequenceFlow.png");
Deployment deployment = builder.deploy();
System.out.println("部署ID:" + deployment.getId());
System.out.println("部署名称:" + deployment.getName());
}
开启流程
@Test
public void startProcess() {
RuntimeService runtimeService = processEngine.getRuntimeService();
//可根据id、key、message启动流程
runtimeService.startProcessInstanceByKey("sequence_flow");
// runtimeService.startProcessInstanceById("");
// runtimeService.startProcessInstanceByMessage("");
}
申请人查询任务
@Test
public void queryTask() {
TaskService taskService = processEngine.getTaskService(); //根据assignee(代理人)查询任务
String assignee = "张三";
List<Task> tasks = taskService.createTaskQuery().taskAssignee(assignee).list();
int size = tasks.size();
for (int i = 0; i < size; i++) {
Task task = tasks.get(i);
}
for (Task task : tasks) {
System.out.println("taskId:" + task.getId());
System.out.println("taskName:" + task.getName());
System.out.println("办理人:" + task.getAssignee());
System.out.println("任务创建时间:" + task.getCreateTime());
System.out.println("流程实例ID:" + task.getProcessInstanceId());
System.out.println("执行对象ID:" + task.getExecutionId());
System.out.println("流程定义ID:" + task.getProcessDefinitionId());
System.out.println("---------------------------------------------------------------------");
}
}
申请人执行任务并选择连线
@Test
public void handleTask() {
TaskService taskService = processEngine.getTaskService(); //根据上一步生成的taskId执行任务
String taskId = "47504";
Map map=new HashMap();
map.put("message","重要");//选择分支
taskService.complete(taskId,map);
// taskService.complete(taskId);
}
选择“重要“连线后,审核人就会存在任务,选择“不重要“连线后任务就会结束(这里我们选择的是”重要“)
审核人查询任务
@Test
public void queryTask() {
TaskService taskService = processEngine.getTaskService(); //根据assignee(代理人)查询任务
String assignee = "李四";
List<Task> tasks = taskService.createTaskQuery().taskAssignee(assignee).list();
int size = tasks.size();
for (int i = 0; i < size; i++) {
Task task = tasks.get(i);
}
for (Task task : tasks) {
System.out.println("taskId:" + task.getId());
System.out.println("taskName:" + task.getName());
System.out.println("办理人:" + task.getAssignee());
System.out.println("任务创建时间:" + task.getCreateTime());
System.out.println("流程实例ID:" + task.getProcessInstanceId());
System.out.println("执行对象ID:" + task.getExecutionId());
System.out.println("流程定义ID:" + task.getProcessDefinitionId());
System.out.println("---------------------------------------------------------------------");
}
}
选择”重要“线路后,审核人可以查询出任务
审核人执行任务
@Test
public void handleTask() {
TaskService taskService = processEngine.getTaskService(); //根据上一步生成的taskId执行任务
String taskId = "50003";
Map map=new HashMap();
map.put("message","重要");//选择分支
taskService.complete(taskId,map);
// taskService.complete(taskId);
}
任务结束