成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解Java EE工作流管理系統jBPM的FORK中節點同步功能

開發 后端
在Java EE工作流管理系統jBPM中除功能節點(指START-STATE,END-State,Fork,Join,Decision)外,業務邏輯全放在NODE節點的ACTION中來實現。本文將詳解Java EE工作流管理系統jBPM的FORK中節點同步功能。

51CTO一直都關注Java EE工作流管理系統jBPM,在Java EE工作流管理系統jBPM中除功能節點(指START-STATE,END-State,Fork,Join,Decision)外,業務邏輯全放在NODE節點的ACTION中來實現。本文將詳解Java EE工作流管理系統jBPM的FORK中節點同步功能。

  1. public class DemoActionHandler implements ActionHandler {   
  2.  
  3. Java代碼   
  4. /**   
  5.      * 簡單的ACTIONHANDLER DEMO   
  6.      */    
  7.     private static final long serialVersionUID = 1L;    
  8.     
  9.     @SuppressWarnings("unchecked")    
  10.     @Override    
  11.     public void execute(ExecutionContext executionContext) throws Exception {    
  12.         Node node = executionContext.getNode();    
  13.     
  14.         System.out.print(executionContext.getProcessInstance().getId());    
  15.         System.out.println("--[" + node.getName() + "] ["    
  16.                 + new java.util.Date()+"]");    
  17.         ContextInstance cxtInstance = executionContext.getProcessInstance()    
  18.                 .getContextInstance();    
  19.         try {    
  20.              Date date = new Date();    
  21.              Date startDate = (Date) cxtInstance.getVariable("STARTDATE");    
  22.              System.out.println("執行到此節點共用時:" + ""    
  23.              + (date.getTime() - startDate.getTime()));    
  24.                              
  25.         } catch (Exception e) {    
  26.                         e.printStackTrace();    
  27.                     }    
  28.         Thread.sleep(6000);    
  29.         node.leave(executionContext);    
  30.     }    
  31. }    
  32.  

我寫了一個簡單的流程,串行的,不包含分支,只包含開始,結束,NODE三種類型的節點。將流程發布,創建實例 ,在實例啟動后用輪詢的方式查詢跟蹤token所在的位置(如果有分支的情況下可能需要考慮子token的情況),發現個流程的監控結果只有兩個結點:START和END,這是為什么呢,首先想到的是流程實例的狀態并沒有實時的保存或是說持久化到數據庫中去。

再結合自己的程序想了一下,程序中的節點全部是NODE類型的自動節點,流程在執行的時候,會直到一個等待節點才將流程實例持久化到數據庫中。但如果將NODE節點的async(異步執行)屬性設置的true,流程會在執行到該節點時,會啟動一個線程來執行NODE的ACTIONHANDLER,而TOKEN本身會掛起,等待執行完畢的消息,事務因此也將由一個被分裂為兩個獨立的事務.也就是說,原來從開始執行到等待狀態為止的一個事務被異步節點分了成多個事務,流程會在執行異步節點的ACTIONHANDLER時將事務提交,流程實例的狀態也就會持久化到數據庫中去。
于是加上

  1. Java代碼   
  2. node.setAsync(true);    
  3.  

接著測試有分支的情況,又發現fork下的節點是依次執行的,查了資料,有如下的說法

引用

fork的底層其實是依次調用各個transition,而不是真正意義的同步,如果需要同步,請參考JBPM異步設置

于是把FORK節點的async屬性也設置成了true,測試后發現還是不行。按照上面的說法,fork在執行各個分支的時候,采用了類似遍歷的方式調用各個分支,但不至于非得執行完成一個分支后再執行另一個分支。無奈放下了,開始查找資料,這部分工作也是因此擱淺了將近一天的時間。晚上在家查閱資料的時候,發現有人提起了JobExecutor的線程個數,我覺得有可能這個的原因。翻下源碼,找了個API試驗一下

  1. Java代碼   
  2. jobExecutor = jbpmConfiguration.getJobExecutor();    
  3.     jobExecutor.setNbrOfThreads(5);    
  4.     jobExecutor.start();    
  5.  

結果喜劇了,我驚喜的發現,fork下的節點竟然同步執行了(當然同步的執行也會有先后)。

雖然這本來就是fork節點的基本作用,但實際用起來的時候還是會遇到各種戰利品樣的問題。原因就在這里,如果不設置其線程數,JobExecutor默認啟動一個線程為工作,這樣就導致fork下的節點進入了隊列,結果就是串行執行了。

【編輯推薦】

  1. Java EE工作流管理系統jBPM
  2. jBPM數據庫表說明:流程節點表
  3. jBPM 4.4正式發布 Java工作流管理系統
  4. jBPM實現高級交互模式詳解
責任編輯:佚名 來源: javaEye
相關推薦

2010-07-20 16:38:28

jBPMjBPM 4.4jBPM 4.4下載

2012-05-22 09:30:58

jBPMJava

2010-01-08 09:26:29

jBPM 4.3Java工作流BPMN 2.0

2009-09-02 16:48:41

工作流管理系統

2009-06-11 13:39:32

jBPM數據庫

2009-06-11 13:22:18

JBPM數據庫

2021-06-25 09:37:01

KubernetesDevtrongo

2011-12-14 09:58:58

JavajBPM

2009-06-11 14:43:34

jbpm工作流引擎jBPM搭建

2015-10-08 09:48:00

云規劃師混合云工作流管理

2009-06-11 14:33:11

jbpm工作流引擎什么是jbpm

2017-01-13 15:45:05

Linuxfork函數詳解

2009-06-11 14:48:48

jbpm工作流引擎jbpm例子

2009-11-18 09:14:49

Visual Stud

2010-07-28 17:19:28

ICMP協議

2009-04-15 11:00:31

Workflow工作流角色

2017-03-14 09:13:14

Linux工作管理系統資源

2009-03-03 09:13:36

工作流BPM業務流程

2009-07-27 14:13:15

2009-03-04 13:10:41

SQL語句INSERTDELETE
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲久视频 | 亚洲国产精品99久久久久久久久 | 一区二区国产精品 | 精精国产视频 | 日韩一区二区久久 | 久久久久www | 成人国产精品免费观看视频 | 99精品99 | 久草在线高清 | 国产日韩欧美在线一区 | 国产1区在线 | 欧美日韩亚洲在线 | 五月天婷婷狠狠 | 日韩欧美国产一区二区三区 | www.久草.com | 日韩在线视频一区 | 成人精品久久 | 精品欧美一区二区三区久久久 | 亚洲精品1区 | 亚洲第一av | 欧美一级做性受免费大片免费 | 激情欧美一区二区三区中文字幕 | 在线免费观看毛片 | 九九热在线免费观看 | 91久久| 天天草天天干 | 欧美性大战久久久久久久蜜臀 | 天天干亚洲 | 涩爱av一区二区三区 | 中国毛片免费 | 黄色欧美| 天天躁日日躁狠狠很躁 | 国产精品免费看 | 7777精品伊人久久精品影视 | 我要看免费一级毛片 | 日韩视频专区 | 91大神在线资源观看无广告 | 免费爱爱视频 | 亚洲综合三区 | 亚洲人人舔人人 | 国产成人精品久久二区二区91 |