(十五)Activitivi5之多用戶任務分配


一、概念

  • 我們在開發的時候,有一種情況是這樣的,

    我們有一個任務,可以讓多個用戶中的任何一個人辦理即可,比如某個審批任務,

    張三,李四,王五他們中的任何一人辦理下都行,這時候,我們用到多用戶任務分配。

  1.1  方式一:直接流程圖配置中寫死

  • 查看任務的時候需要如下
  /**
     * 查看任務
     */
    @Test
    public void findTask(){
        List<Task> taskList=processEngine.getTaskService() // 任務相關Service
            .createTaskQuery() // 創建任務查詢
            //.taskAssignee("李四") // 指定某個人
            .taskCandidateUser("張三") // 候選人查詢
            .list();
        for(Task task:taskList){
            System.out.println("任務ID:"+task.getId()); 
            System.out.println("任務名稱:"+task.getName());
            System.out.println("任務創建時間:"+task.getCreateTime());
            System.out.println("任務委派人:"+task.getAssignee());
            System.out.println("流程實例ID:"+task.getProcessInstanceId());
        }
    }
  • 啟動流程后,任務表中的ASSIGNEE_為空

  • 身份聯系表如下圖,可知在流程圖里配置的用戶 全是參與者participant,然后還有一份候選人candidate,候選人綁定任務id,參與者綁定流程實例ID,這里我們可以通過Activiti的接口來增加或者減少候選人

 

  • 我們用張三,李四,王五中的任何一人,都能查詢到任務,最后任何一人完整任務即可;

 

   1.2  方式二:使用流程變量

 

  • 啟動流程的時候設置流程變量的值,其他的和上面一樣
   /**
     * 啟動流程實例
     */
    @Test
    public void start(){
        Map<String,Object> variables=new HashMap<String,Object>();
        variables.put("userIds", "張三,李四,王五");
        ProcessInstance pi=processEngine.getRuntimeService() // 運行時Service
            .startProcessInstanceByKey("multiUserProcess2",variables); // 流程定義表的KEY字段值
        System.out.println("流程實例ID:"+pi.getId());
        System.out.println("流程定義ID:"+pi.getProcessDefinitionId()); 
    }
     

 

 

   1.3  分配方式三 TaskListener監聽實現

  •  定義一個監聽類 MyTaskListener 實現 TaskListener接口

 

public class MyTaskListener implements TaskListener{
 
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
 
    public void notify(DelegateTask delegateTask) {
        // TODO Auto-generated method stub
        delegateTask.addCandidateUser("張三");
        delegateTask.addCandidateUser("李四");
        delegateTask.addCandidateUser("王五");
    }
 
}
  • 畫流程圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM