1.什么是jbpm?
全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。

工作流引擎作用: 给我们提供流程逻辑的定义方法,给我们提供根据流程逻辑来调度业务对象的功能。能使我们避免在代码中硬编码流程逻辑,因为硬编码的逻辑难于理解和复用,并且非常容易受到变化的影响,维护起来极度困难。
特点:
1. 采用了它自己定义的JBoss jBPM Process definition language (jPdl)。jPdl认为一个业务流程可以被看作是一个UML状态图。jPdl就是详细定义了这个状态图的每个部分,如起始、结束状态,以及状态之间的转换,通过图型化的流程定义,直观地描述业务流程。

2.jBPM的另一个特色是它使用Hibernate来管理它的数据库。Hibernate是目前Java领域非常流行的一种数据存储层解决方案,只要是 Hibernate 支持的数据库, jBPM 也就支持。通过Hibernate,jBPM将数据的管理职能分离出去,自己专注于业务逻辑的处理。
下面了解工作流的一些概念
1.流程定义(ProcessDefinition),基于有向图对业务进行描述,图是由节点(活动)和转移(Transition)构成的,节点是有类型的,节点的类型决定了到达该节点做的事情,不同的节点做的事情不一样,转移描述了一个流向或路径,转移表示了from … to ..的关系。这里相当于我们创建了一个类。

2.流程实例(ProcessInstance),流程实例就是流程定义的具体化,一个流程定义会有多个流程实例,相当于对上边的类进行了实例化。

表达了一个抽象的流程定义,之所以说是抽象,因为它没有表示确切的执行者,比如某借款人被具体化为张三,部门主管成为张三的部门经理李四,而财务明确为王五的时候,这个流程定义就被具体化,成为一个流程实例。此外过程中的相关人员我们称之为参与者Actor,过程需要参与者介入的环节称之为Task,每—个任务在流程实例中的具体化称之为任务实例,从一个任务结点到另一个任务结点转为叫做流转(Transition),在流程中,由程序预先设定的行为如发邮件,我们称之为活动(Action)。

  1. 流程变量(Process variable),流程变量保存了上下文信息,流程变量采用Map结构存储,采用键值对的方式,流程变量是流程实例的一部分,流程变量的生命周期是随着流程实例的消亡而消亡的,流程变量的值在此流程中的任何节点都可以读取和修改(和ThreadLocal类似)。
    4,任务节点(Task),当流程到达该节点将会创建任务实例(TaskInstance)分别分配给参与者,(只要有人参与活动,一般就使用任务节点,因为要分配给人处理)。
    5,起始节点(Start),流程定义中必须有一个起始节点,而且只能有一个。
    6,结束节点(End),流程定义中可以没有结束节点,也可以有多个结束节点。
    7,决策节点(Decision),决策节点是由流程自动决策的,不需要人为干预,该节点相当于if…else ….决策节点可以嵌入java代码或使用脚本语言进行判断。
    8,分支节点(Fork),将一个路径可以分解为多个并发的子路径(并发任务,会签),只有所有的子路径到达联合节点(Join),主路径才会继续执行事件(Event),当流程离开、到达某个节点或执行转移的时候,都会触发事件的。