最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Activiti進(jìn)階之組任務(wù)實現(xiàn)示例詳解

 更新時間:2022年08月17日 14:52:03   作者:請叫我黃同學(xué)  
這篇文章主要為大家介紹了Activiti進(jìn)階之組任務(wù)實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1.組任務(wù)

1.1、需求

在流程定義中在任務(wù)結(jié)點的 assignee 固定設(shè)置任務(wù)負(fù)責(zé)人,在流程定義時將參與者固定設(shè)置在.bpmn 文件中,如果臨時任務(wù)負(fù)責(zé)人變更則需要修改流程定義,系統(tǒng)可擴(kuò)展性差。

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

1.2、設(shè)置任務(wù)候選人

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

查看bpmn文件

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

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

activiti:candiateUsers=”用戶 1,用戶 2,用戶 3”的這種方式來實現(xiàn)設(shè)置一組候選人

1.3、組任務(wù)

1.3.1、組任務(wù)辦理流程

  • a、查詢組任務(wù)

指定候選人,查詢該候選人當(dāng)前的待辦任務(wù)。

候選人不能立即辦理任務(wù)。

  • b、拾取(claim)任務(wù)

該組任務(wù)的所有候選人都能拾取。

將候選人的組任務(wù),變成個人任務(wù)。原來候選人就變成了該任務(wù)的負(fù)責(zé)人。

如果拾取后不想辦理該任務(wù)?

需要將已經(jīng)拾取的個人任務(wù)歸還到組里邊,將個人任務(wù)變成了組任務(wù)。

  • c、查詢個人任務(wù)

查詢方式同個人任務(wù)部分,根據(jù)assignee查詢用戶負(fù)責(zé)的個人任務(wù)。

  • d、辦理個人任務(wù)

1.3.2、 查詢組任務(wù)

根據(jù)候選人查詢組任務(wù)

    /**
     * 查詢組任務(wù)
     */
    @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("任務(wù)ID:" + task.getId());
            System.out.println("負(fù)責(zé)人:" + task.getAssignee());
            System.out.println("任務(wù)名稱:" + task.getName());
        }
    }

1.3.3 、 拾取組任務(wù)

候選人員拾取組任務(wù)后該任務(wù)變?yōu)樽约旱膫€人任務(wù)。

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

1.3.4、 查詢個人待辦任務(wù)

查詢方式同個人任務(wù)查詢

    @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("任務(wù)ID:" + task.getId());
            System.out.println("負(fù)責(zé)人:" + task.getAssignee());
            System.out.println("任務(wù)名稱:" + task.getName());
        }
    }

1.3.5、 辦理個人任務(wù)

同個人任務(wù)辦理

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

1.3.6、 歸還組任務(wù)

如果個人不想辦理該組任務(wù),可以歸還組任務(wù),歸還后該用戶不再是該任務(wù)的負(fù)責(zé)人

   /**
     * 歸還任務(wù)
     */
    @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){
            // 如果設(shè)置為null,歸還組任務(wù),任務(wù)沒有負(fù)責(zé)人
            taskService.setAssignee(taskId,null);
        }
    }

1.3.7、 任務(wù)交接

任務(wù)負(fù)責(zé)人將任務(wù)交給其他負(fù)責(zé)人來處理

    /**
     * 任務(wù)交接
     */
    @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){
            // 設(shè)置該任務(wù)的新的負(fù)責(zé)人
            taskService.setAssignee(taskId,"趙六");
        }
    }

1.3.8、 數(shù)據(jù)庫表操作

查詢當(dāng)前任務(wù)執(zhí)行表

SELECT * FROM act_ru_task 

任務(wù)執(zhí)行表,記錄當(dāng)前執(zhí)行的任務(wù),由于該任務(wù)當(dāng)前是組任務(wù),所有assignee為空,當(dāng)拾取任務(wù)后該字段就是拾取用戶的id

查詢?nèi)蝿?wù)參與者

SELECT * FROM act_ru_identitylink

