1:流程图中任务节点的配置
2:测试代码:ide
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //部署流程定义,启动流程实例 @Test public void testTask() throws Exception { // 1 发布流程 InputStream inputStreamBpmn = this.getClass().getResourceAsStream("taskProcess.bpmn"); InputStream inputStreamPng = this.getClass().getResourceAsStream("taskProcess.png"); processEngine.getRepositoryService()// .createDeployment()// .addInputStream("userTask.bpmn", inputStreamBpmn)// .addInputStream("userTask.png", inputStreamPng)// .deploy(); // 2 启动流程 //启动流程实例的同时,设置流程变量 ProcessInstance pi = processEngine.getRuntimeService()// .startProcessInstanceByKey("taskProcess"); System.out.println("pid:" + pi.getId()); } //查询个人我的任务列表 @Test public void findMyTaskList(){ String userId = "张三丰"; List<Task> list = processEngine.getTaskService()// .createTaskQuery()// .taskAssignee(userId)//指定我的任务查询 .list(); for(Task task:list ){ System.out.println("id="+task.getId()); System.out.println("name="+task.getName()); System.out.println("assinee="+task.getAssignee()); System.out.println("createTime="+task.getCreateTime()); System.out.println("executionId="+task.getExecutionId()); } } //完成任务 @Test public void completeTask(){ String taskId = "3209"; processEngine.getTaskService()// .complete(taskId);// System.out.println("完成任务"); }
说明:
1)张三丰是我的任务的办理人
2)可是这样分配任务的办理人不够灵活,由于项目开发中任务的办理人不要放置XML文件中。测试
1:流程图中任务节点的配置
2:测试代码this
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //部署流程定义,启动流程实例 @Test public void testTask() throws Exception { // 1 发布流程 InputStream inputStreamBpmn = this.getClass().getResourceAsStream("taskProcess.bpmn"); InputStream inputStreamPng = this.getClass().getResourceAsStream("taskProcess.png"); processEngine.getRepositoryService()// .createDeployment()// .addInputStream("userTask.bpmn", inputStreamBpmn)// .addInputStream("userTask.png", inputStreamPng)// .deploy(); // 2 启动流程 //启动流程实例的同时,设置流程变量 Map<String, Object> variables = new HashMap<String, Object>(); variables.put("userID", "张翠三"); ProcessInstance pi = processEngine.getRuntimeService()// .startProcessInstanceByKey("taskProcess",variables); System.out.println("pid:" + pi.getId()); } //查询个人我的任务列表 @Test public void findMyTaskList(){ String userId = "张翠三"; List<Task> list = processEngine.getTaskService()// .createTaskQuery()// .taskAssignee(userId)//指定我的任务查询 .list(); for(Task task:list ){ System.out.println("id="+task.getId()); System.out.println("name="+task.getName()); System.out.println("assinee="+task.getAssignee()); System.out.println("createTime="+task.getCreateTime()); System.out.println("executionId="+task.getExecutionId()); } } //完成任务 @Test public void completeTask(){ String taskId = "3209"; processEngine.getTaskService()// .complete(taskId);// System.out.println("完成任务"); }
说明:
1)张翠山是我的任务的办理人
2)在开发中,能够在页面中指定下一个任务的办理人,经过流程变量设置下一个任务的办理人spa
1:流程图中任务节点的配置code
2:TaskListenerImpl类,用来设置任务的办理人blog
public class TaskListenerImpl implements TaskListener { /**指定我的任务和组任务的办理人*/ @Override public void notify(DelegateTask delegateTask) { String assignee = "张无忌"; //指定我的任务 delegateTask.setAssignee(assignee); } } 3:测试代码 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //部署流程定义,启动流程实例 @Test public void testTask() throws Exception { // 1 发布流程 InputStream inputStreamBpmn = this.getClass().getResourceAsStream("taskProcess.bpmn"); InputStream inputStreamPng = this.getClass().getResourceAsStream("taskProcess.png"); processEngine.getRepositoryService()// .createDeployment()// .addInputStream("userTask.bpmn", inputStreamBpmn)// .addInputStream("userTask.png", inputStreamPng)// .deploy(); // 2 启动流程 ProcessInstance pi = processEngine.getRuntimeService()// .startProcessInstanceByKey("taskProcess"); System.out.println("pid:" + pi.getId()); } //查询个人我的任务列表 @Test public void findMyTaskList(){ String userId = "张无忌"; List<Task> list = processEngine.getTaskService()// .createTaskQuery()// .taskAssignee(userId)//指定我的任务查询 .list(); for(Task task:list ){ System.out.println("id="+task.getId()); System.out.println("name="+task.getName()); System.out.println("assinee="+task.getAssignee()); System.out.println("createTime="+task.getCreateTime()); System.out.println("executionId="+task.getExecutionId()); } } //完成任务 @Test public void completeTask(){ String taskId = "3408"; processEngine.getTaskService()// .complete(taskId);// System.out.println("完成任务"); } //能够分配我的任务从一我的到另外一我的(认领任务) @Test public void setAssigneeTask(){ //任务ID String taskId = "3408"; //指定认领的办理者 String userId = "周芷若"; processEngine.getTaskService()// .setAssignee(taskId, userId); }
说明:
1)在类中使用delegateTask.setAssignee(assignee);的方式分配我的任务的办理人,此时张无忌是下一个任务的办理人
2)经过processEngine.getTaskService().setAssignee(taskId, userId);将我的任务从一我的分配给另外一我的,此时张无忌再也不是下一个任务的办理人,而换成了周芷若
3)在开发中,能够将每个任务的办理人规定好,例如张三的领导是李四,李四的领导是王五,这样张三提交任务,就能够查询出张三的领导是李四,经过类的方式设置下一个任务的办理人接口
我的任务及三种分配方式:
1:在taskProcess.bpmn中直接写 assignee=“张三丰”
2:在taskProcess.bpmn中写 assignee=“#{userID}”,变量的值要是String的。
使用流程变量指定办理人
3,使用TaskListener接口,要使类实现该接口,在类中定义:
delegateTask.setAssignee(assignee);// 指定我的任务的办理人图片
使用任务ID和办理人从新指定办理人:
processEngine.getTaskService()//
.setAssignee(taskId, userId);开发