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);開發