信息化 频道

jBPM4的高级图形执行 流程构建

  让我们和你一起顺着流程的执行一起走。

  以下是引用片段:
  ClientExecution execution = processDefinition.startProcessInstance();  


  启动一个新执行意味着初始活动被执行。 所以如果一个自动活动是初始活动,这意味着第一个未命名的向外转移会被立刻选择。 这些都发生在startProcessInstance调用的内部。

  然而在这种情况下,初始活动是一个等待状态。 所以startProcessInstance方法会立刻返回, 执行会定位到初始活动'wait 1'。 一个新执行会被定为到'wait 1'。

 

  图 2. 一个新执行会被定为到wait 1。

  然后一个外部触发器会执行signal方法。

  以下是引用片段:
  execution.signal();  


  像上面解释的介绍WaitState, signal会导致选择默认的转移。 转移会把执行移动到automatic 1活动,并执行它。 automatic 1中的Display活动的execute方法, 向控制台打印一行,它不会 调用execution.waitForSignal()。 因此,执行会通过选择automatic 1外部的默认转移进行执行。 在这种状态,signal方法一直阻塞着。另一个需要考虑的方式是执行方法, 像signal会使用客户端的线程 来拦截流程定义,直到到达一个等待状态。

  然后执行到达wait 2, 执行WaitState活动。那个方法会调用 execution.waitForSignal(),这会导致signal方法返回。 线程会返回到调用signal方法 的客户端。

  所以,当signal方法返回时,执行定义到wait 2。

 

  图 3. 一个signal会把执行从initial带到wait 2。

  然后执行会等待一个外部触发器, 像是一个对象(更准确的是一个对象图)在内存中, 直到下一个外部触发器执行signal方法。

  以下是引用片段:
  execution.signal(); 


  第二个调用的signal会直接让执行进入wait 3, 在它返回之前。

  第二个signal让执行进入'wait 3'。

  一个signal会把执行从'initial'带到'wait 2'。

 

  图 4. 第二个signal让执行进入wait 3。

0
相关文章