`
kimmking
  • 浏览: 543681 次
  • 性别: Icon_minigender_1
  • 来自: 中华大丈夫学院
社区版块
存档分类
最新评论

工作流技术jbpm学习总结

阅读更多

题记:某部门领导有天突发奇想,把我们几个人叫过去,曰:最近出去开会,老有人推销自己的工作流产品,说的这好那好,你们几个给我研究研究。正好刚做完的xxx子系统里有一个申请审批的流程,你们按这个需求,把系统改成jbpm工作流试试。一定要搞清楚,引入工作流能不能减少我们开发部门的工作量。

于是,4个啥也不懂的人,忙碌的两周(实际时间大概是一周不到,因为每个人都一直有其他项目的工作)开始了。

也许是我们几个的水平不行,最后写了这么一个报告,结论是一般都会增加工作量

 

JBPM工作流小结

 

         经过两周的学习和讨论,我们了解了工作流的概念、并逐步分析和熟悉了jbpm工作流的特点和应用,现对jbpm工作流总结如下。

 

关于JBPM工作流

1.        工作流

       工作流是一项分离业务操作和系统流程的技术。工作流由实体(Entity)、参与者(Participant)、流程定义(Flow Definition)、工作流引擎(Engine) 四部分组成。

l  实体是工作流的主体,是需要随着工作流一起流动的物件(Object)。例如,在一个采购申请批准流程中,实体就是采购申请单;在公文审批流程中,实体就是公文。

l  参与者是各个处理步骤中的责任人,可能是人,也可能是某个职能部门,还可能是某个自动化的设备;

l  流程定义是预定义的工作步骤,它规定了实体流动的路线。它可能是完全定义的,即对每种可能的情况都能完全确定下一个参与者,也可能是不完全定义的,需要参与者根据情况决定下一个参与者;

l  工作流引擎是驱动实体按流程定义从一个参与者流向下一个参与者的机制

      前三个要素是静态的,而第四个要素是动态的,它将前三者结合起来,是工作流的核心组成元素。

 

2.        JBPM

       jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统。

n  jBPM的一个特色是采用了它自己定义的JBoss jBPM Process definition language (jPdl)jPdl认为一个商务流程可以被看作是一个UML状态图。jPdl就是详细定义了这个状态图的每个部分,如起始、结束状态,状态之间的转换等。

n  jBPM的另一个特色是它使用Hibernate来管理它的数据库。Hibernate是目前Java领域最好的一种数据持久层解决方案。通过HibernatejBPM将数据的管理职能分离出去,自己专注于商务逻辑的处理。

 

JBPM工作流的应用分析

jbpm工作流步骤:

1加载(发布)流程定义

这个意思是,我们通过jbpmdesigner插件,或者是用其他工具,制定出processDefinition

,然后将其加载到应用中的过程。这个加载可以是写入内存中,或者是直接写入数据库等。

2启动流程

创建流程实例的过程。具体创建实例的方法有多种,可根据自己的需要自行选择。

3处理任务

在流程流转的过程中,JBPM引擎会为我们生成任务的实例,我们就需要针对这些任务实例来进行处理,然后结束这些任务实例,并推动流程的流转。

4记录流程的相关状态

记录流程状态这点包括且不限于以下内容:

1)流程实例的开启

2)任务实例的创建

3)任务实例的开始执行

4)任务实例的结束

5)流程实例的结束

 

使用jBPM的优势

将业务流程复杂的系统结构清晰话,提供系统运行时的灵活性

1、  解耦系统业务流程

流程独立,可以使用工具定义和建模,利于跟踪、监控、管理、调度、优化和重整

2、  提高系统的灵活性

系统流程定义生产环境的修改和调整,用户和外部工具交互,任务的动态分派

 

使用jBPM时的问题

1、  对当前任务的条件查询

jBPM不提供灵活进行条件查询的api,如果需要,可以自定义hibernate查询,从jbpm相应的数据表中查询任务数据。但需要对jBPM机制比较了解,而且有些复杂条件难以用jBPM本身的信息查到。

2、  当前任务的分页

在上一问题的基础上,使用hibernate分页。

3、  统计各个流程实例的状态

可以通过流程实例,在jbpm系统表中查询,也可以在业务表的相应数据上加上状态列来统计。前一个比较麻烦,后一个比较直观,但不会因使用jBMP而使用工作量减少。

4、  工作流数据与业务数据结合

一般通过在流程实例中添加相应的一笔数据的标识作为变量来关联。也可以有针对性的扩展jbpm的系统表来实现与业务的关联性。

5、  修改流程后的历史数据兼容性问题

Jbpm工作流流程定义有版本的概念,修改流程后要重新发布,与旧的流程不是一个同一个版本。系统可以区别开新旧流程来。

结论

1、  工作量

初步的结论是:引入工作流技术不会明显减少系统开发工作量。相反,在一般情况下,会增加一部分工作量。

如果项目流程比较少,而且比较固定,则使用工作流技术会明显增加开发工作量。

如果项目流程多,而且比较复杂,则使用工作流技术会使项目结构层次更加清晰、更具有扩展性,根据需求有可能要修改和扩展现有开源工作流类库与数据库结构,也会增加额外的工作量。但权衡之下,利大于弊。

2、  关于业务数据与jBPM本身的数据

理论上说,如果使用jBPM,可以将所有业务数据放到jBPMcontext中管理,不再维护业务数据表。但这样的结果是在流程之外的环境(比如在统计报表中)中无法容易的得到业务数据。所以一般会建立业务数据表,我不使用工作流时一样,然后让jBMP从业务数据表中得到业务数据,而不在jBPM中保留业务数据。因此,使用jBPM后,在业务数据方面基本不会减少工作

 

3、  工作流学习成本

工作流本身的概念较复杂,使用jbpm,需要学习其工作流的定义和结构,流程定义工具和语言、了解其数据结构。与其它工作流产品(如Shark)相比,jBPMJava开发人员来说学习较低成本,在做流程复杂的项目时,学习成本可以接受。

 

4、  系统用户和角色与工作流整合

流程的流转和任务的分派完成,都是用户在控制,所以需要将用户、角色和权限整合到jbpm工作流中。

 

5、  系统业务的整合和调整

将流程抽取后,原本连续的业务处理变成一个个的任务节点。需要在每个业务相关处理处添加工作流流程控制、在每个节点处实现相关的业务和流程切入点。

 

 

6、  适用范围

Jbpm工作流适用于:

n  项目流程比较多,流程复杂的项目。

n  系统运行和维护、升级时,流程可能需要修改、调整和跟踪、控制的项目。

 

工作流使用示例

 ----------  xxxxx -----------此处省略了一些

分享到:
评论
19 楼 thomas0104 2012-05-25  
2、  关于业务数据与jBPM本身的数据
个人觉得这点是很重要的,无法完全放弃业务数据。
18 楼 alexandrae2008 2011-08-17  
李俊林 写道
wubo19842008 写道
jbpm这东西处理复杂的业务在我看来有点吃力,虽然怎么都可以实现,但是做出来的东西很不理想,对于的中国的国情,很多事情都是简单事情复杂化,所以这个洋玩意有时候很难胜任中国国情。

不是很明白这段话,有人说越复杂的业务流程,jbmp越有优势,怎么到这里是越复杂就越吃力呢?能举例说明下么

越复杂越难把握啊...只是理解workflow/Lifecycle/Object/Participant就够麻烦了...
更多的公司还需要对同一份文进行版本/TeamTemplate控制,及对应Model群组的设定,麻烦的很..
17 楼 alexandrae2008 2011-08-17  
其实workflow万变不离其宗的,JBPM的优点也就在开源了.比较其实用性,我还是比较推荐PTC的Windchill,不过Windchill太贵..
16 楼 李俊林 2009-10-22  
wubo19842008 写道
jbpm这东西处理复杂的业务在我看来有点吃力,虽然怎么都可以实现,但是做出来的东西很不理想,对于的中国的国情,很多事情都是简单事情复杂化,所以这个洋玩意有时候很难胜任中国国情。

不是很明白这段话,有人说越复杂的业务流程,jbmp越有优势,怎么到这里是越复杂就越吃力呢?能举例说明下么
15 楼 85249551 2009-10-18  
看了楼主的介绍,对JBPM有了一些了解,有空再学习下
14 楼 ccflow 2009-10-17  
工作流是很专业的东西,深,广,大,复杂。 专业性强,外包是个很好的选择。

肺腑之言。
13 楼 linliangyi2007 2009-07-29  
不错,楼主还是很有心得的。
12 楼 lovit 2009-07-29  
而且能在以后的维护中,可以在图形化窗口中,可以很清楚的看到业务审批流向(不用一行一行代码看),方便维护。
11 楼 lovit 2009-07-29  
工作流的引入,解决了部份业务的逻辑,并能在以后能按企业需求而快速调整等。
10 楼 elvishehai 2009-07-29  
理伦太多了,
9 楼 f32647908 2009-03-30  
jbpm在中国需要动大手术,而且一般软件,我想最好别用jbpm,因为流程少、需求变化小,系统比较稳定,直接自己写效率比用jbpm高。当然jbpm用熟练了后,适当使用还是很爽的,毕竟人家速度快、规范。呵呵,自己考虑吧,刚入门的时候你就把jbpm当做一个类库!工具包,就ok了!
8 楼 wubo19842008 2009-03-19  
jbpm这东西处理复杂的业务在我看来有点吃力,虽然怎么都可以实现,但是做出来的东西很不理想,对于的中国的国情,很多事情都是简单事情复杂化,所以这个洋玩意有时候很难胜任中国国情。
7 楼 zhongli 2009-02-24  
很多时候要从市场考虑,你说你有个工作流引擎,客户的对你的看法都不一样
6 楼 LifeFree 2009-02-24  
写得不错,比较实在。
5 楼 intelchen 2009-02-23  
呵呵,写的挺好的。
主要是和业务系统的结合。
前期代码量会比较大。
4 楼 sevencolor 2009-01-13  
总结不错,学习了
3 楼 tiyi 2009-01-09  
说实话。我也不明白优势。可能是要投入到 工作流 之海 的系统开发后,才会对引擎这一东西有所依赖吧。
2 楼 kimmking 2009-01-09  
rasonyang 写道
使用JBPM,是先苦后甜。
不能看眼前的工作量。



开发部门领导关注的只有工作量。

1 楼 rasonyang 2009-01-09  
使用JBPM,是先苦后甜。
不能看眼前的工作量。

相关推荐

    jbpm-2.0-beta1.zip_java 工作流引擎_jbpm_jbpm-demo_工作流_工作流引擎

    总结来说,jbpm是一个强大的Java工作流引擎,具有流程建模、执行和管理的全面功能,适合用于构建企业级工作流系统。jbpm-demo提供了丰富的示例,帮助开发者快速上手,而jbpm-2.0-beta1的压缩包则包含了实现这些功能...

    吉林大学Java工作流JBPM学习笔记

    在本篇吉林大学的学习笔记中,我们将聚焦于JBPM,这是一个广泛使用的开源Java工作流管理系统,它提供了一整套工具和服务来支持流程的建模、部署和执行。 JBPM是Business Process Management(业务流程管理)的缩写...

    工作流jbpm---学习文档+简单实例项目

    对于希望掌握jbpm的开发者而言,这是一个宝贵的参考资料,可以帮助他们快速上手,并在实际项目中运用工作流技术。通过深入学习和实践,开发者不仅可以理解工作流管理系统的基本运作,还能提高自己在企业级应用开发中...

    Java四大主流开源工作流引擎分析Shark,osworkflow,jbpm,jflow

    本文将深入分析四个主流的开源工作流引擎:Shark、osworkflow、jbpm和jflow。 首先,Shark是Enhydra项目的一部分,Enhydra是一个涵盖广泛的技术栈,包括J2EE应用服务器、对象/关系映射工具以及工作流引擎等。Shark...

    工作流基础之JBPM

    工作流基础之JBPM ...总结来说,jBPM是一个强大且灵活的工作流解决方案,尤其适合那些需要频繁调整业务流程的企业。通过学习和掌握jBPM,开发者能够更有效地构建和管理企业级的业务流程,提升工作效率和服务质量。

    Jbpm工作流引擎使用例子

    总结来说,"Jbpm工作流引擎使用例子"为我们提供了学习和实践Jbpm工作流引擎的实例,涵盖了流程设计、实例管理、Java和Hibernate集成等多个方面。通过这个例子,开发者能够更好地理解和运用Jbpm来构建复杂、灵活的...

    工作流入门jbpm开发指南

    对于希望深入了解和应用工作流技术的初学者来说,jbPM是一个理想的学习平台。本指南将带你一步步走进jbPM的世界,帮助你掌握jbPM的核心概念和实践技巧。 一、jbPM简介 jbPM是一个基于Java的业务流程管理系统,它...

    JBPM4 学习使用总结

    在深入学习和使用JBPM4的过程中,我们可以了解到其核心特性和应用场景,从而更好地理解和应用工作流技术。 ### 一、JBPM4核心概念 1. **工作流定义(Process Definition)**:工作流定义是业务流程的蓝图,用BPMN...

    JBPM工作流经典例子

    总结来说,JBPM是一个强大而易用的工作流框架,通过"JbpmTest"这样的入门示例,开发者可以快速掌握其基本用法,并逐步探索更高级的应用。实践是掌握技术的最佳方式,所以动手试试吧,你会发现JBPM并没有想象中那么难...

    Spring与JBoss JBPM工作流集成开发指南

    工作流技术的主要特点在于能够自动化包含人类和机器活动相结合的过程,特别是那些需要与IT应用程序、工具交互的过程。此外,工作流技术还可以应用于工业和制造业。 具体的应用场景包括但不限于: - 公司内部的请假...

    工作流与JBPM开发实例精解.docx

    ### 工作流与JBPM开发实例精解 #### 一、引言 在软件开发领域,特别是企业级应用开发中,工作流管理扮演着极其重要的角色。它可以帮助组织优化业务流程,提高工作效率。JBPM作为一款开源的工作流引擎,为开发者...

    JBPM3学习笔记

    JBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了对业务流程的建模、部署、执行和监控的能力。在本文中,我们将深入探讨JBPM3的核心概念、功能和使用方法,以帮助你更好地理解和应用...

    Jbpm 工作流开发

    **JBPM工作流开发** JBPM(Java Business Process Management)是一种开源的工作流管理系统,它提供了对业务流程的建模、部署...《JBPM用户指南》和提供的其他文档和代码示例,是学习和实践JBPM工作流开发的重要资源。

    struts2+spring+hibernate+jbpm工作流实例

    这个实例不仅可以帮助学习者理解这些技术的用法,还可以作为模板,用于构建其他类型的工作流应用,如请假审批、报销流程等。 总结来说,这个实例展示了如何利用Struts2处理用户交互,Spring进行依赖管理和流程整合...

    jBPM4.4Pssh.rar_jbpm-4.4_ssh jbpm_工作流OA

    总结来说,"jBPM4.4Pssh.rar" 提供了一个关于jbPM 4.4与SSH整合的实践案例,对于想要了解和掌握Java工作流管理以及SSH框架集成的开发者来说,是一个宝贵的学习资源。通过深入研究和实践,你可以提升在企业级应用开发...

Global site tag (gtag.js) - Google Analytics