启动节点start
每个流程里面至少有一个开始节点(到目前为止一个流程只能有一个开始节点),开始节点必须有一个向外的流向,这个流向会在流程启动时执行。
状态节点state
State是一个等待状态节点,流程实例执行到state节点后,会一直处于等待状态,直到外部触发器调用API。State节点和其他的节点不同,它没有任何属性或元素。
让我们看一个用序列连接状态 和转移的例子。
<process name="StateSequence" xmlns="http://jbpm.org/4.4/jpdl">
<start>
<transition to="a" />
</start>
<state name="a">
<transition to="b" />
</state>
<state name="b">
<transition to="c" />
</state>
<state name="c" />
</process>
创建的流程处理实例会停留在状态节点a的位置, 使用signalExecution方法就会触发 一个外部触发器。
decision决定节点
在多个选择中选择一条路径。也可以当做是一个决定。 一个决定活动拥有很多个向外的转移。当一个流向到达一个决定活动时, 会自动执行并决定交给哪个向外的转移。
一个决定节点应该配置成下面三个方式之一。
decision决定条件
decision中会运行并判断每一个transition里的判断条件。 当遇到一个嵌套条件是true或者没有设置判断条件的转移, 那么转移就会被运行。
1.EL表达式进行判断
例子:
<?xml version="1.0" encoding="UTF-8"?>
<process key="decision" name="decision" xmlns="http://jbpm.org/4.4/jpdl">
<start name="start1" g="31,162,48,48">
<transition name="提交" to="exclusive1" g="-37,-34"/>
</start>
<decision name="exclusive1" expr="${node}" g="161,162,48,48">
<transition name="大于2天,小于10天" to="科长" g="-33,-25"/>
<transition name="10天以上" to="主任" g="-21,19"/>
<transition name="小于2天" to="组长" g="-18,-32"/>
</decision>
<task assignee="zuzhang" name="组长" g="322,81,92,52">
<transition name