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

java開發(fā)Activiti進(jìn)階篇流程實例詳解

 更新時間:2022年08月11日 08:52:53   作者:請叫我黃同學(xué)  
這篇文章主要為大家介紹了java開發(fā)Activiti進(jìn)階篇流程實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1.流程實例

1.1 什么是流程實例

流程實例(ProcessInstance)代表流程定義的執(zhí)行實例

一個流程實例包括了所有的運行節(jié)點,我們可以利用這個對象來了解當(dāng)前流程實例的進(jìn)度等信息

例如:用戶或者程序安裝流程定義的內(nèi)容發(fā)起了一個流程,這個就是一個流程實例

1.2 業(yè)務(wù)管理

?流程定義部署在Activiti后,我們就可以在系統(tǒng)中通過Activiti去管理流程的執(zhí)行,但是如果我們要將我們的流程實例和業(yè)務(wù)數(shù)據(jù)關(guān)聯(lián),這時我們需要使用到Activiti中預(yù)留的BusinessKey(業(yè)務(wù)標(biāo)識)來關(guān)聯(lián)

實現(xiàn)代碼:

    /**
     * 啟動流程實例,添加businessKey
     */
    @Test
    public void test01(){
        // 1.獲取ProcessEngine對象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        // 2.獲取RuntimeService對象
        RuntimeService runtimeService = processEngine.getRuntimeService();
        // 3.啟動流程實例
        ProcessInstance instance = runtimeService
                .startProcessInstanceByKey("evection", "1001");
        // 4.輸出processInstance相關(guān)屬性
        System.out.println("businessKey = "+instance.getBusinessKey());
    }

1.3 流程實例的掛起和激活

? 在實際場景中可能由于流程變更需要將當(dāng)前運行的流程暫停而不是刪除,流程暫停后將不能繼續(xù)執(zhí)行。

1.3.1 全部流程掛起

? 操作流程的定義為掛起狀態(tài),該流程定義下邊所有的流程實例全部暫停。

流程定義為掛起狀態(tài),該流程定義將不允許啟動新的流程實例,同時該流程定義下的所有的流程實例都將全部掛起暫停執(zhí)行。

    /**
     * 全部流程掛起實例與激活
     */
    @Test
    public void test02(){
       // 1.獲取ProcessEngine對象
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        // 2.獲取RepositoryService對象
        RepositoryService repositoryService = engine.getRepositoryService();
        // 3.查詢流程定義的對象
        ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
                .processDefinitionKey("evection")
                .singleResult();
        // 4.獲取當(dāng)前流程定義的狀態(tài)
        boolean suspended = processDefinition.isSuspended();
        String id = processDefinition.getId();
        // 5.如果掛起就激活,如果激活就掛起
        if(suspended){
            // 表示當(dāng)前定義的流程狀態(tài)是 掛起的
            repositoryService.activateProcessDefinitionById(
                    id // 流程定義的id
            ,true // 是否激活
            ,null // 激活時間
            );
            System.out.println("流程定義:" + id + ",已激活");
        }else{
            // 非掛起狀態(tài),激活狀態(tài) 那么需要掛起流程定義
            repositoryService.suspendProcessDefinitionById(
                    id // 流程id
                    ,true // 是否掛起
                    ,null // 掛起時間
            );
            System.out.println("流程定義:" + id + ",已掛起");
        }
    }

掛起流程定義后,對于的實例對象中的狀態(tài)會修改為2

然后再去操作對于的流程實例會拋異常信息

我們再將掛起的流程轉(zhuǎn)變?yōu)榧せ顮顟B(tài),對于的狀態(tài)值會從2更新為1

然后就是業(yè)務(wù)流程可以正常處理了

1.3.2 單個實例掛起

