1 什么是工作流

BPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源代码项目,使用它要遵循 ASL(Apache License Version 2.0)和EULA(JBoss End User License Agreement)协议。

jBPM在2004年10月18日,发布了2.0版本,并在同一天加入了JBoss,成为了JBoss企业中间件平台的一个组成部分,它的名称也改成JBoss jBPM。

工作流管理联盟(WFMC)把工作流定义为:全部或部分由计算机支持或自动处理的业务过程。

工作流管理系统(Workflow Management System,WFMS)用来支持流程定义、管理和执行一批设定好的工作流程。这套系统的目标是:管理工作流程以确保工作能够在正确的时间内被所期望的人执行。在自动化进行的业务过程中“插入”人工的干预,是工作流系统开发者的主要工作内容。

1.1 在企业中的应用

工作流技术的主要特点是:过程的自动化处理(包含人与系统交互为基础的人工活动)。

目前被广泛应用于办公环境中,比如:

  1. 协助涉及多人或多部门的任务的执行。
  • 工作流管理系统会生成并处理任务的电子表单,让各个部分的人员可以通过表单实现交互,从而参与到整个业务流程中。
  • 对于需要 ISO 或 CMM 认证的组织,使用工作流系统能够显著地提升“流程规范化”的运转速度,从而提升生产效率。
  • 工作流管理系统能够方便地通过流程建模来实现业务过程的定义以及自动化执行。
  1. 作为企业应用集成(Enterprise Application Integration,EAI)的平台:
    大型企业一般都运行着各种各样的异构应用以及数据,而大部分的工作流管理系统能够结合专门的业务应用,从而构建出统一的 EAI 平台。

  2. 嵌入式工作流引擎:工作流引擎可作为一个组件,嵌入到业务信息系统中,这样可以增强应用的可扩展性与系统的可维护性。

引入工作流管理技术可以:

  • 提高运转效率 - 业务流程在运行过程中会暴露出某些不必要的步骤。
  • 较好的流程控制 - 执行标准的工作方法以及跟踪审计。
  • 方便重组业务流程。
  • 促进业务改进 - 使业务更趋向于流畅与简单。

1.2 从开发者的角度来看待工作流技术

假设有这样的一个流程:

订货流程

如果不使用工作流,那么我们将要做这些工作:

  • 每个活动节点都需要开发交互界面和后台处理程序。
  • 每一次活动的流转都需要硬性判断下一步活动节点和办理人。
  • 每一次操作都需要维护业务数据以及流程相关数据。
  • 一旦出现业务变更,那么就需要大面积地修改代码,有时甚至需要重新开发以及适应新的需求。
  • 监控、分析流程的处理情况也需要开发且成本较高。

使用了工作流的应用系统

使用了工作流的应用系统,有这些明显的优势和好处:

  • 工作流会维护所有涉及流程流转的数据。
  • 提供流程设计的可视化工具。
  • 工作流引擎是核心,它负责解释流程定义、管理流程数据、计算并驱动着流程实例的运行。它提供很多有用的 API 接口可以供客户端应用程序或外部业务系统调用。可以使用这些 API 来监视流程实例的执行过程、挂起或恢复流程实例的运行;还可以分析出工作完成的效率、找到业务流程的瓶颈等功能。

综上所述,使用工作流技术有这些好处:

  • 降低开发风险 - 可以让业务分析师和开发人员使用统一的流程术语进行沟通交流。
  • 流程代码的集中统一管理。
  • 加速开发 - 流程的开发工作都由工作流框架接管了,所以开发会更快、出错更少,从而让系统变得更容易维护。
  • 对迭代开发的支持 - 通过版本号的管理,流程可以重新设计并且很容易部署。

2 工作流管理系统参考模型

工作流管理联盟(WfMC,Workflow Management Coalition)是专门从事工作流问题的研究与指导工作的组织,他们提出了一个工作流管理系统的参考模型。

工作流管理系统参考模型

最重要的就是工作流引擎,它是整个工作流管理系统的心脏:

  • 解释流程的定义。
  • 组织调度流程实例,并推进流程的流转过程(条件分支、分支聚合、子流程)。
  • 处理任务的分配、接受或提交行为。
  • 管理其他的调用接口。

流程定义工具

使用它来设计业务流程,一般来说是 XML 格式。例如 jBPM4 的流程定义语言是 jPDL,它就是使用 XML 格式定义的。可以把它理解为产生 XML 的图形化设计建模工具。jBPM4 使用的是基于 Eclipse 的插件来实现这个工具的。

工作流客户端应用

我们填写表单进行处理的任务,可以通过这个接口来实现与工作流引擎的交互。