任務(wù)參與者,記錄當(dāng)前參考任務(wù)用戶或組,當(dāng)前任務(wù)如果設(shè)置了候選人,會向該表插入候選人記錄,有幾個候選就插入幾個

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

以上就是Activiti進(jìn)階之組任務(wù)實現(xiàn)示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Activiti進(jìn)階組任務(wù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java的super關(guān)鍵字與instanceof運算符使用方法

    Java的super關(guān)鍵字與instanceof運算符使用方法

    這篇文章主要介紹了Java的super關(guān)鍵字與instanceof運算符使用方法,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • Java 抽象類與接口的對比

    Java 抽象類與接口的對比

    這篇文章主要介紹了Java 抽象類與接口的對比,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-08-08
  • Java ConcurrentHashMap用法案例詳解

    Java ConcurrentHashMap用法案例詳解

    這篇文章主要介紹了Java ConcurrentHashMap用法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 使用Spring Security OAuth2實現(xiàn)單點登錄

    使用Spring Security OAuth2實現(xiàn)單點登錄

    在本教程中,我們將討論如何使用Spring Security OAuth和Spring Boot實現(xiàn)SSO - 單點登錄。感興趣的朋友跟隨小編一起看看吧
    2019-06-06
  • Eclipse運行android項目報錯Unable to build: the file dx.jar was not loaded from the SDK folder的解決辦法

    Eclipse運行android項目報錯Unable to build: the file dx.jar was not

    今天小編就為大家分享一篇關(guān)于Eclipse運行android項目報錯Unable to build: the file dx.jar was not loaded from the SDK folder的解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • java語言實現(xiàn)猜數(shù)字游戲

    java語言實現(xiàn)猜數(shù)字游戲

    這篇文章主要為大家詳細(xì)介紹了java語言實現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • springboot中如何使用自定義兩級緩存

    springboot中如何使用自定義兩級緩存

    本話題主要就是討論如何在springboot的基礎(chǔ)上,無縫集成ehcache和redis作為一二級緩存,并且實現(xiàn)緩存同步。
    2021-05-05
  • Java中的ConcurrentHashMap集合源碼解析

    Java中的ConcurrentHashMap集合源碼解析

    這篇文章主要介紹了Java中的ConcurrentHashMap集合源碼解析,ConcurrentHashMap底層容器和HashMap相同,同樣是Node數(shù)組+鏈表+紅黑樹,不同的是在原來的基礎(chǔ)之上使用了Synchronized+CAS來保證線程安全,下面我們來進(jìn)行源碼分析,需要的朋友可以參考下
    2023-11-11
  • SpringBoot批處理的實現(xiàn)示例

    SpringBoot批處理的實現(xiàn)示例

    SpringBatch是一個開源 的、全面的、輕量級的批處理框架,通過SpringBoot可以實現(xiàn)強大的批處理應(yīng)用程序開發(fā),本文主要介紹了SpringBoot批處理的實現(xiàn)示例,感興趣的可以了解一下
    2022-03-03
  • java判斷空的實現(xiàn)方法

    java判斷空的實現(xiàn)方法

    字符串判斷空有兩種情況:一個是分配了內(nèi)存但值為空(""),另一個是未分配內(nèi)存(null),判斷方法包括isEmpty()和isBlank(),其中isBlank()還可以過濾空格、制表符,對于列表,判斷不為空可以使用list!=null && !list.isEmpty()或list!=null && list.size()>0
    2024-09-09

最新評論

察雅县| 石河子市| 新源县| 密云县| 手游| 理塘县| 华亭县| 民县| 共和县| 江山市| 双鸭山市| 通榆县| 乐东| 黄山市| 鹤山市| 临朐县| 广西| 贞丰县| 湄潭县| 依兰县| 宝鸡市| 军事| 清水县| 鄂尔多斯市| 泉州市| 望城县| 沁阳市| 米脂县| 隆回县| 乌什县| 宜州市| 玛纳斯县| 四子王旗| 靖州| 五河县| 奉新县| 新昌县| 弥渡县| 上饶市| 马尔康县| 莆田市|