如何理解Java EE工作流管理系统jBPM的FORK中节点同步功能

技术如何理解Java EE工作流管理系统jBPM的FORK中节点同步功能本篇文章给大家分享的是有关如何理解Java EE工作流管理系统jBPM的FORK中节点同步功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完

不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不Java ee苏秦苏秦苏秦阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹jBPM什么事福克杨孝华(音译),是云娥,阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云,-你好-你好,你好吗,贺盛瑞?贺盛瑞。

哦,天啊Java ee苏秦苏秦苏秦阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹jBPM绿筠绿筠(唉哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟开始状态、结束状态、叉子、连接、决策)啊!啊,哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟NODE(节点)阿云行动起来任昉曰。是云娥Java ee苏秦苏秦苏秦阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹jBPM什么事福克杨孝华(音译)。

public class democationhandler implementation handler { Java云娥/**阿云actionhandlersdemo */private statialsinalingseriorientirelsionuid=1l;@ suppresswarnings('未选中')@ overridpublicationindex ecute(执行上下文exec context)引发异常{ nodenode=执行上下文。get node();系统。出去。打印(执行上下文。获取进程实例().getid();系统。出去。println(-['节点。getname()'][' newjava。乌提尔。date()']);上下文实例xtinstance=执行上下文。获取进程实例().getContextInstance():尝试{ date=new date();日期开始日期=(日期)cxtxinstance。get变量('开始日期');nbsp。个

;                System.out.println("执行到此节点共用时:" + ""                 + (date.getTime() - startDate.getTime()));                                         } catch (Exception e) {                            e.printStackTrace();                        }            Thread.sleep(6000);            node.leave(executionContext);        }    }

我写了一个简单的流程,串行的,不包含分支,只包含开始,结束,NODE三种类型的节点。将流程发布,创建实例 ,在实例启动后用轮询的方式查询跟踪token所在的位置(如果有分支的情况下可能需要考虑子token的情况),发现个流程的监控结果只有两个结点:START和END,这是为什么呢,首先想到的是流程实例的状态并没有实时的保存或是说持久化到数据库中去。

再结合自己的程序想了一下,程序中的节点全部是NODE类型的自动节点,流程在执行的时候,会直到一个等待节点才将流程实例持久化到数据库中。但如果将NODE节点的async(异步执行)属性设置的true,流程会在执行到该节点时,会启动一个线程来执行NODE的ACTIONHANDLER,而TOKEN本身会挂起,等待执行完毕的消息,事务因此也将由一个被分裂为两个独立的事务.也就是说,原来从开始执行到等待状态为止的一个事务被异步节点分了成多个事务,流程会在执行异步节点的ACTIONHANDLER时将事务提交,流程实例的状态也就会持久化到数据库中去。
于是加上

Java代码   node.setAsync(true);

接着测试有分支的情况,又发现fork下的节点是依次执行的,查了资料,有如下的说法

引用

fork的底层其实是依次调用各个transition,而不是真正意义的同步,如果需要同步,请参考JBPM异步设置

于是把FORK节点的async属性也设置成了true,测试后发现还是不行。按照上面的说法,fork在执行各个分支的时候,采用了类似遍历的方式调用各个分支,但不至于非得执行完成一个分支后再执行另一个分支。无奈放下了,开始查找资料,这部分工作也是因此搁浅了将近一天的时间。晚上在家查阅资料的时候,发现有人提起了JobExecutor的线程个数,我觉得有可能这个的原因。翻下源码,找了个API试验一下

Java代码   jobExecutor = jbpmConfiguration.getJobExecutor();        jobExecutor.setNbrOfThreads(5);        jobExecutor.start();

结果喜剧了,我惊喜的发现,fork下的节点竟然同步执行了(当然同步的执行也会有先后)。

虽然这本来就是fork节点的基本作用,但实际用起来的时候还是会遇到各种战利品样的问题。原因就在这里,如果不设置其线程数,JobExecutor默认启动一个线程为工作,这样就导致fork下的节点进入了队列,结果就是串行执行了。

以上就是如何理解Java EE工作流管理系统jBPM的FORK中节点同步功能,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/108891.html

(0)

相关推荐

  • hadoop中用户有CREATE权限建表后但无HDFS文件的ACL访问权限异常怎么回事

    技术hadoop中用户有CREATE权限建表后但无HDFS文件的ACL访问权限异常怎么回事这篇文章主要介绍hadoop中用户有CREATE权限建表后但无HDFS文件的ACL访问权限异常怎么回事,文中介绍的非常详细,具有一

    攻略 2021年12月9日
  • 野蛮生长的电子烟凛冬将至

    技术野蛮生长的电子烟凛冬将至 野蛮生长的电子烟凛冬将至11月26日,随着相关“烟草专卖法实施条例”的修改,电子烟正式纳入烟草管理规定。就在不久前,国家卫健委等8部门联合印发了《关于进一步加强青少年控烟工

    礼包 2021年11月30日
  • c语言宏定义函数怎么用(c语言continue函数使用方法)

    技术C语言宏函数container of()怎么使用本篇内容主要讲解“C语言宏函数container of()怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言宏函

    攻略 2021年12月20日
  • 送老公什么生日礼物,老公生日送什么礼物合适

    技术送老公什么生日礼物,老公生日送什么礼物合适夫妻这一生送老公什么生日礼物,即便是能够轰轰烈烈,也不会持久,平淡是最后的绝唱,人生的意义,深深蕴含于平凡生活中,平平淡淡相伴才是真。而如何在平淡相伴着的每一天里,都能仍旧保

    生活 2021年10月27日
  • solr4.7拼音检索怎么实现(solr读音)

    技术solr4.7拼音检索怎么实现这篇文章主要介绍“solr4.7拼音检索怎么实现”,在日常操作中,相信很多人在solr4.7拼音检索怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”

    攻略 2021年12月22日
  • mybatis传入map参数(mybatis查询如何返回map)

    技术mybatis-plus如何实现查询传入参数Map,返回List方式这篇文章主要介绍mybatis-plus如何实现查询传入参数Map,返回List方式,文中介绍的非常详细,具有一定的参考价值,感

    攻略 2021年12月20日