fork的使用有一些小的地方需要注意。
1 fork节点出去的transition必须有name属性,因为Fork要用该属性来构建子token,如果不指定的话,那么所有的transition的name都为null,则只有一个transition会被调用。
2 fork的行为是依次调用transition,所以在底层它并不是一个并发的模型,如果需要使用并发模型的话,可以考虑jbpm的异步调用,当然,也可以自己起一个Thread去完成一些task。
3 token的name是和transition的name相关的,如下例所示,rootToken的fullName为'/',fork出来的两个子token分别为'/t2','/t1'。
4 join的token必须是兄弟token。
<process-definition name='TestForkProcess'>
<start-state>
<transition to='fork'></transition>
</start-state>
<fork name='fork'>
<transition name ='t1' to='node0'></transition>
<transition name ='t2' to='node1'></transition>
</fork>
<node name='node0'>
<script>
System.out.println("this script is entering node "+node);
token.signal();
</script>
<transition to='joinNode'></transition>
</node>
<node name='node1'>
<script>
System.out.println("this script is entering node "+node);
token.signal();
</script>
<transition to='joinNode'></transition>
</node>
<join name='joinNode'>
<script>
System.out.println("this script is entering node "+node);
</script>
<transition to='end' />
</join>
<end-state name='end' />
</process-definition><process-definition name='TestForkProcess'>
<start-state>
<transition to='fork'></transition>
</start-state>
<fork name='fork'>
<transition name ='t1' to='node0'></transition>
<transition name ='t2' to='node1'></transition>
</fork>
<node name='node0'>
<script>
System.out.println("this script is entering node "+node);
token.signal();
</script>
<transition to='joinNode'></transition>
</node>
<node name='node1'>
<script>
System.out.println("this script is entering node "+node);
token.signal();
</script>
<transition to='joinNode'></transition>
</node>
<join name='joinNode'>
<script>
System.out.println("this script is entering node "+node);
</script>
<transition to='end' />
</join>
<end-state name='end' />
</process-definition>
分享到:
相关推荐
在开始JBPM开发之前,通常会通过一个简单的"Hello World"例子来熟悉流程创建和执行的基本步骤。这包括安装必要的工具和库,创建流程定义文件(使用JPDL),然后在JBPM引擎中启动和跟踪流程实例。 三、学习 JPDL 3.1...
JBPM工作流开发指南v10-20070706.doc 是一份详细的学习文档,主要针对那些想要深入理解并使用JBPM工作流引擎的开发者。JBPM(Java Business Process Management)是一个开源的工作流管理系统,它允许开发者设计、...
在开始使用JBPM之前,通常会通过一个简单的"Hello World"例子来快速上手。这个例子将展示如何创建一个基础的流程,包括定义流程、启动流程实例以及完成任务。首先,你需要设置开发环境,安装必要的库和工具,如JDK、...
2.2 、Hello World 例子 6 三、学习JPDL 11 3.1 、简介 11 3.2 、流程版本(Version) 11 3.3 、流程定义 12 3.3.1 process-definition(流程定义) 12 3.3.2 node(自动节点) 13 3.3.3 start-state(开始状态) 13 3.3.4...
JBPM,全称为Java Business Process Management,是一款功能强大的开源工作流管理系统,完全使用Java语言编写,并依赖Hibernate作为其持久化层,确保了良好的可扩展性和数据库兼容性。由于Hibernate支持多种数据库,...
Hello World例子是jbpm流程开发的入门级示例,旨在帮助读者快速了解jbpm的基本概念和开发流程。 学习JPDL JPDL(Java Process Definition Language)是jbpm流程定义语言,用于定义jbpm流程。学习JPDL是jbpm流程...
通过以上介绍,你可以对JBPM有一个基本的认识,了解如何使用它来设计、部署和管理业务流程。在深入学习过程中,还会涉及更复杂的概念,如事件处理、条件分支、信号通信等,这些都是构建高效灵活的业务流程管理系统的...
JBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了强大的业务流程建模、执行和监控能力。本开发指南将引导你了解并掌握JBPM的基础知识,包括如何创建和管理业务流程。 一、概述 JBPM...
在开始使用JBPM进行开发之前,通常会先创建一个简单的"Hello World"流程作为入门示例。这个例子通常包括创建流程定义,启动流程实例,以及完成任务等步骤。开发者会使用JPDL来编写流程定义,定义一个开始节点和结束...
JBPM不仅可以运行于任何JAVA应用服务器之上,还提供了丰富的API和工具,便于开发者进行流程设计和集成。 #### 二、JBPM入门与环境搭建 ##### 2.1 开始前的准备 在开始使用JBPM之前,需要先下载并配置好相应的开发...
第二部分,第一个流程,通过一个简单的“Hello World”例子,引导开发者了解如何开始使用JBPM。这一章节涵盖了准备工作,如安装和配置JBPM环境,以及创建并运行一个基本的流程实例。这个基础的示例将帮助新手快速...
工作流入门必经的四个简单例子。 vacate主要说明基本使用。...ForkJoin主要说明Fork结点和Join结点的使用。 countersignature主要说明如何持久化和实现较复杂的task node控制, 其中还包括如何monitor你的jBPM。
第一篇 jBPM工作流开发基础 1 第1章 工作流基础 2 1.1 工作流概念 2 1.1.1 工作流管理思想之于企业现代化管理 2 1.1.2 工作流技术在企业中的应用 5 1.1.3 如何从一个开发者的角度看工作流技术 6 1.2 工作流管理系统...
这意味着,理论上,JBPM可以运行在任何Hibernate支持的数据库之上,并且能够部署在任何符合J2EE规范的应用服务器中。 #### 二、第一个流程 ##### 2.1 开始前的准备 在开始之前,需要准备JBPM的相关环境和工具。...
《JBPM工作流开发指南》是一份详尽的文档,旨在帮助开发者理解和使用JPBM这一工作流管理系统。JPBM(JBoss Business Process Management Suite)是Red Hat公司开发的一款开源工作流引擎,它提供了业务流程管理的全套...