首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

《partner4java 叙说jBPM4》之第一步:jBPM4概念 & helloworld

2013-01-23 
《partner4java 讲述jBPM4》之第一步:jBPM4概念 & helloworld(《partner4java 讲述jBPM4》仅为技术储备 -- 本

《partner4java 讲述jBPM4》之第一步:jBPM4概念 & helloworld

(《partner4java 讲述jBPM4》仅为技术储备 -- 本人并没有jBPM4实战方面丰富的经验;学习本内容最好有Hibernate的基础)

代码下载地址:文章中贴出的代码可能有所改动,以下载地址为准http://download.csdn.net/detail/partner4java/4998228

工作流:
工作流就是一系列相互衔接、自动进行的业务活动或任务。我们可以将整个业务过程看作是一条河,其中流过的河水就是待审核的表单。

工作流要解决的主要问题是:
为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。

为什么需要工作流:
1、规范公司流程:特别是国家单位,权利重叠、办事效率的低下,导致一些工作处理起来成本很高。
2、节省业务成本:比如我们要开个票据,传统需要拿着各种单子找各级领导签字,领导不在怎么办?
3、发挥计算机的优势:过程可监控 -- 便于对执行过程的跟踪和监控;数据可管理 -- 便于对数据进行检索、分析。

为什么选择jbpm4:
jbpm创始人Tom Baeyens,jBPM在2004年10月18日,发布了2.0版本,并在同一天加入了JBoss。当发布4.0版本时进行了很大的改进,大部分代码进行了重写。
但是,10年左右Tom Baeyens离开了JBoss(由于对后续版本5的分歧),后推出的5.0版本和前面版本完全不同(架构和代码都是重写的)。所以,我们这里学习的是Tom Baeyens在JBoss贡献的最终版4.4。

jbpm的核心为两部分:
1、描述工作流程;
流程定义可以看做静态的业务过程模块。流程定义由活动(Activity)和转移(Transition)组成。
活动的行为被封装在该类型互动定义的实现中,各种类型的活动定义组成了整个流程结构。

(如果你用过visio或者UML,你会想到最简单的方式就是能够画出来,我们这里选择JBPM自己的流程语言jPDL。)

2、处理工作流程。
我们定义的流程,需要被实例化(或加载),因此我们要创建流程实例;
当流程实例在执行中时,我们要控制和监控流程,以确保业务流程执行在监控之中;
当流程实例执行完毕,jBPM4会将其归档到“历史流程”中去,从而提高运行中流程实例的执行效率,而我们需要从历史流程中进行数据分析以优化和重组业务。

(白话总结就是:我们通过XML这种形式的文件定义流程;然后通过java模块解析处理流程)


整体模块:

《partner4java 叙说jBPM4》之第一步:jBPM4概念 & helloworld

PVM:
jBPM4在流程虚拟机(PVM)技术的基础上,能够支持多种流程定义语言,目前已经支持的流程定义语言有:
·jPDL
·BPEL
·Seam PageFlow


jBPM4 PVM(Process Virtual Machine,流程虚拟机)的设计初衷是通过实现接口和定制插件等方式兼容多种流程定义语言和流程活动场景,为“世界上”所有的业务流程定义提供一套通用API平台。
那么,无论是需要对jBPM原有流程定义语言进行扩展,或者重新实现一套专用的流程定义语言,都可以通过实现PVM指定的接口规范完成了。


JPDL:

可以这么说,jPDL(jBPM Process Define Language,jBPM流程定义语言)是jBPM4独有的、最重要的“资产”。
jPDL的设计目标是尽量的精简和尽可能地对开发者友好,即提供所有您期望从业务流程定义语言中得到的同时,也可以很“简练”地描述业务流程的定义和图形结构,最终使得业务分析师和流程开发者能使用“同一种语言说话”、极大地减少了他们之间的交流障碍。

工作流(系统)主要概念:
·流程定义:预先定义的业务流转逻辑
·流程实例:业务的一次实际流转过程
·参与者:任务的执行者
·活动(任务):组成流程定义的节点
·活动实例:组成流程实例的元素
·流转:从一个节点到另一个节点这一行为
·工作列表:当前需要办理的任务集合
·工作流引擎:工作流的核心组件,对流程实例、任务实例以及其状态进行管理

接下来我们学习的基本思路为:
1、首先展示一个基本的工作流程开发。
2、流程定义语言、Service API (这两部分的内容会交叉学习。学习这部分内容必须实际动手。)


第一部分:展示一个基本的工作流程开发
(学习内容:对jBPM4的开发流程有大致了解,能够认识到需要学习的内容模块,对jBPM有一个大体的认识。具体细节技术会在下面章节中学习。当然,如果你动手能力比较强,也可以先打随着一遍,对jBPM4有更清晰的认识。)

场景:我们开发一套请假流程,主要分为登录、发起请假、处理请假等。

helloworld开发流程:

《partner4java 叙说jBPM4》之第一步:jBPM4概念 & helloworld


第一步:部署环境

1、我们需要图形化的形式展示jBPM4的强大,所以首先下载tomcat http://tomcat.apache.org/download-70.cgi

2、然后需要下载jBPM4的相关jar:

(后面的内容都是基于jbpm-4.4,下载地址http://sourceforge.net/projects/jbpm/files/jBPM%204/)

3、安装eclipse插件gpd,插件目录jbpm-4.4\install\src\gpd(用于完成“描述工作流”)

4、创建web工程“hello_jbpm”

5、拷入jbpm-4.4\examples\src的配置文件到类路径

《partner4java 叙说jBPM4》之第一步:jBPM4概念 & helloworld

修改jbpm.hibernate.cfg.xml文件:




第三步:发布描述流程

也就是把我们第二步定义的流程图(jpdl),发布进jBPM4的容器。或者说把一个XML定义交给jBPM4,解析成对应的entity对象。

发布非常简单,我们这里会第一次接触到ProcessEngine,这相当于我们的顶级工厂类。它负责创建我们用于管理和执行流程的服务类。


end&辅助功能结束

·登录后,展示可以办理业务列表,也代办业务列表:

随便输入一个用户,如partner4java提交,转到/leave/list

/leave/list界面为所有级别用户所有。

/leave/list对应的Servlet为:LeaveListServlet,主要工作分为两部分可发起业务列表,待处理业务列表。

首先我们需要继续完善LeaveExecutionService,添加查找用户所有代办任务的方法(可可发起业务列表需要方法上面JpdlDeployManager已经给出):


·点击请假(leave),进行开启一个新流程调用,然后跳转到填写表单界面,并提交:

展示做完之后就需要完成请假处理工作,也就是“leave/start”地址:



那么接下来需要处理提交:

首先提交业务处理


那么接下来我们完成点击经理审批(或主管审批)展示的界面:



处理展示已经完成,那么接下来就需要处理点击按钮:

处理按钮非常简单,只需要接收任务并处理任务:


热点排行