用户操作
[即时聊天] [发私信] [加为好友]
万勇ID:axzywan
4657次访问,排名19552(-5),好友4人,关注者5人。
圣彼得堡国立技术大学计算机硕士,现在上海从事软件开发。
axzywan的文章
原创 16 篇
翻译 0 篇
转载 24 篇
评论 2 篇
最近评论
xiangdian007:头晕
yangjiehuan:thanks very much
文章分类
收藏
    相册
    个人网站
    Secret Garden(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 jBPM开发入门指南(1) 收藏

    新一篇: jBPM开发入门指南(2)  | 旧一篇: 字符集编码

    jBPM开发入门指南(1)

    工作流虽然还在不成熟的发展阶段,甚至还没有一个公认的规范标准。但其应用却已经在快速展开,这说明市场对工作流框架的需求是急迫而巨大的。

    我们公司的后台短信管理系统涉及短信编发、领导层层审核等操作,这是一个比较典型的工作流系统。过去我们用的工作流引擎是 shark ,然后在使用后发现其过于庞大,后台数据库操作频繁而未进行优化,直接导致的后果就是前台操作缓慢。于是经研究决定,将工作流引擎由 shark 换成 jBPM

    jBPM 之前是一个开源软件,后加入 JBoss 组织。正好我们公司也是用 JBoss 的。不过 jBPM 并没有绑定在 JBOSS 上, Tomcat 等也可以使用它。

    jBPM 的正处在不断发展中,做为开源软件的特点,其设计变化往往很大。所以一些过去的资料可能已经不适用了。于是作者根据自己的使用经验,重新整理出这份文档,以备学习参考。

    注:本文使用的 jBPM 版本为 3.1.1

    环境准备

    1、安装JDK

    所有 JAVA 开发第一个需要安装的,没什么好说的。记得把系统变量 JAVA_HOME 设上。

    2、安装Ant

    Ant 是使用 jBPM 必须的一个工具。 jBPM 中的很多操作都要用到 Ant

    安装方法:

    1 )先下载: http://archive.apache.org/dist/ant/binaries/ ,选一个如: apache-ant-1.6.5-bin.zip

    2 )解压到 D:\ant (当然其他目录也可以)。

    3 )设置如下系统变量: ANT_HOME=d:\ant

    4 )把 %ANT_HOME%\bin 加入到系统变量 PATH 中。

    3、安装Eclipse

    Eclipse 不是开发 jBPM 必须的工具,但它是对 jBPM 开发很有帮助的工具,特别是 jBPM 提供了一个 Eclipse 插件用来辅助开发 jBPM 。关于 Eclipse 的安装不赘述了,本文用的版本是: Eclipse3.2

     

    安装 jBPM

    jBPM 的下载地址: http://www.jboss.com/products/jbpm/downloads  

    l           JBoss jBPM jBPM 的软件包

    l           JBoss jBPM Starters Kit  是一个综合包,它包括了 jBPM 软件包、开发插件、一个配置好了的基于 JBoss jBPM 示例、一些数据库配置文件示例。

    l           JBoss jBPM Process Designer Plugin  是辅助开发 jBPM Eclipse 插件。

    l           JBoss jBPM BPEL Extension jBPM 关于 BPEL 的扩展包

    本指南选择下载: JBoss jBPM Starters Kit 。下载后解压到 D:\jbpm-starters-kit-3.1 ,目录下含有五个子目录:

    l           jbpm   jBPM 的软件包

    l           jbpm-bpel 只含有一个网页

    l           jbpm-db 各种数据库 hibernate 配置文件示例,有些还包含了相应的 jdbc 驱动程序。

    l           jbpm-designer  辅助开发 jBPM Eclipse 插件,具体在 jbpm-gpd-feature 子目录中

    l           jbpm-server  一个已经配置好了的基于 JBoss jBPM 示例 .

     

    感觉下工作流

    前面我们说了,在 JBoss jBPM Starters Kit jbpm-server 目录是一个已经配置好的了 jBPM 示例,那么让我们来感觉一下 jBPM 做出的东西吧。

     

    双击 jbpm-server 目录下的 start.bat 文件,启动 JBoss 服务。这时会打开一个 DOS 窗口,启动完成后,日志会不断输出,其中最后一句是“ 13:55:39,937 DEBUG [StaticNotifier] going to wait for (CMD_EXECUTOR, java.lang.Object@1df59bd) ”,这表示 jBPM 在开始工作了,它不断进行轮询。

    打开网页: http://localhost:8080/jbpm/  得到如下画面

     20060713_image001.jpg

    这是一个已经用 jBPM 开发好的用户定单流程,具有下单、审核、估价等流程。它所用的数据库是一个内置的数据库。

    cookie monster 用户登录,选择“ create new web sale order ”可以创建一个定单。如下图所示,在图左边是填写的定单情况,右边一整个定货流程的示意图,红色框表示流程进行到哪一步了。填写好定单好,选择“ Save and Close Task ”,完成定单提交。

     20060713_image002.jpg

    选择右上角的“ Login as another user ”以另外一个用户名 ernie 登录。这时可以看到 ernie 用户的任务列表中多了一项。

     20060713_image003.jpg

    点进去后,显示如下画面。这个示例对中文的支持不好,全都显示成了 unicode 码了。不管这什么多,反正知道是这么回事就行了。在 comment 项填写意见,选 OK 按钮,进入到下一步。如果选择 more info needed 按钮,则打回给 cookie monster 用户修改定单。

     20060713_image004.jpg

    下面的流程,这里就不再赘述了。在这个很标准的工作流示例中,我们基本可以看到 jBPM 的应用范围还是比较广的。而且从这个示例,我们是看不出有 jBPM 的,也就是说 jBPM 在后台起着作用。

    从这个例子,还看不出 jBPM 的优势。不过,如果在一个流程不确定,经常需要变动的项目中, jBPM 的好处将会显然出来。应用 jBPM 后,改变流程只需改变流程描述文件,这将在后面的内容提到。

    这是一个已做好的示例,接下来我们将仿造这个实例来开发一个请假流程。

    作者简介
    陈刚,广西桂林人,著作有《Eclipse从入门到精通》
    您可以通过其博客了解更多信息和文章:http://www.chenGang.com.cn
      

    要知道为什么需要工作流引擎,我们首先要知道如果没有工作流引擎,那么究竟会发生什么事情?

    设想一个典型的业务流程场景:公文流转。假设有一个请假流程,需要经过张三、李四、王五三个人的审批之后,才能结束,那么你作为程序员,你会如何做呢?

    毫无疑问,首先第一步,你需要整理一下思路,看一看在这个请假模块中,你需要做哪些最基本的功能:

    第一、   创建请假单

    第二、   将请假单提交给张三

    第三、   张三审批请假单之后,将请假单交给李四

    第四、   李四审批请假单之后,将请假单交给王五

    第五、   王五审批请假单之后,准假,结束

    第二步,现在是不是得看一看这里面有哪些概念,以便于进一步的设计?用户、请假单,是这个需求中两个基本的概念。用户包括:用户名、用户密码属性;请假单包括:请假者、请假事项、请假开始时间、请假结束时间属性

    第三步,考虑到要实现审批功能,在请假单和用户之间还会有另外一个关联:审批。

    一个请假单可以经过多个用户的审批,而一个用户当然也可以审批多个文档,因此这是一个非常明显的多对多关联:

    第四步,现在我们来考虑一下审批提交功能的实现:

    1、将请假单提交给张三时:

       if 请假单是新建的 then 设置请假单的审批者为 张三

    2、张三将请假单提交给李四时:

       if 请假单目前的审批者是张三 then 设置请假单的审批者为 李四

    3、…… 其它功能依次类推

    在做每一步操作的时候,都需要做一些前置条件的判断。如果不使用流程引擎技术,则流程逻辑将被硬编码于程序之中,使得一旦流程发生变化,维护起来异常困难。所以,为何需要流程引擎,也就不言自明了。流程引擎存在的理由是对这些容易变化的业务流程进行封装,为此,我们必须找到某种描述业务流程的手段,在JBPM中,这个称为JPDL(业务流程定义语言)。流程引擎同时也会给我们提供一些稳定的接口,我们的程序只要调用引擎的这些接口操作流程即可。

    发表于 @ 2008年04月13日 15:19:00|评论(loading...)|收藏

    新一篇: jBPM开发入门指南(2)  | 旧一篇: 字符集编码

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 万勇