JBPM基于Spring系统工作流平台整合(一)
 

2010-03-01 作者:wangyisong 来源:javaeye.com

 

1-版本以及系统配置

jbpm版本3.2.3

http://www.jboss.com/products/jbpm

下载后的文件是jbpm-jpdl-suite-3.2.3.zip,解压缩,可以直接通过JBOSS方式启动。 http://localhost:XXXX/jbpm-console。

jbpm-jpdl-3.2.3下各文件夹

|--- db 这里都是些sql定义和数据文件,如果改用其它数据库,可以使用这些资源来创建。jBPM 默认使用的是内存数据库 hsqldb

|--- deploy 用来部署你的应用的包和资源

|--- designer 这里是Eclipse插件,这样你就可以在图形界面来定义你的业务流程

|--- doc 这里是jBPM相关组件的API 文档

|--- examples 这里是些学习的例子

|--- lib jBPM 的类库

|--- server 这里有一个JBoss 服务器,并且包含了本JBoss jBPM引擎,还部署了websale例子

|--- src 这里是JBoss jBPM的源代码

springmodules版本

springmodules http://springmodules.dev.java.net/

选中文档和文件即可。

版本0.9,spring-modules-0.9.zip,将其解压缩,找到spring-modules-jbpm31.jar就是需要的jar包。

系统需要引入的jar包

jbpm-jpdl.jar jpdl功能的核心库,它是一个典型的jar文件,它涵盖对流程定义和运行时流程实例上下文环境的操API。在最简化的业务流程样例中,jPDL将流程定义存储与XML格式的定义文件中,在运行时载入内存,在内存里记录完整的业务实例和执行过程的环境变量,并完成全部操作。在实际应用中,流程信息必须被持久化的存储于数据库中。jPDL使用了Hibernate作为其对象持久化的API。

jbpm-identity.jar包含了身份组件的可选库。

pring-modules-jbpm31.jar jbpm通过spring方式整合的jar包。

application-context配置

通过在application-tontext的配置,将jbpm通过spring方式整合到UNICALL系统中,定义UNICALL系统工作流中间层的接口定义。

<!-- 以下是jbpm工作流引擎相关配置 by wangyisong -->
    <bean id="jbpmConfiguration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">      
              <property name="sessionFactory" ref="sessionFactory" />      
              <property name="configuration" value="classpath:jbpm.cfg.xml"/>
              <!--<property name="createSchema" value="false"/>--> <!-- unused,it can be deploy false, deploy success,then set it -->

              <!--<property name="processDefinitions">
                     <list>
                            <ref local="testProcess"/>
                     </list>
              </property>-->
              <!-- jbpm.cfg.xml 配置JBPM的参数,如邮件服务器地址等,保持默认即可,此文件需加入以SRC目录下。如目录不同,需同步更改此处配置-->
       </bean>

       <bean id="jbpmTemplate" class="org.springmodules.workflow.jbpm31.JbpmTemplate">
              <property name="jbpmConfiguration" ref="jbpmConfiguration" />
       </bean>

    <!-- jbpmDao是系统加入的abstract BEAN,所有的DAO都Extends此BEAN,这样子DAO可以不关心具体的JbpmTemplate是什么,是需要用getTemplate即可操作JBPM-->   
       <bean id="jbpmProcessDao" class="com.unihub.unicall.jbpm.basiclass.impl.JbpmProcessDaoImpl">
              <property name="sessionFactory" ref="sessionFactory" />
              <property name="jbpmTemplate" ref="jbpmTemplate" />
       </bean>
   
    <!-- 工作流中间接口 -->
    <bean id="wfManageService" class="com.unihub.unicall.workflow.service.impl.WfManageServiceImpl">
        <property name="sessionFactory" ref="sessionFactory" />
        <property name="jbpmProcessDao" ref="jbpmProcessDao" />
    </bean>  
    <!-- jbpm工作流引擎相关配置结束 -->

2-整合原理

前提:首先本文的整合指的范围比较大,不仅指系统和JBPM之间的整合,而是对于系统适应不同工作流产品(遵循WFMC标准)的快速整合。

作流平台

1、IBM的Flowmark/MQ Series

2、微软的Workflow Designer for Exchange

3、JBPM-jboss

4、OsWorkFlow-opensymphony

5、普元EOS

6、协同SynchroFlow

7、其它

WFMC定义的流程模型

WFMC描述的通用工作流程产品结构

工作流基本概念

工作流(workflow):工作流就是业务流程的计算机化或自动化

工作流系统(workflow management systems (WFMS)):定义、创建、执行工作流的系统,通过软件定义、创建工作流并管理其执行

WFMC:是由约300家成员参加的组织,基于参考模型定义了一系列的标准。参考模型用例(use case)的形式描述了工作流系统和其他相关部分之间的关系。XPDL是WFMC制定的描述业务流程控制流(control flow )的XML格式规范

BPM:Business Process Management 业务流程管理

工作流引擎(engine) :核心组件,负责生成流程运行时的各种实例及数据,以及监视和管理流程的运行

流程定义(process definition) :预先定义的业务逻辑,对一个流程抽象的对象化定义,工作流的流程的完整定义,包括节点和节点之间的走向等关键信息。通常以xml格式提供

流程实例(process instance) :业务的实际流转过程

节点(node):对流程中的过程环节/行为的抽象对象化定义

参与者(actor) :任务的参与者(可能是人也可能是角色或是组织等)

任务(task) :业务逻辑上,会呈现给参与者处理的元素

任务实例(task instance) :业务实际流转过程中,生成的需要参与者进行参与的实际内容

流转(transition) :连接业务逻辑不同节点的桥梁,也是业务实例进行流转的依据。描述流程中从一个结点到另一个结点的状态转换过程,因此一个转向一定有一个源结点和一个目标结点

工作列表(worklist):根据实际应用的需求,需要展示给参与者的任务实例列表

使用工作流什么

通常来说,作为工作流中间件平台来说,其功能覆盖面较广,但对于整合来说,我们使用的主要如下:

1、流程模型的定义和管理;

2、流程引擎的使用,通俗来说,也就是工单从一个节点到另一个节点的扭转,并且保证运行到正确的节点;

系统和JBPM整合思想

基于spring,以接口方式通过系统工作流中间层调用方式实现扭转。以JPDL模型中的EVENTS方式调用系统接口。统一数据库,事务交由系统统一托管。



专家视角看IT与架构
软件架构设计
面向服务体系架构和业务组件
人人网移动开发架构
架构腐化之谜
谈平台即服务PaaS


面向应用的架构设计实践
单元测试+重构+设计模式
软件架构师—高级实践
软件架构设计方法、案例与实践
嵌入式软件架构设计—高级实践
SOA体系结构实践

相关咨询服务
应用架构设计与构建


锐安科技 软件架构设计方法
成都 嵌入式软件架构设计
上海汽车 嵌入式软件架构设计
北京 软件架构设计
上海 软件架构设计案例与实践
北京 架构设计方法案例与实践
深圳 架构设计方法案例与实践
嵌入式软件架构设计—高级实践
更多...   
 
 
实录 C语言面向对象
主讲:宋宝华
《Linux设备驱动开发详解》的作者
 
实录 基于Tensorflow进行深度学习
主讲:钱兴会
曾任联想集团大数据平台架构师
 
 
 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号