91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Activiti進階之組任務怎么實現

發布時間:2022-08-17 16:24:47 來源:億速云 閱讀:159 作者:iii 欄目:開發技術

本篇內容主要講解“Activiti進階之組任務怎么實現”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Activiti進階之組任務怎么實現”吧!

1.組任務

1.1、需求

在流程定義中在任務結點的 assignee 固定設置任務負責人,在流程定義時將參與者固定設置在.bpmn 文件中,如果臨時任務負責人變更則需要修改流程定義,系統可擴展性差。

針對這種情況可以給任務設置多個候選人,可以從候選人中選擇參與者來完成任務。

1.2、設置任務候選人

在流程圖中任務節點的配置中設置 candidate-users(候選人),多個候選人之間用逗號分開。

Activiti進階之組任務怎么實現

查看bpmn文件

<userTask activiti:candidateUsers="lisi,wangwu" activiti:exclusive="true" id="_3" name="經理審批"/>

我們可以看到部門經理的審核人已經設置為 lisi,wangwu 這樣的一組候選人,可以使用

activiti:candiateUsers=”用戶 1,用戶 2,用戶 3”的這種方式來實現設置一組候選人

1.3、組任務

1.3.1、組任務辦理流程
  • a、查詢組任務

指定候選人,查詢該候選人當前的待辦任務。

候選人不能立即辦理任務。

  • b、拾取(claim)任務

該組任務的所有候選人都能拾取。

將候選人的組任務,變成個人任務。原來候選人就變成了該任務的負責人。

如果拾取后不想辦理該任務?

需要將已經拾取的個人任務歸還到組里邊,將個人任務變成了組任務。

  • c、查詢個人任務

查詢方式同個人任務部分,根據assignee查詢用戶負責的個人任務。

  • d、辦理個人任務

1.3.2、 查詢組任務

根據候選人查詢組任務

    /**
     * 查詢組任務
     */
    @Test
    public void test03(){
        String key = "evection1";
        String candidateUser = "lisi";
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        TaskService taskService = engine.getTaskService();
        List<Task> list = taskService.createTaskQuery()
                .processDefinitionKey(key)
                .taskCandidateUser(candidateUser)
                .list();
        for (Task task : list) {
            System.out.println("流程實例Id:" + task.getProcessInstanceId());
            System.out.println("任務ID:" + task.getId());
            System.out.println("負責人:" + task.getAssignee());
            System.out.println("任務名稱:" + task.getName());
        }
    }
1.3.3 、 拾取組任務

候選人員拾取組任務后該任務變為自己的個人任務。

    /**
     * 候選人 拾取任務
     */
    @Test
    public void test04(){
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        TaskService taskService = engine.getTaskService();
        String taskId = "72505";
        // 候選人
        String userId = "lisi";
        // 拾取任務
        Task task = taskService.createTaskQuery()
                .taskId(taskId)
                .taskCandidateUser(userId) // 根據候選人查詢
                .singleResult();
        if(task != null){
            // 可以拾取任務
            taskService.claim(taskId,userId);
            System.out.println("拾取成功");
        }
    }
1.3.4、 查詢個人待辦任務

查詢方式同個人任務查詢

    @Test
    public void test03(){
        String key = "evection1";
        String candidateUser = "lisi";
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        TaskService taskService = engine.getTaskService();
        List<Task> list = taskService.createTaskQuery()
                .processDefinitionKey(key)
                //.taskCandidateUser(candidateUser)
                //.taskCandidateOrAssigned(candidateUser)
                .taskAssignee(candidateUser)
                .list();
        for (Task task : list) {
            System.out.println("流程實例Id:" + task.getProcessInstanceId());
            System.out.println("任務ID:" + task.getId());
            System.out.println("負責人:" + task.getAssignee());
            System.out.println("任務名稱:" + task.getName());
        }
    }
1.3.5、 辦理個人任務

同個人任務辦理

    /**
     * 完成個人任務
     */
    @Test
    public void test05(){
        String  taskId = "72505";
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        TaskService taskService = engine.getTaskService();
        taskService.complete(taskId);
        System.out.println("完成任務:" + taskId);
    }
1.3.6、 歸還組任務

如果個人不想辦理該組任務,可以歸還組任務,歸還后該用戶不再是該任務的負責人

   /**
     * 歸還任務
     */
    @Test
    public void test06(){
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        TaskService taskService = engine.getTaskService();
        String taskId = "75002";
        String userId= "zhangsan";
        Task task = taskService.createTaskQuery()
                .taskId(taskId)
                .taskAssignee(userId)
                .singleResult();
        if(task != null){
            // 如果設置為null,歸還組任務,任務沒有負責人
            taskService.setAssignee(taskId,null);
        }
    }
1.3.7、 任務交接

任務負責人將任務交給其他負責人來處理

    /**
     * 任務交接
     */
    @Test
    public void test07(){
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        TaskService taskService = engine.getTaskService();
        String taskId = "75002";
        String userId= "zhangsan";
        Task task = taskService.createTaskQuery()
                .taskId(taskId)
                .taskAssignee(userId)
                .singleResult();
        if(task != null){
            // 設置該任務的新的負責人
            taskService.setAssignee(taskId,"趙六");
        }
    }
1.3.8、 數據庫表操作

查詢當前任務執行表

SELECT * FROM act_ru_task

任務執行表,記錄當前執行的任務,由于該任務當前是組任務,所有assignee為空,當拾取任務后該字段就是拾取用戶的id

查詢任務參與者

SELECT * FROM act_ru_identitylink

任務參與者,記錄當前參考任務用戶或組,當前任務如果設置了候選人,會向該表插入候選人記錄,有幾個候選就插入幾個

與act_ru_identitylink對應的還有一張歷史表act_hi_identitylink,向act_ru_identitylink插入記錄的同時也會向歷史表插入記錄。任務完成

到此,相信大家對“Activiti進階之組任務怎么實現”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汕头市| 莎车县| 岗巴县| 高清| 铜川市| 江北区| 从化市| 永安市| 仲巴县| 盘锦市| 晴隆县| 台州市| 阳信县| 周口市| 雷波县| 巴楚县| 庄河市| 阜新市| 溆浦县| 江油市| 乐业县| 长沙县| 昌乐县| 老河口市| 黄梅县| 黄石市| 宁波市| 滦南县| 军事| 德庆县| 仙居县| 乐至县| 闵行区| 陕西省| 静安区| 淮滨县| 石嘴山市| 修水县| 安岳县| 三江| 乌拉特前旗|