执行外部应用

工作流引擎通过这个接口,去执行第三方系统的应用(例如报表系统等),让这些系统也参与到所定义的工作流程中。

其他工作流应用接口服务

处理工作流管理系统之间的工作交换,例如流程实例的转移、工作任务外包等工作。WfMC 设计这个接口的初衷是想通过这个接口来连接各个不同的工作流引擎和系统。想法是好的,只是呵呵 :)

管理与监控工具

主要用来搜集管理信息,比如流程实时监视与控制工具,以及效率分析和流程覆盖面分析等商业智能工具,这为提升企业的管理能力、优化重组业务流程、分析企业内部的工作效率瓶颈提供了重要的量化数据支持。

3 jBPM 框架

3.1 jBPM 的历史

jBPM(java Business Process Management),是一种基于JavaEE 的轻量级工作流管理框架(Framework)。

jBPM 项目于 2002 年 3 月由Tom Baeyens发起,2003 年12 月发布1.0 版本。jBPM 在 2004 年 10 月 18 日,发布了 2.0 版本,并在同一天加入了JBoss 组织,成为了 JBoss 企业中间件平台的一个组成部分,它的名称也改成 JBoss jBPM。随着 jBPM 加入 JBoss 组织,以及 JBoss 被 RedHat公司收购,jBPM 也进入一个全新的发展时代,它获得了大量的社区和商业支持,因此发展前景十分光明。

jBPM4 引入了 PVM(流程虚拟机)的设计理念,为 jBPM4 的"无限"扩展和集成提供了有力的底层功能支持。

3.2 jBPM 的优势

经过这么多年的发展,JBoss jBPM 已经成为一流的开源工作流产品:

  • 每月超过20 000 次的下载量。
  • 极度活跃的用户论坛和开发者论坛。
  • 频繁更新 Web 站点和 Wiki。

jBPM 不仅有着开源社区的支持,同时作为 RedHat/JBoss 的子项目,也具有一定的商业支持保证。所以它可以作为众多项目型公司低成本工作流应用解决方案。

jBPM 是 JBoss 旗下的子项目,JBoss下还包括有 Seam(JavaEE开发框架)、Drools(规则引擎)、 Hibernate(ORM持久化框架)等众多领域的优秀开源项目。由于同属于一个产品家族,所以它们能与 jBPM 完美结合,相互之间都留有接口,方便开发者对业务进行扩展,也为 jBPM 提供更多的可延伸价值。

jBPM 还是 JBoss SOA 平台的一个重要组件,与 JBoss Drools 规则引擎和 JBoss ESB 企业服务总线一起,可以为用户提供全面、完整的 SOA 解决方案。

jBPM 是一个支持"嵌入式"的业务流程管理产品,理论上可以运行在任何JavaEE应用服务器之上,也可以运行在桌面应用中。jBPM4 在流程虚拟机(PVM)技术的基础上,能够同时支持多种流程定义语言。

3.3 jBPM4 的特点

1 嵌入式的工作流引擎

开发者可以把 jBPM4 框架作为业务流程管理的基础,在此基础上开发自己独特的业务流程管理模块和功能。在部署时,只需要把 jBPM4 作为项目的依赖库发布就可以咯 O(∩_∩)O哈哈~

2 可插拔的体系架构

jBPM4 采用了模块化的架构设计,采用了 IOC(依赖注入)的设计理念,各模块之间可以比较方便地解除耦合或替换不同的实现,例如持久化、事务处理、身份认证、日志服务等,都是由可选模块实现的。jBPM 的可插拔体系架构,为开发者灵活选择 jBPM 的功能、自定义已有功能和拓展新功能提供了"无限可能"。

3 易扩展的流程语言

开发者还可以通过定制新的活动类型或者完全重新设计一种新的流程定义语言来描述特定领域的业务流程,满足独特环境下的业务需求。

4 技术方面的特点

  • jBPM4 的模型是基于UML Activity Diagram,这些需求人员和开发人员都能通过流程图来理解业务流程。
  • jBPM4 提供了可定制的 Event - Listener 观察者模式来处理事件触发,以辅助活动扩展的处理。
  • jBPM4 提供了灵活的 EL 条件表达式机制,来辅助条件解析、简单业务逻辑的脚本计算与处理。
  • jBPM4 提供了可扩展的 Task 及任务分配机制,来满足复杂的人工活动处理。
  • 借助 Hibernate ORM 的优势,jBPM4 能够运行在几乎所有的数据库系统
    上。

