| 一 
                          : 重要概念 1 : process definition(流程定义):  工作流的流程的完整定义,包括节点和节点之间的走向等关键信息。通常以xml格式提供。一个具体的系统往往是由许多个流程组成的。 
                         2 : process instance(流程实例):  每个process defination生成的业务层的实例。当process instance创建以后,代表流程的执行路径,并被定义到开始节点。 
                         3 : token(令牌):  表示了一个执行的路径,它是运行时产生的。当实例建立以后,令牌也就产生了。  4 : node:  表示流程中的一个节点。  5 : transition:  关联两个节点,用于表示节点的走向  6 : signal:  让一个token执行下一步。process instance也有signal,当用process instance的signal时,其实就是运行process 
                          instance根令牌(root token)的signal. 当token进入到一个node时,node会被执行,并产生一些事件,比如进入、离开节点等,这也是执行业务逻辑的地方。事件由action来表示。  7 : 事件Event  Event反映的是流程执行中的各个时刻。在流程执行中JBPM引擎会在计算下一个状态的时候触发各种事件。一个事件通常和流程定义中的一个元素相关联,比如流程定义本身,节点或者转移。大部分的元素能够触发不同类型的事件,比如一个节点可以触发节点进入事件,节点离开事件。事件其实是和动作连接在一起的。每个事件维护一个动作列表。当JBPM引擎触发一个事件的时候,该事件维护的动作列表中的动作将被执行。 
                         事件类型  在JBPM中事件类型是写死在事件类中的,共有16种:  EVENTTYPE_TRANSITION = "transition"; // 转移 
                          EVENTTYPE_BEFORE_SIGNAL = "before-signal"; 
                          // 发信号前
 EVENTTYPE_AFTER_SIGNAL = "after-signal"; // 
                          发信号后
 EVENTTYPE_PROCESS_START = "process-start"; 
                          // 处理开始状态
 EVENTTYPE_PROCESS_END = "process-end"; // 
                          处理结束状态
 EVENTTYPE_NODE_ENTER = "node-enter"; // 进入节点
 EVENTTYPE_NODE_LEAVE = "node-leave"; // 离开节点
 EVENTTYPE_SUPERSTATE_ENTER = "superstate-enter"; 
                          // 进入超级状态
 EVENTTYPE_SUPERSTATE_LEAVE = "superstate-leave"; 
                          // 离开超级状态
 EVENTTYPE_SUBPROCESS_CREATED = "subprocess-created"; 
                          // 子流程创建
 EVENTTYPE_SUBPROCESS_END = "subprocess-end"; 
                          // 子流程结束
 EVENTTYPE_TASK_CREATE = "task-create"; // 
                          任务创建
 EVENTTYPE_TASK_ASSIGN = "task-assign"; // 
                          任务分派
 EVENTTYPE_TASK_START = "task-start"; // 任务启动
 EVENTTYPE_TASK_END = "task-end"; // 任务结束
 EVENTTYPE_TIMER = "timer"; // 定时器
  二 : 常用 API  ProcessInstance是ProcessDefinition的一个执行实例,想象一下对于订票流程,每个客户的订票动作都会根据订票流程定义而创建一个流程实例,也就是执行实例ProcessInstance.当一个ProcessInstance被创建后,负责执行主路径的token也被创建,这个token就是根token(root 
                          token),根token此时位于流程定义的开始状态start state. 创建执行实例很简单有2种方式 :  1 : 通过 ProcessDefinition 类的 createProcessInstance() 
                          方法  
                           //得到 processDefinition 
  ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("processdefinition.xml"); 
  //通过 processDefinition 创建 出 processInstance 
  ProcessInstance  processInstance = processDefinition.createProcessInstance(); 2 :通过 ProcessInstance 类的  构造函数   
                           //得到 jbpmContext 
  JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); 
  
  //得到 processDefinition 
  ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition("baoxiao"); 
  
  //得到 processInstance 
  ProcessInstance processInstance = new ProcessInstance(processDefinition); |