如何理解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)

相关推荐

  • 解析JVM内存监控流程的示例分析

    技术解析JVM内存监控流程的示例分析解析JVM内存监控流程的示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。你对JVM内存监控是否熟悉

    攻略 2021年10月23日
  • 对长亭晚,杯杯敬的有钱人这一首诗什么诗

    技术对长亭晚,杯杯敬的有钱人这一首诗什么诗《诗经》死生契阔对长亭晚,与子成说。执子之手,与子偕老。《邶风·击鼓》
    今夕何夕,见此良人。《唐风·绸缪》
    青青子衿,悠悠我心。《郑风·子衿》
    手如柔荑,肤如凝脂,领如蝤蛴,齿如

    生活 2021年10月29日
  • mysql中授权和撤销授权等命令怎么用

    技术mysql中授权和撤销授权等命令怎么用小编给大家分享一下mysql中授权和撤销授权等命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧

    攻略 2021年10月29日
  • 单数第三人称,英语语法哪些词是第三人称单数

    技术单数第三人称,英语语法哪些词是第三人称单数1.人称代词 he, she, it 属于第三人称单数单数第三人称。eg.How old is he?2.不定代词everyone, something, nobody, e

    生活 2021年10月22日
  • Floyd 算法学习笔记

    技术Floyd 算法学习笔记 Floyd 算法学习笔记Floyd算法学习笔记(未完结)
    前言
    如有错误,欢迎各位 dalao 批评指出。
    前置芝士:
    1.邻接矩阵(Floyd要用邻接矩阵存图)
    2.动态

    礼包 2021年11月18日
  • html中em是什么单位(em值是什么意思)

    技术css3中em指的是什么单位小编给大家分享一下css3中em指的是什么单位,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 在css3中,em是一个相对长度单位,相对于当前

    攻略 2021年12月19日