亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Activiti如何啟動流程并使流程前進

 更新時間:2020年03月09日 11:36:14   作者:程序曉猿  
這篇文章主要介紹了Activiti如何啟動流程并使流程前進,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一、流程和任務的關系

以下是一個簡單的請假流程圖,其中有一個開始事件,兩個用戶任務,一個結束事件。

啟動流程后,activiti會自動創(chuàng)建第一個流程節(jié)點的用戶任務,然后我們完成第一個用戶任務流程就會前進到下一個流程節(jié)點,創(chuàng)建第二個節(jié)點的流程任務并刪除第一個流程任務。

二、開啟流程

activiti提供了一個RuntimeService服務組件來在流程運行時對流程實例進行管理與控制。開啟流程就需要使用其中的api

2.1根據流程定義key開啟流程

上一篇博客中說道了一個流程部署成功后,會在部署信息表act_re_deployment和流程定義表act_re_procdef中插入記錄。流程定義key就是act_re_procdef表中的KEY_字段的值。


當表中存在KEY_字段相同的記錄時,activiti會選擇版本號 VERSION_最新的一條流程定義記錄來開啟流程

  /**
   * 開啟流程,根據流程定義key開啟流程,
   * 如果流程定義表中有多個相同的流程定義key,activiti會根據版本號字段VERSION_選擇最新的版本來開啟流程
   */
  @Test
  public void test1() {
    String processDefinitionKey="process";
    //開啟流程,得到流程實例對象
    ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey);
    System.out.println(processInstance);
  }

activiti用ProcessInstance這個接口來描述開啟流程后得到的流程實例。

三、查詢用戶任務

開頭說到了開啟流程后會創(chuàng)建第一個流程節(jié)點的用戶任務,所以可以使用activiti提供的另一個服務組件TaskService來查詢用戶任務,TaskService中提供了和任務處理相關的api

3.1 TaskQuery

activiti提供了這個接口來封裝任務查詢相關的api,可以通過TaskService來獲取它的實現類對象

TaskQuery taskQuery = taskService.createTaskQuery();

然后taskQuery這個查詢對象的使用和activiti的其他查詢對象類似,先指定查詢條件,再執(zhí)行查詢。這里我根據任務的代理人進行查詢,一個任務只能有一個代理人

  /**
   * 查詢開啟流程后自動創(chuàng)建的任務
   */
  @Test
  public void test2() {
    //根據任務的代理人進行查詢,一個任務的代理人是唯一的
    Task task = taskService.createTaskQuery().taskAssignee("tom").singleResult();
    System.out.println(task);
  }

activiti用Task來封裝任務對象,對應的是act_ru_task這張表的記錄。創(chuàng)建任務后會在這張表中插入一條記錄。

四、完成任務

可以使用taskService中的方法來完成當前任務,使流程向下一個節(jié)點移動。完成任務時需要給定任務id即act_ru_task表的主鍵Id,所以完成任務時可以先通過查詢方法給定條件查詢出一個任務對象,再完成這個任務。

  /**
   * 完成任務,使流程前進到下一個流程節(jié)點,并創(chuàng)建下一個節(jié)點的任務對象
   */
  @Test
  public void test3() {
    String taskId="4502";
    taskService.complete(taskId);
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java實現向Word文檔添加文檔屬性

    Java實現向Word文檔添加文檔屬性

    這篇文章主要介紹了Java實現向Word文檔添加文檔屬性的相關資料,需要的朋友可以參考下
    2023-01-01
  • Java包裝類原理與用法實例分析

    Java包裝類原理與用法實例分析

    這篇文章主要介紹了Java包裝類,結合實例形式分析了Java包裝類基本概念、功能、原理、用法及操作注意事項,需要的朋友可以參考下
    2020-04-04
  • springboot微服務項目集成html頁面的實現

    springboot微服務項目集成html頁面的實現

    本文主要介紹了springboot微服務項目集成html頁面的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • JAVA-4NIO之Channel之間的數據傳輸方法

    JAVA-4NIO之Channel之間的數據傳輸方法

    下面小編就為大家?guī)硪黄狫AVA-4NIO之Channel之間的數據傳輸方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • java連接Access數據庫的方法

    java連接Access數據庫的方法

    這篇文章主要為大家詳細介紹了java連接Access數據庫的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java數據結構之選擇排序算法的實現與優(yōu)化

    Java數據結構之選擇排序算法的實現與優(yōu)化

    選擇排序:(Selection?sort)是一種簡單直觀的排序算法,也是一種不穩(wěn)定的排序方法。本文主要為大家介紹一下選擇排序的實現與優(yōu)化,希望對大家有所幫助
    2023-01-01
  • SpringBoot 如何實現異步編程

    SpringBoot 如何實現異步編程

    在SpringBoot的日常開發(fā)中,一般都是同步調用的,但實際中有很多場景非常適合使用異步來處理,本文就詳細的介紹一下SpringBoot 如何實現異步編程 ,具有一定的參考價值,感興趣的可以了解一下
    2021-12-12
  • Spring容器中添加bean的5種方式

    Spring容器中添加bean的5種方式

    我們知道平時在開發(fā)中使用Spring的時候,都是將對象交由Spring去管理,那么將一個對象加入到Spring容器中,有哪些方式呢,感興趣的可以了解一下
    2021-07-07
  • Mybatis-Plus 條件構造器示例詳解

    Mybatis-Plus 條件構造器示例詳解

    這篇文章主要介紹了Mybatis-Plus 條件構造器的相關資料,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • 解決Spring?Security升級到5.5.7、5.6.4及以上啟動報錯出現版本不兼容的問題

    解決Spring?Security升級到5.5.7、5.6.4及以上啟動報錯出現版本不兼容的問題

    這篇文章主要介紹了解決Spring?Security升級到5.5.7、5.6.4及以上啟動報錯出現版本不兼容的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論