对jBPM来讲,工作流由一些节点和用户定义的Hander组成。一个工作流从start-state开始,中间经过若干个节点(state、fork、milestone、process-state、decision和join),最后结束于end-state。节点之间通过transient来连接,指明当前节点下面要经过的节点。经过节点时,jBPM会触发相应的Hander来完成用户指定的工作。Hander包括各种事件的ActionHander;指定节点指定操作Actor的AssignmentHandler;定义节点工作的Hander,包括fork节点ForkHander,Join节点JoinHander,decision节点的DecisionHander,process-state节点的ProcessInvocationHandler。jBPM对Hander都有缺省的实现,如果用户没有指定相应Hander,jBPM就使用缺省Hander。
定义工作流程的时候,可以根据实际业务流程,先画UML状态图,然后根据活动图和jpdl编写processdefinition.xml-jBPM工作流定义文件。状态图的节点可以对应到jpdl的相应节点,比如状态对应于state、转换(分叉)对于fork。流程定义文件设计的时候,可以将一些业务处理放在Hander处理。
jBPM节点实际上是XPDL规范中Activity的细化,是一种特殊的Activity。start-state与end-state节点,是由jBPM负责处理,jBPM从start-state节点开始工作流程,在end-state结束工作流程。
State
状态结点是一个典型的等待状态。同任务结点不同的是,状态结点不会向任务列表添加任务实例。当业务进程需要等待外部系统的干预时,这种结点是很有用的。假设如下情况:在进入该结点时,通过node-enter事件向外部系统发送一个消息,然后结点进入等待状态;当外部系统完成处理,并回送一个消息,这将导致触发一个token.signal()方法的运行,该方法重新激活正在等待的流程继续下行。
Join
相对于fork结点的分支,join结点将分支收拢。默认的行为模式是当所有的分支(由同一个fork衍生出来的分支)都到达该结点的时候,join结点将结束这些分支上的子token,并通过token上的父子关系找到上一级流程的token,将此token通过唯一的transition传播下去。如果只有分支中的部分token到达时,join结点将处于等待状态。
Decision
相当于编程语言中的判断,由DecisionHander决定下一个要经过的节点。通过自己定义DecisionHander,用户可以借助decision节点实现自动节点,即流程到这里,执行一定操作,自动进入下一个节点。
Fork
分支结点的作用是将单个执行流程分裂成多个并发的执行流程。默认的行为是为每个子流程生成一个子令牌,并建立子令牌和主流程根令牌之间的父子关系。
node
普通类结点主要用于提供用户定制自己的程序代码。普通结点拥有一个action子元素,当流程到达该结点时,这个action就会被执行。可以通过实现ActionHandler接口来执行你想要的任何代码。此外普通结点也一样要负责流程的延续。在流程图上,普通结点用来表达一个用户关心的、与业务相关的处理逻辑;相比而言Action(下文中将会提到)则允许添加业务逻辑以外的程序处理,这些程序处理在流程图上是不可见的,也是业务流程分析所不用关心的。
Milestone是一种特殊的节点,用于同步两个执行路径,比如执行到milestone节点后,jBPM就等待,等到另外一条路径上某个节点发出可以继续的信号后,jBPM才进入milestone的下一个节点。节点通过MilestoneReachedActionHandler来发消息。
工作流中用到的所有变量通过Variable来说明,变量类型通过type来定义。类型定义必须要继承org.jbpm.delegation.Serializer接口。变量是作为字符串存储在数据库中的,因此类型要提供与字符串类型相互转换的方法。jBPM变量的作用域是工作流本身。
流程执行到某个节点的时候,会触发节点的相应事件。事件类型包括process-start、process-end、state-enter、state-leave、state-after-assignment、milestone-enter、milestone-leave、decision-enter、decision-leave、fork-enter、fork-every-leave、join-every-enter、join-leave、transition。事件具体执行的操作,用户通过继承ActionHander接口来指定。
分享到:
相关推荐
IEC61850 模型节点描述 IEC61850 模型节点描述是电力系统自动化领域中的一种标准格式,用于描述智能电网设备之间的数据交换和通信。IEC61850 模型节点描述主要应用于智能电网、电力自动化、电力系统监控等领域。 ...
3时间节点描述ppt模板免费.pptx,和箭头 文本说明框ppt模板下载的ppt模板内容其实是一样的,只是模板的风格上有些许差异,也是表示时间顺序上的三个节点,在时间节点上,还可以填上每个节点的描述。
总之,XML的添加操作和节点描述是XML处理的基础,而Repeater展示则是数据绑定的关键技术,结合XmlReader这样的高效读取工具,可以实现灵活、高效的XML数据处理和展示。在实际开发中,熟练运用这些知识可以提高代码的...
压缩包里有IEEE3机9节点的潮流计算matlab程序,并附上节点描述表和支路描述表,只要修改这两个就行 【实例截图】 【核心代码】 0551a03d-1a83-4d43-873d-a85ed7ad2821 └── chaoliujisuan ├── branch_desc.txt ...
在实际操作中,你需要根据具体的需求调整节点描述表和支路描述表的数据,以适应不同的系统配置或运行场景。同时,对MATLAB编程的熟练掌握将有助于你更好地利用这个程序,进行电力系统分析和优化工作。
- **JDMS(节点描述)**: Varchar2(200)类型,用于描述节点的功能或操作。 - **JDLX(节点类型)**: Varchar2(4)类型,用于区分节点的不同类型,例如决策节点、执行节点等。 - **DYMK(对应业务模块)**: Varchar2...
压缩包里有IEEE3机9节点的潮流计算matlab程序,并附上节点描述表和支路描述表,只要修改这两个就行 【实例截图】 【核心代码】 0551a03d-1a83-4d43-873d-a85ed7ad2821 └── chaoliujisuan ├── branch_desc.txt ...
压缩包里有IEEE3机9节点的潮流计算matlab程序,并附上节点描述表和支路描述表,只要修改这两个就行 【实例截图】 【核心代码】 0551a03d-1a83-4d43-873d-a85ed7ad2821 └── chaoliujisuan ├── branch_desc.txt ...
- **节点描述符初始化**:定义节点的身份信息,如节点地址、设备类型等。 - **任务化初始化函数**:创建和配置节点的任务,如数据收发任务。 - **事件处理函数**:处理接收到的数据,调用相应的处理函数。 - **...
在实际操作中,你需要根据具体的需求调整节点描述表和支路描述表的数据,以适应不同的系统配置或运行场景。同时,对MATLAB编程的熟练掌握将有助于你更好地利用这个程序,进行电力系统分析和优化工作。
在实际操作中,你需要根据具体的需求调整节点描述表和支路描述表的数据,以适应不同的系统配置或运行场景。同时,对MATLAB编程的熟练掌握将有助于你更好地利用这个程序,进行电力系统分析和优化工作。
- **节点描述符初始化**:配置节点的身份信息,如设备类型、地址等。 - **任务化初始化**:设置定时器、中断服务程序等,确保节点可以正常处理事件。 - **事件处理函数**:监听网络事件,如接收到数据包,调用...
然而,这些算法忽略了网络节点相关的文本信息,如节点描述、内容等,这些信息往往能提供更丰富的上下文和语义关联。针对这一局限性,文章提出了基于网络节点文本增强的链路预测算法。 算法的核心思想是将网络节点的...
危害(H)用浅蓝色节点描述,暴露(E)用绿色节点描述,脆弱性(V)用橙色节点描述,成本用黄色节点描述。 脆弱性由易感性和一些影响伤害率(75 岁以上和残疾人)、风险治理(风险意识、人均受训志愿者人数)和预警...
描述中提到的"潮流计算"是电力系统分析中的关键概念,它涉及到电力网络中功率的分布和流动。潮流计算的目标是确定在特定运行条件下,电力网络中各个元件上的电压、电流和功率的稳态值。4机11节点计算意味着模型包括4...
其次,"修改节点"意味着用户可以改变现有流程中的步骤或决策属性,例如节点的名称、描述、执行条件等。这样的功能使得流程可以根据业务变化快速适应,提高了流程管理的动态性。 "删除节点"功能则允许用户移除不再...
6. **安全性与责任**:描述中提到的“无毒”和法律责任,是指作者提供的代码应该是安全的,但修改后的责任在于修改者。在使用任何外部代码时,都应该进行病毒扫描,并理解代码的工作原理,以避免潜在风险。 7. **...
以下将分别解释标题和描述中提到的几个关键知识点: 1. **节点输入数据**:节点的输入数据通常指的是节点对网络的贡献程度,包括处理交易、存储数据等。如果您的节点输入数据较低或为零,可能的原因有两方面:人为...