Activiti中的關于子流程中的并發節點標記處理

最近在研究一個輕量級的工作流引擎Activiti,就遇到了子流程中無法標記其并發節點的問題,經過幾天的研究,想到了一個簡單易懂的方法,總結如下,希望對你們能有所幫助,有寫的不對的地方,還希望大家多提寶貴意見。
第一步:子流程處理。在子流程的并發節點之前添加一個自動完成的隱藏節點。
流程圖實例
第二步:隱藏節點(上圖的子流程標記節點)處理。將與子流程綁定的執行id(ExecutionId)存入當前節點的Variables。
在activiti中的工作原理中,對于一個流程來說,和其綁定是實例id;但是當遇到多個子流程時,它自動分配不同的執行id與每一個子流程相對應;與此同時,子流程中節點(除并發節點外)的執行id都和所在子流程的執行id保持一致。當遇到并發節點時,它又會自動分配出不同的執行id和每一個并發節點綁定,所以在并發節點上做處理時是找不到它所在子流程的執行id,這樣就不能區分當前執行的并發節點是哪個子流程中的節點。故有以下做法,將隱藏節點中的流程標記傳入其后面的并發節點中。

/*** 隱藏節點監聽器* /
public class SubFlowHiddenTaskListener implements TaskListener {@Overridepublic void notify(DelegateTask delegateTask) {//獲得當前子流程的執行idString executionIdString = delegateTask.getExecutionId();//存入VariabledelegateTask.setVariable("flowIndex", executionIdString); }
}

第三步:并發節點處理。在并發節點中獲取流程標記。

/*** 并發節點監聽器* /
public class SubFlowConcurrencyTaskListener implements TaskListener {@Overridepublic void notify(DelegateTask delegateTask) {//獲得當前子流程的執行idMap<String, Object> map = delegateTask.getVariables();String flowIndex = (String) map.get("flowIndex");//其他操作······}
}

這樣就可以讓每一個并發節點都有一個特定的歸屬了!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249463.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249463.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249463.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[WPF 基礎知識系列] —— 綁定中的數據校驗Vaildation

[WPF 基礎知識系列] —— 綁定中的數據校驗Vaildation 原文:[WPF 基礎知識系列] —— 綁定中的數據校驗Vaildation前言&#xff1a; 只要是有表單存在&#xff0c;那么就有可能有對數據的校驗需求。如&#xff1a;判斷是否為整數、判斷電子郵件格式等等。 WPF采用一種全新的方式…

ModuleNotFoundError: No module named 'win32api'

啟動一個工程的cmd&#xff1a; scrapy crawl HI 如果 運行報 No module named “win32api” 要安裝 pip install pypiwin32 這個包轉載于:https://www.cnblogs.com/hailong88/p/10528618.html

powercmd注冊碼

用戶名&#xff1a;nzone注冊碼&#xff1a;PCMDA-86128-PCMDA-70594 http://www.baidu.com/

Servlet其實是單例多線程

https://blog.csdn.net/xiaojiahao_kevin/article/details/51781946

解決“跨域問題”的幾種方法

&#xff08;0&#xff09;使用注解方式&#xff0c;這個可能有些框架可以&#xff0c;有些不行&#xff0c;在要訪問的方法前面加上此注解即可&#xff1a; CrossOrigin &#xff08;1&#xff09;使用 Access-Control-Allow-Origin 設置請求響應頭&#xff0c;簡潔有效。 &am…

Conda 安裝本地包

有的conda或pipy源太慢&#xff0c;conda install xxx或者pip install xxx下載會中斷連接導致壓縮包下載不全&#xff0c;本地的安裝包沒法完全安裝, 遇到這個問題時&#xff0c;我們可以用p2p工具-迅雷等先下載指定包再用conda或pip安裝 pip 安裝本地包pip install D:\XXX.w…

DESUtils 加解密時 Given final block not properly padded bug小記

事情的經過是這個樣子的。。。。。。 先說說問題是怎么出現的。根據客戶需求&#xff0c;需要完成一個一鍵登錄的功能&#xff0c;于是我的項目中就誕生了DesUtil&#xff0c;但是經過上百次用戶測試&#xff0c;發現有一個用戶登錄就一直報錯&#xff01;難道又遇到神坑啦&am…

Apache

https://www.iteye.com/blog/yaodaqing-1596570

仿 騰訊新聞快訊 --無縫滾動

//無縫滾動function AutoScroll(obj) {var autoScrollTimernull,timernull;timersetTimeout(function(){move();},3000);function move(){clearTime(autoScrollTimer);var liLen $(obj).find(li).length;if(liLen 1){//此處處理只有一條數據時 跳動效果$(obj).find("ul:f…

spring3.2 @Scheduled注解 定時任務

1.首先加入 下載spring3.2 &#xff0c;http://projects.spring.io/spring-framework/ 2.加入jar包&#xff0c;在applicationContext.xml加入聲明-xmlns加入[java xmlns:task"http://www.springframework.org/schema/task" -xsi加入[java] http://www.springframe…

搜索(題目)

A.POJ_1321考查DFS的一個循環中遞歸調用 1 #include<iostream>2 #include<cstring>3 4 using namespace std;5 char a[10][10]; //記錄棋盤位置6 int book[10]; //記錄一列是否已經放過棋子7 int n, k; // k 為 需要放入的棋子數8 int t…

rest_framework中的url注冊器,分頁器,響應器

url注冊器&#xff1a; 對于authors表&#xff0c;有兩個url顯得麻煩&#xff1a; rest_framework將我們的url進行了處理&#xff1a; 這樣寫了之后&#xff0c;就可以像原來一樣訪問author表了。 故意寫錯路徑&#xff0c;看看它為我們做了哪些配置&#xff1a; 在有關author的…

Alluxio學習

介紹 Alluxio&#xff08;之前名為Tachyon&#xff09;是世界上第一個以內存為中心的虛擬的分布式存儲系統。它統一了數據訪問的方式&#xff0c;為上層計算框架和底層存儲系統構建了橋梁。應用只需要連接Alluxio即可訪問存儲在底層任意存儲系統中的數據。此外&#xff0c;Allu…

freemarker常見語法大全

FreeMarker的插值有如下兩種類型:1,通用插值${expr};2,數字格式化插值:#{expr}或#{expr;format} ${book.name?if_exists } //用于判斷如果存在,就輸出這個值 ${book.name?default(‘xxx’)}//默認值xxx ${book.name!"xxx"}//默認值xxx ${book.date?string(yyy…

網頁排版與布局

一 網站的層次結構 制作便于瀏覽頁面的一個大敵就是視覺干擾,它包含兩類: a,混亂頁面主次不清,所有東西都引人注目 b,背景干擾 1.把頁面分割成清晰明確的不同區域很重要,因為可以使用戶迅速判斷出哪些區域應重點看,哪些可以放心地忽略. 2.創建清晰直觀的頁面層次結構;越重要越要…

Bash的循環結構(for和while)

在bash有三中類型的循環結構表達方法&#xff1a;for&#xff0c;while&#xff0c;until。這里介紹常用的兩種&#xff1a;for和while。 for bash的for循環表達式和python的for循環表達式風格很像&#xff1a; for var in $(ls) doecho "$var"done 取值列表有很多種…

MVVM模式下實現拖拽

MVVM模式下實現拖拽 原文:MVVM模式下實現拖拽在文章開始之前先看一看效果圖 我們可以拖拽一個"游戲"給ListBox,并且ListBox也能接受拖拽過來的數據&#xff0c; 但是我們不能拖拽一個"游戲類型"給它。 所以當拖拽開始發生的時候我們必須添加一些限制條件&a…

nodejs變量

https://www.cnblogs.com/vipyoumay/p/5597992.html

jenkins+Docker持續化部署(筆記)

參考資料&#xff1a;https://www.cnblogs.com/leolztang/p/6934694.html &#xff08;Jenkins&#xff08;Docker容器內&#xff09;使用宿主機的docker命令&#xff09; https://container-solutions.com/running-docker-in-jenkins-in-docker/ &#xff08;Running Docker i…

正則表達式之括號

正則表達式&#xff08;三&#xff09; 括號 分組 量詞可以作用字符或者字符組后面作為限定出現次數&#xff0c;如果是限制多個字符出現次數或者限制一個表達式出現次數&#xff0c;需要使用括號()將多個字符或者表達式括起來&#xff0c;這樣便稱為分組。例如(ab)表示“ab”字…