操作流程實例對象,針對單個流程執(zhí)行掛起操作,某個流程實例掛起則此流程不再繼續(xù)執(zhí)行,當(dāng)前流程定義的其他流程實例是不受干擾的。完成該流程實例的當(dāng)前任務(wù)會拋異常

    /**
     * 單個流程實例掛起與激活
     */
    @Test
    public void test03(){
        // 1.獲取ProcessEngine對象
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        // 2.獲取RuntimeService
        RuntimeService runtimeService = engine.getRuntimeService();
        // 3.獲取流程實例對象
        ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
                .processInstanceId("25001")
                .singleResult();
        // 4.獲取相關(guān)的狀態(tài)操作
        boolean suspended = processInstance.isSuspended();
        String id = processInstance.getId();
        if(suspended){
            // 掛起--》激活
            runtimeService.activateProcessInstanceById(id);
            System.out.println("流程定義:" + id + ",已激活");
        }else{
            // 激活--》掛起
            runtimeService.suspendProcessInstanceById(id);
            System.out.println("流程定義:" + id + ",已掛起");
        }
    }

然后我們可以在數(shù)據(jù)庫中查看到狀態(tài)的更新

以上就是java開發(fā)Activiti進(jìn)階篇流程實例詳解的詳細(xì)內(nèi)容,更多關(guān)于java Activiti流程實例的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中的final關(guān)鍵字和抽象類詳解

    Java中的final關(guān)鍵字和抽象類詳解

    這篇文章主要介紹了Java中的final關(guān)鍵字和抽象類詳解,當(dāng)不希望 類被繼承時,可以用final修飾比如不希望子類重寫父類時,當(dāng)不希望某個局部變量被修改時,對參數(shù)進(jìn)行修飾,需要的朋友可以參考下
    2023-07-07
  • Netty分布式pipeline管道Handler的添加代碼跟蹤解析

    Netty分布式pipeline管道Handler的添加代碼跟蹤解析

    這篇文章主要介紹了Netty分布式pipeline管道Handler的添加代碼跟蹤解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • 從零搭建SpringBoot+MyBatisPlus快速開發(fā)腳手架

    從零搭建SpringBoot+MyBatisPlus快速開發(fā)腳手架

    這篇文章主要為大家介紹了從零搭建SpringBoot+MyBatisPlus快速開發(fā)腳手架示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 淺談s:select 標(biāo)簽中l(wèi)ist存放map對象的使用

    淺談s:select 標(biāo)簽中l(wèi)ist存放map對象的使用

    下面小編就為大家?guī)硪黄獪\談s:select 標(biāo)簽中l(wèi)ist存放map對象的使用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • JVM中ClassLoader類加載器的深入理解

    JVM中ClassLoader類加載器的深入理解

    這篇文章主要給大家介紹了關(guān)于JVM中ClassLoader類加載器的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Java學(xué)習(xí)之線程同步與線程間通信詳解

    Java學(xué)習(xí)之線程同步與線程間通信詳解

    這篇文章主要為大家詳細(xì)介紹了線程同步和線程之間的通信的相關(guān)知識,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定的幫助,感興趣的可以了解一下
    2022-12-12
  • java程序員常見的sql錯誤

    java程序員常見的sql錯誤

    當(dāng)Java程序員在SQL中要寫個查詢語句是很簡單的。但在Java里類似的語句卻不容易,因為程序員不僅要反復(fù)考慮編程范式,而且也要考慮算法的問題。下面我們來看看這幾個常見的錯誤吧
    2019-06-06
  • JAVA中的函數(shù)接口示例詳解

    JAVA中的函數(shù)接口示例詳解

    創(chuàng)建一個自定義的Sayable接口,這是一個使用@FunctionalInterface注解的函數(shù)式接口,這篇文章主要介紹了JAVA中的函數(shù)接口,你都用過嗎,需要的朋友可以參考下
    2023-11-11
  • 2020 IDEA安裝教程與激活(idea2020激活碼)

    2020 IDEA安裝教程與激活(idea2020激活碼)

    這篇文章主要介紹了2020 IDEA安裝教程與激活(idea2020激活碼),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • jvm運行原理以及類加載器實例詳解

    jvm運行原理以及類加載器實例詳解

    這篇文章主要給大家介紹了關(guān)于jvm運行原理以及類加載器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05

最新評論