什么是JBPM工作流相关推荐

  1. java activiti jbpm_activiti和jbpm工作流引擎哪个比较好?

    原标题:activiti和jbpm工作流引擎哪个比较好? 在常用的ERP系统.OA系统的开发中,工作流引擎是一个必不可少的工具.之前在选择工作流引擎时曾经在activiti和jbpm之间有过比较,当时 ...

  2. JBPM工作流入门总结

    关于JBPM工作流 1.工作流 工作流是一项分离业务操作和系统流程的技术.工作流由实体(Entity).参与者(Participant).流程定义(Flow Definition).工作流引擎(Eng ...

  3. 宅急送 项目第八天 JBPM工作流框架

    项目第八天和项目第九天 学习 JBPM 理论部分 项目第十天 权限管理模块 项目第十一天 项目第十二天 JBPM 应用 1. 工作流框架概述 1.1. 什么是工作流 工作流(Workflow),就是& ...

  4. 宅急送项目的第七天笔记!(JBPM工作流)

    宅急送项目的第七天  三个主要功能模块: 基础设置. 取派业务.中转配送业务 基础设置: 标准管理.取派员管理.区域设置.分区设置.定区管理 取派业务: 业务受理.工作单快速录入(追单.销单). 工作 ...

  5. 宅急送项目的第七天笔记!(JBPM工作流和介绍 -- 权限管理模型)

    一.回顾第一天核心内容  1. JBPM是什么? 为我的项目带来什么?  工作流, 就是将业务流程实现自动化,非人工方式,控制任务的执行 -------- 所有业务流程 执行信息 都可以存放到数据库 ...

  6. jBPM 工作流引擎可视化编辑器

    What is jBPM? JBPM,全称是Java Business Process Management(业务流程管理). https://www.jbpm.org/ jBPM is a tool ...

  7. jbpm工作流(jBPM工作流组件设计分析)

    jbpm工作流会签 同意上面的说法,不过会签问题不只是jbpm才有的,很多工作流的软件都会遇到这个问题.会签可以说是工作流中的一个非常特殊的操作.实际流转举例说说吧: A办文,同时提交给B.C两个人办 ...

  8. JBPM工作流引擎内核设计思想及构架

    1 前言 流程引擎内核仅是"满足Process基本运行"的最微小结构,而整个引擎则要复杂很多,包括"状态存储"."事件处理"."组 ...

  9. Workflow JBPM 工作流

    2009-03-10 19:57 准备学习开源的工作流,这是我在别人日记上找的,介绍得很不错.跟大家一起分享. 一.工作概述 主要的工作时间花在以下几个方面,它们也是学习.研究工作流的一般途径: 1. ...

  10. 说说 jBPM 工作流引擎的设计原理

    1服务 API 设计 jBPM4 工作流引擎的核心 PVM 主要依靠 4 组服务 API : 流程定义服务 - Process Service. 流程执行服务- Execution Service. ...

最新文章

  1. selenium之定位以及切换frame
  2. dede 会员中心编辑添加和修改图集的时候自定义的字段模型显示不出来的问题...
  3. c++ char*转string_CC++|输入输出与内存、缓存、设备文件
  4. Redisson分布式锁实战-1:构建分布式锁
  5. qt客户端连接服务器不响应,qt判断tcp客户端是否连接服务器
  6. 图像处理 --- 一、认识图像处理
  7. php抽象方法db,PHP笔记之抽象方法抽象类
  8. Openresty各个阶段的执行次序
  9. VS2015自带的LocalDB数据库的用法
  10. 使用 Clang Tools —— ClangFormat
  11. 新手电脑硬件软件故障解答(三)
  12. ubuntu desktop 12 lts 安装 vmplayer 问题
  13. 计算机程序员crc算法,CRC-8校验原理及软件实现
  14. 水晶报表 php,VS2015环境下Crystal Reports(水晶报表)的安装使用
  15. 突破电信80端口封锁,用CDN架设公司服务器!
  16. 乐理入门: 二、时值、节奏、节拍
  17. 【AxureRP9】V1.0网易课堂课程
  18. 2022.11.27一周总结
  19. 升级iOS CocoaPods 版本
  20. python的Bug

热门文章

  1. docker常用操作(七)docker安装gitlab
  2. 视频app scheme参数和app name
  3. ios 嗅探资源 浏览器_全网视频嗅探 APP
  4. 微信群突然冒出“免费教画画”的女大学生,套路太深,千万别上当!
  5. PMP报考 你成功了吗?
  6. 记录 Kindle Fire HDX 7 安装 Google Play 服务过程
  7. 计算机网络——数据链路层
  8. 谈谈作为DBA我对MySQL数据库优化的理解
  9. 【C语言数据结构7】--串的实现
  10. Bootstrap 插件-可切换导航栏