jbpm中最重要的概念,应该是令牌(Token)和信令(Signal)技术,这个在计算机网络中到处可见 的技术,在工作流引擎中也大放异彩.
我们看如下代码: //pd是process definition,pi是process instance ProcessInstance pi = new ProcessInstance( pd ); //启动流程 pi.start(); //得到根令牌 Token token = pi.getRootToken(); //发信令 token.signal();
Token的signal方法也可以传入transition参数,这个方法把信令发送给Token,这样,令牌将被 激活,并沿指定的transition离开当前的状态(如果没有指定transition,将沿缺省的transition 离开当前状态).
jbpm是怎么实现的呢?其实很简单: 1)Token记录了当前的状态,只有当前的状态(或称节点)拥有该令牌 2)向TOKEN发signal后,当前状态收到该signal 3)当前状态把令牌传给signal中指定的transition 4)transition收到令牌后,不强占,马上把令牌传给下个状态. 5)根据令牌的位置,流程的状态已经发生改变.
|