Flowable節(jié)點跳轉

關鍵詞:Flowable任務節(jié)點跳轉,F(xiàn)lowable節(jié)點跳轉汁讼,F(xiàn)lowable任意節(jié)點跳轉。

在使用Flowable或者Activiti的時候,有時候我們并不期望他按照模板的定義進行運轉号显,比如如下的一個流程圖:

正常的流程應該是shareniu1-->shareniu2-->shareniu3-->shareniu4。

如果現(xiàn)在打算讓shareniu1跳轉到shareniu3躺酒,這個時候就需要繪制一根連線押蚤,并在連線中配置一些條件。其他的節(jié)點場景相似羹应,但是實際項目開發(fā)揽碘,可能我們不想繪制太多的連線,就期望流程實例可以隨便的跳轉园匹,這個問題也是我們本文重點要講解雳刺。

1.將上述的流程進行部署。

數(shù)據(jù)庫的變化如下所示:

2.啟動流程實例:

@Test

public void start1() {

runtimeService.startProcessInstanceByKey("jump");

}

act_ru_task表的數(shù)據(jù)如下:

這個時候裸违,我們打算讓shareniu1直接跳轉到shareniu3掖桦,能跳轉過去嗎?我們不妨寫一個命令類試一下供汛。

3.任意節(jié)點跳轉實現(xiàn)代碼:

/**

*

* @author 分享牛 http://www.shareniu.com/

*/

public class ShareniuCommonJumpTaskCmd implements Command {

protected String taskId;

protected String target;

public ShareniuCommonJumpTaskCmd(String taskId, String target) {

this.taskId = taskId;

this.target = target;

}

public Void execute(CommandContext commandContext) {

ExecutionEntityManager executionEntityManager = CommandContextUtil.getExecutionEntityManager();

TaskEntityManager taskEntityManager = CommandContextUtil.getTaskEntityManager();

TaskEntity taskEntity = taskEntityManager.findById(taskId);

ExecutionEntity ee = executionEntityManager.findById(taskEntity.getExecutionId());

Process process = ProcessDefinitionUtil.getProcess(ee.getProcessDefinitionId());

FlowElement targetFlowElement = process.getFlowElement(target);

ee.setCurrentFlowElement(targetFlowElement);

FlowableEngineAgenda agenda = CommandContextUtil.getAgenda();

agenda.planContinueProcessInCompensation(ee);

taskEntityManager.delete(taskId);

return null;

}

}

4.測試代碼:

接下來枪汪,開始測試涌穆,實例代碼如下:

@Test

public void jump() {

ManagementService managementService = processEngine.getManagementService();

managementService.executeCommand(new ShareniuCommonJumpTaskCmd("2505","shareniu3"));

}

act_ru_task表的數(shù)據(jù)如下:

通過這里可以看出,我們的命令類已經生效了雀久。那我們再次執(zhí)行下上述代碼讓shareniu3跳轉到shareniu2試下宿稀,實例代碼如下:

@Test

public void jump() {

ManagementService managementService = processEngine.getManagementService();

managementService.executeCommand(new ShareniuCommonJumpTaskCmd("5002","shareniu2"));

}

act_ru_task表的數(shù)據(jù)如下:

上述的命令類確實很好用的。

5.上述跳轉命令類的缺陷:

1.上述的命令類只適用于6.x版本的引擎赖捌。包括模板以及實例都是6.x版本原叮。

2.只適用于常規(guī)節(jié)點的跳轉。(關于分支節(jié)點的跳轉巡蘸、多實例節(jié)點的跳轉以及并行節(jié)點的跳轉后續(xù)文章會詳細說明)奋隶。

3.上述的代碼適用于flowable6.1.2以后的版本。關于flowable6.1.2之前的版本思路一樣悦荒,只是代碼要稍微微調一下唯欣,部分代碼如下所示:

ExecutionEntityManager executionEntityManager = commandContext.getExecutionEntityManager();

TaskEntityManager taskEntityManager = commandContext.getTaskEntityManager();

注意:flowable6.1.2只是對代碼所在的包進行了調整,核心思想并沒有變化搬味。

4.關于flowable5.x版本的跳轉(分支節(jié)點的跳轉境氢、多實例節(jié)點的跳轉以及并行節(jié)點的跳轉)可以參考Activiti權威指南一書。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末碰纬,一起剝皮案震驚了整個濱河市萍聊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悦析,老刑警劉巖寿桨,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異强戴,居然都是意外死亡亭螟,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門骑歹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來预烙,“玉大人,你說我怎么就攤上這事道媚”獾В” “怎么了?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵最域,是天一觀的道長谴分。 經常有香客問我,道長羡宙,這世上最難降的妖魔是什么狸剃? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮狗热,結果婚禮上钞馁,老公的妹妹穿的比我還像新娘虑省。我一直安慰自己,他們只是感情好僧凰,可當我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布探颈。 她就那樣靜靜地躺著,像睡著了一般训措。 火紅的嫁衣襯著肌膚如雪伪节。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天绩鸣,我揣著相機與錄音怀大,去河邊找鬼。 笑死呀闻,一個胖子當著我的面吹牛化借,可吹牛的內容都是我干的。 我是一名探鬼主播捡多,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蓖康,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了垒手?” 一聲冷哼從身側響起蒜焊,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎科贬,沒想到半個月后泳梆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡唆迁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年鸭丛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唐责。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瘾带,靈堂內的尸體忽然破棺而出鼠哥,到底是詐尸還是另有隱情,我是刑警寧澤看政,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布朴恳,位于F島的核電站,受9級特大地震影響允蚣,放射性物質發(fā)生泄漏于颖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一嚷兔、第九天 我趴在偏房一處隱蔽的房頂上張望森渐。 院中可真熱鬧做入,春花似錦、人聲如沸同衣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耐齐。三九已至浪秘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間埠况,已是汗流浹背耸携。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辕翰,地道東北人夺衍。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像金蜀,于是被迫代替她去往敵國和親刷后。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,442評論 2 359

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理渊抄,服務發(fā)現(xiàn)尝胆,斷路器,智...
    卡卡羅2017閱讀 134,693評論 18 139
  • 1. Java基礎部分 基礎部分的順序:基本語法护桦,類相關的語法含衔,內部類的語法,繼承相關的語法二庵,異常的語法贪染,線程的語...
    子非魚_t_閱讀 31,660評論 18 399
  • 我喜歡你才厚顏無恥無休止地推給你一個又一個消息,我想套近乎但我不想耍心機催享,對你杭隙。可我又是矛盾的因妙,因為只有我生氣到...
    小金魚i閱讀 131評論 0 1
  • 據(jù)美媒透露蜗细,籃網已經正式裁掉2013年狀元秀本內特。直至目前怒详,本內特已被公認為是NBA歷史上最水狀元秀炉媒。 下面我們...
    zoneball閱讀 314評論 0 0
  • 事件:昨天回家踪区,愛人已做好飯,熬的是我最愛吃的紅薯粥橱野,我拿起碗盛飯朽缴,給自己的那碗基本把所有紅薯都盛到了我的碗里。那...
    郭云若閱讀 202評論 1 3