欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1.組任務(wù)

1.1、需求

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

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

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

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

查看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”的這種方式來(lái)實(shí)現(xiàn)設(shè)置一組候選人

1.3、組任務(wù)

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

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

指定候選人,查詢?cè)摵蜻x人當(dāng)前的待辦任務(wù)。

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

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

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

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

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

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

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

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

  • d、辦理個(gè)人任務(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("流程實(shí)例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)樽约旱膫€(gè)人任務(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、 查詢個(gè)人待辦任務(wù)

查詢方式同個(gè)人任務(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("流程實(shí)例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、 辦理個(gè)人任務(wù)

同個(gè)人任務(wù)辦理

    /**
     * 完成個(gè)人任務(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ù)

如果個(gè)人不想辦理該組任務(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é)人來(lái)處理

    /**
     * 任務(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ù)庫(kù)表操作

查詢當(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è)置了候選人,會(huì)向該表插入候選人記錄,有幾個(gè)候選就插入幾個(gè)

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

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

相關(guān)文章

  • SpringBoot配置log4j輸出日志的案例講解

    SpringBoot配置log4j輸出日志的案例講解

    這篇文章主要介紹了SpringBoot配置log4j輸出日志的案例講解,springboot框架中默認(rèn)使用logback進(jìn)行日志輸出,當(dāng)然它也可以配置其它的日志框架,需要的朋友可以參考下
    2022-11-11
  • Mybatis設(shè)置sql打印日志的多種方法

    Mybatis設(shè)置sql打印日志的多種方法

    這篇文章主要介紹了Mybatis設(shè)置sql打印日志,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • 基于socket和javaFX簡(jiǎn)單文件傳輸工具

    基于socket和javaFX簡(jiǎn)單文件傳輸工具

    這篇文章主要介紹了基于socket和javaFX簡(jiǎn)單文件傳輸工具的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • javaweb上傳下載實(shí)例完整版解析(下)

    javaweb上傳下載實(shí)例完整版解析(下)

    這篇文章主要為大家詳細(xì)解析了javaweb上傳下載實(shí)例,本文重點(diǎn)在于文件下載功能的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • java使用BeanUtils.copyProperties踩坑經(jīng)歷

    java使用BeanUtils.copyProperties踩坑經(jīng)歷

    最近在做個(gè)項(xiàng)目,踩了個(gè)坑特此記錄一下,本文主要介紹了使用BeanUtils.copyProperties踩坑經(jīng)歷,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Java8新特性之空指針異常的克星Optional類的實(shí)現(xiàn)

    Java8新特性之空指針異常的克星Optional類的實(shí)現(xiàn)

    這篇文章主要介紹了Java8新特性之空指針異常的克星Optional類的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • java設(shè)計(jì)模式之單例模式

    java設(shè)計(jì)模式之單例模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之單例模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • java基礎(chǔ)詳細(xì)筆記之異常處理

    java基礎(chǔ)詳細(xì)筆記之異常處理

    異常是程序中的一些錯(cuò)誤,但并不是所有的錯(cuò)誤都是異常,并且錯(cuò)誤有時(shí)候是可以避免的,下面這篇文章主要給大家介紹了關(guān)于java基礎(chǔ)詳細(xì)筆記之異常處理的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • IntelliJ Idea 2017注冊(cè)碼免費(fèi)激活方法

    IntelliJ Idea 2017注冊(cè)碼免費(fèi)激活方法

    IDEA 全稱 IntelliJ IDEA,是Java語(yǔ)言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一。下面給大家介紹IntelliJ Idea 2017注冊(cè)碼免費(fèi)激活方法,需要的朋友參考下
    2018-01-01
  • Java小程序計(jì)算圓周率代碼

    Java小程序計(jì)算圓周率代碼

    這篇文章主要介紹了Java小程序計(jì)算圓周率代碼,有兩種實(shí)現(xiàn)方法,喜歡的朋友可以參考下。
    2017-09-09

最新評(píng)論