​BPM的“前世今生”

BPM不仅包括业务流程管理思想及其方法论,还包括业务流程管理相关技术。第1章介绍了流程管理思想的发展历程,本章将介绍BPM技术的发展历程。经常有人将BPM技术与工作流技术混淆,或者认为BPM只是工作流技术的演进。事实上,BPM不仅包括工作流,而且包括表单、报表、接口、门户、组织用户等其他组件。工作流是BPM的核心组件之一,单独的工作流不能构成BPM。BPM是支持业务流程设计、实施、控制、分析和优化的软件及技术的集合,是一个融合人、组织、应用、文件和其他信息的综合性管理平台。

2.1 工作流基础

工作流(workflow)起源于生产组织和办公自动化领域,是业务过程的整体或部分在计算机应用环境下的自动化,是计算机支持的协同工作的一部分。

2.1.1 基本定义

工作流管理联盟(Workflow Management Coalition,WfMC)对工作流的定义如下:“工作流指一类能够完全或者部分自动执行的经营过程,能根据一系列过程规则,使文档、信息或任务在不同的执行者之间进行传递或执行”。

简单说,工作流就是一系列相互衔接、自动进行的业务活动或任务。一个工作流包括一组业务活动及它们的相互顺序关系、流程及活动的启动和终止条件,以及对每个活动的描述。例如,在日常工作中,填写好请假申请表后,需要将其提交给领导进行审批,有时还需要提交给更上一级领导进行审批。这样一个请假申请文档就会在多人之间顺序或同时传递。对于这样的场景,可以使用工作流技术来控制和管理文档在各个计算机之间自动传递。文档自动化处理只是工作流技术的一种简单应用,在现实生活中工作流技术还能够完成更多更复杂的任务,如企业内部各种数据或信息的自动处理,多种业务流程的整合,企业之间的数据交换,甚至跨地域数据传输和处理等。

2.1.2 发展历程

20世纪70年代,信息技术飞速发展,当时的流程管理研究者们普遍相信,利用信息技术可以实现工作流程的自动化,从而带来办公效率的巨大改善。工作流技术正是发端于这个时期。由于当时个人计算机与网络技术尚未普及,所以工作流技术发展较为缓慢。

20世纪80年代,图像处理领域和电子邮件领域相继出现了含有工作流特征的商用系统。图像处理领域利用工作流进行图像的流转和跟踪。电子邮件领域利用工作流将点对点的邮件流转改进为依照某种流程流转的形式。这些早期的工作流系统只有极少数获得了成功。

20世纪90年代,随着工作流相关技术条件的逐渐成熟,工作流系统的开发与研究进入新的阶段。工作流技术被广泛应用于企业管理、软件工程、制造业、金融业、科学试验和卫生保健等领域。1993年WfMC成立,标志着工作流技术逐步走向成熟。1994年,WfMC发布了工作流参考模型,并相继制定了一系列工业标准。

这些标准的制定,进一步促进了工作流技术的发展。

进入21世纪后,随着Web服务技术的兴起,多个标准化组织相继制定了与工作流技术相关的Web服务标准。2002年,IBM、Microsoft等企业联合发布了业务流程执行语言(Business Process Execution Language,BPEL)规范。BPEL是一种基于XML、描写业务过程的编程语言,可以将一组现有的服务组合起来,从而定义一个新的大型的复杂Web服务,实现控制流、异步协作、事务支持等功能。随着分布式系统和面向服务的架构的崛起,BPEL成为当时流行的工作流语言之一。

2004年,业务流程管理倡议组织(Business Process Management Initiative,BPMI)发布了业务流程建模标记法(Business Process Modeling Notation,BPMN)。这是一种工作流中特定业务流程的图形化表示法。

2005年,该组织并入对象管理组织(Object Management Group,OMG),此后BPMN由OMG维护。OMG对BPMN进行了重新定义,于2011年发布了BPMN 2.0标准。

BPMN 2.0是一套图形化的标准方法,用于业务流程建模和详细说明业务流程。它能直观地表现复杂的流程语义,便于业务分析师、技术开发者、流程经理、用户等人理解与使用。BPMN 2.0的出现结束了多种工作流Web服务标准多年的竞争。目前,BPMN 2.0已成为BPM及工作流的主流建模语言标准之一。

2.2 工作流技术概述

工作流技术是当今一项飞速发展的技术,能够结合人工和机器行为,特别是能够与应用程序和工具进行交互,从而完成业务过程的自动化处理。WfMC颁布的一系列工作流产品标准,包括工作流参考模型、工作流管理系统等,奠定了工作流技术的基础。

2.2.1 工作流参考模型

工作流参考模型(workflow reference model)是1995年由WfMC提出的工作流管理系统体系结构模型,标识了工作流管理系统的基本组件和这些组件的交互接口,如图2.1所示。其中的组件包括工作流执行服务、工作流引擎、流程定义工具、工作流客户端应用、调用应用及管理和监控工具。

b5131abe1cdf7409f38d5242199c69ff.png

  • 工作流执行服务由一个或多个工作流引擎组成,用于创建、管理和执行工作流实例的软件服务。

  • 工作流引擎是为流程实例提供运行时执行环境的软件服务。

  • 流程定义工具用于提供工作流定义服务,可以以图形方式显示并操作复杂的流程定义,并输出可被工作流引擎识别的工作流定义。

  • 工作流客户端应用是一种通过请求的方式与工作流执行服务交互的应用。也可以说,工作流客户端应用调用工作流执行服务。

  • 调用应用是被工作流执行服务调用的应用,调用应用与工作流执行服务交互,协作完成一个流程实例的执行。

  • 管理和监控工具是管理和监控工作流管理系统的工具,包括用户管理、角色管理、审计管理、资源管理、流程监控等。

此外,工作流参考模型还定义了5个接口,用于定义以上组件间的交互接口规范。

  • 接口1:工作流定义接口。此接口的规范有WPDL、XPDL、BPEL等,用于为用户提供一种可视化的、可以对实际业务进行建模的工具,并生成可被计算机处理的业务过程形式化描述。

  • 接口2:工作流客户应用接口。此接口的规范为WAPI(代表workflow application programminginterface)。它提供了一种手段,使用户可以处理流程运行过程中需要人工干预的任务[实际上就是工作项(workitem)],工作流管理系统负责维护这个工作项列表。

  • 接口3:工作流调用应用接口。此接口的规范为WAPI。工作流引擎调用外部业务应用的规范,如在流程执行过程中调用业务系统提供的接口处理业务数据等。

  • 接口4:工作流引擎协作接口。此接口的规范为Wf-XML 2.0,是不同的工作流引擎之间进行协作的接口规范。

  • 接口5:管理和监控接口。此接口的规范为CWAD(代表common workflow audit data)。该接口和监控工作流管理系统中所有实例的状态,如组织机构管理、实例监控管理、统计分析管理等。

工作流参考模型目前已成为工作流软件系统设计的权威参考标准。它提供了一个规范的工作流术语表,使在一般意义上讨论工作流系统体系结构成为了可能。它还为工作流管理系统的关键组件提供了独立于特定产品或技术实现的功能与交互描述。此外,它从功能的角度定义5个关键组件的交互接口,推动信息交换标准化,使不同产品间的交互成为可能。

2.2.2 工作流管理系统

早期办公自动化系统通常采用硬编码的方式来处理业务、公文的流转。然而,随着业务和公文愈发复杂,需求的不断变更,这种方式显然已难以满足现实的需求,工作流管理系统应运而生。

工作流管理系统(Workflow Management System, WfMS)是一款用于定义和管理工作流,并按照在计算机中预先定义好的工作流逻辑推进工作流实例执行的软件系统。WfMS通过分析、抽象业务、公文流转过程,解决业务交互逻辑、业务处理逻辑及参与者的问题。

  • 业务交互逻辑对应业务流转过程。WfMS通过工作流引擎、工作流设计、流程操作等功能解决业务交互逻辑的问题。

  • 业务处理逻辑对应业务流转过程中表单、文档等的处理。WfMS通过表单设计工具与表单的集成等功能解决业务处理逻辑的问题。

  • 参与者对应流转过程中各环节中的人或程序。WfMS通过与应用程序的集成解决参与者的问题。

WfMS为方便修改业务交互逻辑、业务处理逻辑及参与者提供了可视化流程设计及表单设计工具,为实现WfMS的扩展提供了一系列接口,其产品结构如图2.2所示。

完整的WfMS通常由工作流引擎、工作流设计器、流程操作、工作流客户端程序、流程监控、表单设计器、与表单的集成,以及与应用程序的集成8个部分组成。

工作流引擎作为WfMS的核心部分,主要提供对工作流定义文件的解析及流程流转的支持。工作流定义文件描述了业务的交互逻辑,由工作流引擎解析并按照业务交互逻辑进行业务的流转。工作流引擎通常通过参考某种模型进行设计,通过流程调度算法进行流程流转(如流程的启动、终止、挂起、恢复等),通过各种环节调度算法实现环节的流转(如环节的合并、分叉、选择、条件选择等)。

流程设计工具一般是可视化的,用户可以以拖放元素的方式来绘制流程,并通过环节配置实现对环节操作、环节表单、环节参与者的配置。流程设计工具的好坏决定了WfMS是否易用。

流程操作指工作流支持的针对流程环节的操作,如启动、终止、挂起、分支、合并等,工作流引擎直接支持上述操作。而在实际需求中,通常需要自由操作流程,如回退、跳转、加签、减签等,对于这些操作,工作流引擎不直接支持,用户必须单独实现。是否支持流程操作直接决定了WfMS是否实用。

工作流客户端程序是WfMS的工作界面,通常以Web方式展现,通过提供待办列表和已办列表、执行流程操作、查看流程历史信息等内容,展现WfMS的功能。

流程监控以图形化方式监控流程执行过程,包括流程运转状况、每个环节耗费的时间等,流程监控数据是流程优化的依据。

表单设计工具一般是可视化的,用户可以以拖放元素的方式绘制业务所需的表单,并绑定表单数据。表单设计工具的好坏也会决定WfMS是否易用。

d2131e8fa9a1d0cccafe9bb5b47e78c4.png

通常业务流转需要表单来表达实际的业务,因此需要与表单进行集成来实现业务意义。与表单的集成通常包括表单数据的自动获取、存储、修改,表单域的权限控制,流程相关数据的维护,以及流程环节表单的绑定。与表单的集成程度直接决定WfMS对开发效率的提升效果。

与应用程序的集成用于完善WfMS的业务意义,主要涉及与权限系统及组织机构的集成。流程环节需要绑定相应的执行角色,而流程操作需要关联权限系统、组织机构。

2.2.3 工作流开源框架

目前市面上主流的工作流开源框架有4个,分别是jBPM、Activiti、Camunda和Flowable。其中,Activiti、Camunda和Flowable均是基于jBPM 4.0的框架,它们之间的关系如图2.3所示。

5939d7d23eb46bc56a5ac511da159a20.png

jBPM 4.0是JBoss公司推出的一款工作流开源框架,后来由于团队内部出现分歧,部分团队核心人员离开JBoss公司加入Alfresco公司,很快Alfresco公司推出了新的基于jBPM 4.0的开源工作流框架Activiti 5.0。

Activiti 5.0以jBPM 4.0为基础,继承了jBPM 4.0强大的可扩展能力,同时增强了流程可视化与管理能力。2.3 BPM 相关标准 17而JBoss公司的产品jBPM 5.0则完全抛弃了jBPM 4.0的架构,以Drools Flow为基础彻底重构了工作流引擎核心架构,因此,jBPM 5.0与jBPM 4.0是两款完全不同的产品。许多jBPM的老用户都转向了Activiti 5.0框架。

目前,jBPM 5.0及其以后的版本的国内市场占有远不如Activiti。Camunda和Flowable的诞生与Acitiviti如出一辙。目前Camunda和Flowable已经推出了各自的商业版本和开源版本,而Activiti则持续开源。虽然Camunda和Flowable这两位后起之秀都足够优秀,不但修复了Activiti5.0的很多漏洞,在产品功能上也更加的完善,但是对于一家公司来说,从Activiti向Camunda或Flowable迁移代价太大。

本书选用Activiti来讲解企业级BPM开发与应用的实现,一方面是因为它免费开源、稳定可靠、应用广泛,另一方面是因为Activti有着十分优秀的设计思想及代码风格,易于入门。

2.3 BPM相关标准

BPM的发展过程中,在基于Web服务的XML执行语言方面进行过很多探索,如BPEL、BPMN等语言标准。BPEL是一种基于XML的、用于描写业务过程的编程语言,是一种用于产品间交换的标准。业务过程中的各步骤则由Web服务实现。BPMN是一种基于流程图的通用可视化标准,提供通用、易于理解的流程符号。

BPMN在业务流程设计与业务流程实现之间搭建了一座标准化桥梁。目前,国内市场上的BPM产品多采用的BPMN 2.0标准。

2.3.1 BPMN 2.0概述

BPMN 2.0是OMG于2011年推出的一种业务流程建模通用语言标准,是对BPMN 1.0的重定义。BPMN 2.0相对于BPMN 1.0、XPDL、BPML及BPEL等规范最大的区别是定义了规范的执行语义和格式,利用标准图元描述真实业务发生过程,保证同一业务流程在不同的工作流引擎下的执行结果是一致的。制定BPMN 2.0标准的一个目的是提供一种能够创建简单易懂业务流程模型的机制,以处理复杂的业务流程。为此,BPMN 2.0定义了丰富的元素,并对这些元素进行了分类,使用户能够轻松识别,从而读懂并理解模型。掌握了BPMN2.0基本元素,就掌握了BPMN 2.0的核心。BPMN 2.0基本元素分类及符号如表2.1和表2.2所示。

ebfec66422ae52c6fb1260af20bb3375.png

4409c7a53c80f648b9619999ab413d20.png

2ee54d28952fc85046c3f602cb3636cb.png

图2.4使用BPMN 2.0中的图形符号创建了一个简单请假流程示例,主要由事件、活动、网关、顺序流这4种基本元素构成。

48f6227edcd120f0f9f924e81e112827.png

流程定义文件扩展名一般为.bpmn.xml或者.bpmn20.xml,可以看出BPMN 2.0实际上基于XML表示业务流程。使用文本编辑器可以打开该请假流程示例的流程定义文件,其中内容如下:

<?xml version='1.0' encoding='UTF-8'?>

<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:activiti="http://activiti.org/bpmn"

xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"

xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"

xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"

typeLanguage="http://www.w3.org/2001/XMLSchema"

expressionLanguage="http://www.w3.org/1999/XPath"

targetNamespace="http://www.activiti.org/processdef">

<process id="process_simple" name="请假流程" isExecutable="true"> 2.3 BPM 相关标准 19

<startEvent id="startEvent1"/>

<userTask id="leave_apply" name="请假申请" activiti:assignee="${initiator}"

activiti:formKey="simple_form"/>

<sequenceFlow id="sf1" sourceRef="startEvent1" targetRef="leave_apply"/>

<userTask id="leader_approval" name="领导审批" activiti:assignee="${leader}"

activiti:formKey="simple_form"/>

<sequenceFlow id="sf2" sourceRef="leave_apply" targetRef="leader_approval"/>

<exclusiveGateway id="gateway1"/>

<sequenceFlow id="sf3" sourceRef="leader_approval" targetRef="gateway1"/>

<serviceTask id="holiday_management" name="假期管理"/>

<endEvent id="endEvent1"/>

<sequenceFlow id="sf4" sourceRef="holiday_management" targetRef="endEvent1"/>

<sequenceFlow id="sf5" name="通过" sourceRef="gateway1"

targetRef="holiday_management">

<conditionExpression xsi:type="tFormalExpression">

<![CDATA[${task_领导审批_outcome=='agree'}]]></conditionExpression>

</sequenceFlow>

<sequenceFlow id="sf6" name="驳回" sourceRef="gateway1" targetRef="leave_apply">

<conditionExpression xsi:type="tFormalExpression">

<![CDATA[${task_领导审批_outcome=='disagree'}]]></conditionExpression>

</sequenceFlow>

</process>

<bpmndi:BPMNDiagram id="BPMNDiagram_qj">

<bpmndi:BPMNPlane bpmnElement="qj" id="BPMNPlane_qj">

<bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">

<omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"/>

</bpmndi:BPMNShape>

<bpmndi:BPMNShape bpmnElement="leave_apply" id="BPMNShape_leave_apply">

<omgdc:Bounds height="80.0" width="100.0" x="175.0" y="138.0"/>

</bpmndi:BPMNShape>

<bpmndi:BPMNShape bpmnElement="leader_approval" id="BPMNShape_leader_approval">

<omgdc:Bounds height="80.0" width="100.0" x="320.0" y="138.0"/>

</bpmndi:BPMNShape>

<bpmndi:BPMNShape bpmnElement="gateway1" id="BPMNShape_gateway1">

<omgdc:Bounds height="40.0" width="40.0" x="465.0" y="158.0"/>

</bpmndi:BPMNShape>

<bpmndi:BPMNShape bpmnElement="holiday_management" id="BPMNShape_holiday_management">

<omgdc:Bounds height="80.0" width="100.0" x="570.0" y="138.0"/>

</bpmndi:BPMNShape>

<bpmndi:BPMNShape bpmnElement="endEvent1" id="BPMNShape_endEvent1">

<omgdc:Bounds height="28.0" width="28.0" x="715.0" y="164.0"/>

</bpmndi:BPMNShape>

<bpmndi:BPMNEdge bpmnElement="sf5" id="BPMNEdge_sf5">

<omgdi:waypoint x="504.57089552238807" y="178.42910447761193"/>

<omgdi:waypoint x="570.0" y="178.18587360594796"/>

</bpmndi:BPMNEdge>

<bpmndi:BPMNEdge bpmnElement="sf1" id="BPMNEdge_sf1">

<omgdi:waypoint x="130.0" y="178.0"/>

<omgdi:waypoint x="175.0" y="178.0"/>

</bpmndi:BPMNEdge>

<bpmndi:BPMNEdge bpmnElement="sf4" id="BPMNEdge_sf4">

<omgdi:waypoint x="670.0" y="178.0"/>

<omgdi:waypoint x="715.0" y="178.0"/>

</bpmndi:BPMNEdge>

<bpmndi:BPMNEdge bpmnElement="sf2" id="BPMNEdge_sf2">

<omgdi:waypoint x="275.0" y="178.0"/>

<omgdi:waypoint x="320.0" y="178.0"/>

</bpmndi:BPMNEdge>

<bpmndi:BPMNEdge bpmnElement="sf6" id="BPMNEdge_sf6">

<omgdi:waypoint x="485.5" y="158.5"/>

<omgdi:waypoint x="485.5" y="110.0"/>

<omgdi:waypoint x="225.0" y="110.0"/> 20

<omgdi:waypoint x="225.0" y="138.0"/>

</bpmndi:BPMNEdge>

<bpmndi:BPMNEdge bpmnElement="sf3" id="BPMNEdge_sf3">

<omgdi:waypoint x="420.0" y="178.2164502164502"/>

<omgdi:waypoint x="465.4130434782609" y="178.41304347826087"/>

</bpmndi:BPMNEdge>

</bpmndi:BPMNPlane>

</bpmndi:BPMNDiagram>

</definitions>

流程定义文件的根元素是definitions,该元素至少需要包含xmlns和targetNamespace两个属性,xmlns用于声明默认命名空间,targetNamespace用于声明目标命名空间。这些属性值通常表示为固定的URI。每个流程定义文件都必须要包含这些属性。此外,每个流程定义文件都包含BPMN业务流程和流程图型化展示两部分,分别对应根元素definitions的两个子元素:process和BPMNDiagram。

子元素process代表一个真正的业务流程定义。definitions可以包含多个process,不过建议只包含一个,以简化流程定义开发和维护的难度。process元素有3个属性:id、name和isExecutable。属性id是必填项,是业务流程的标识,用以启动一个流程实例;属性name用于定义业务流程名称;属性isExecutable用于定义流程是否可执行。

使用BPMN定义的元素都包含在process元素下,在上述请假流程示例的流程定义文件中,process元素包括1个开始事件(startEvent)、2个用户任务(userTask)、1个排他网关(exclusiveGateway)、1个服务任务

(serviceTask)、1个结束事件(endEvent)和6个顺序流(sequenceFlow)。工作流引擎在执行业务流程时会读取这部分内容来获取业务流程规则。

BPMNDiagram定义了业务流程模型的布局,包括每个BPMN元素的位置和大小等信息。流程设计工具可以根据BPMNDiagram中的描述信息绘制可视化流程图,让用户直观地理解业务流程。

2.3.2 BPMN 2.0结构

在BPMN 2.0基本元素中,要重点掌握事件、活动、网关这3类流对象。它们是BPMN 2.0的核心结构,

如图2.5所示。

0ed7e1248edde598fed62f28736be853.png

1.事件

事件主要分为开始事件、中间事件、边界事件和结束事件。

开始事件是流程的起点,定义流程如何启动,以及显示的图标类型。在流程定义文件中,开始事件类型由子元素声明定义。根据不同的触发条件,可将开始事件分为不同类型,如表2.3所示。

bba3c6b31a11a2a3284e4ebcb268fa8f.png

结束事件标志着流程或子流程中其一个分支结束。结束事件总是抛出型事件。这意味着当流程执行到达结束事件时,会抛出一个结果,结果类型由事件内部自带的填充图标表示。在流程定义文件中,结束事件类型由子元素声明定义。根据不同的触发条件,可将结束事件分为不同类型,如表2.4所示。

f0e0d3ba733b662309341fde4d8fe9f6.png

开始事件和结束事件之间发生的事件统称为中间事件。中间事件会影响流程的流转路径,但不会启动或直接终止流程。按照其特性,中间事件可以分为中间捕获事件和中间抛出事件两类。当流程执行到中间捕获事件时,它会一直处于待触发状态,直到接收特定信息时被触发;当流程执行到中间抛出事件时,它会被自动触发并抛出相应的结果或者信息。中间事件类型如表2.5所示。

0e7334b8a96c0030e4e9eed311ff9e83.png

9eb0b14a679d7258342cd7511457dfee.png

边界事件是一种特殊的中间事件,依附在活动上。边界事件永远不会抛出。这意味着当活动运行时,边界事件将监听特定类型的触发器。当工作流引擎捕获到边界事件时,会终止活动,并沿该事件的外出顺序流继续执行。根据不同的触发条件,可将边界事件分为不同类型,如表2.6所示。

f582af89b3bf423ab8309f5cd92e89d2.png

2.活动

活动是业务流程定义的核心元素,是业务流程中执行的工作或任务的统称。在工作流中所有具备生命周期状态的元素可以称为“活动”。

活动既可以是流程的基本处理单元(如人工任务、服务任务等),也可以是组合单元(如调用活动、套子流程等)。

活动表示为圆角矩形。活动类型如表2.7所示。

86088b42f820298d3a64966f67da5200.png

3.网关

网关用于控制顺序流在流程中的汇聚和发散。从其名称可以看出,它具备网关门控机制。网关与活动一样,能够使用或生成额外的令牌,可以有效控制给定流程的执行语义。两者的主要区别在于,网关不代表正在完成的“工作”,它对正在执行的流程的运行成本、时间等的影响为零。

网关可以定义所有类型的业务流程序列流行为,如决策/分支(独占、包含和复杂)、合并、分叉和加入等。网关表示为菱形,虽然菱形传统上用于表示排他性决策,但BPMN 2.0扩展了菱形行为,所有类型的网关都有一个内部指示器或标记来表明正在使用的网关类型。网关类型如表2.8所示。

60544fa026f211a3a490f9c5b9d5936e.png

2.4 BPM技术的应用

BPM作为重量级企业信息化管理解决方案,主要为中大型企业提供系统的流程管理、集成中台和数字化转型方案,极大地提升了企业工作效率,降低了企业运营成本。

2.4.1 应用现状概述

BPM在制造业、金融业、建筑业、零售业和物流运输业等对流程化、信息化要求较高的行业有着广泛的运用。BPM主要为这些行业中体量较大的企业客户服务。BPM厂商为这些公司提供从生产营销到合作管理的全项目式解决方案,包括战略规划、财务资金管理、绩效管理、人力资源管理、供应链与物流管理等。

BPM可以整合客户、管理层、财务和法律、运营、IT、合作伙伴和供应商等板块,提供跨组织的端到端的流程管理组件。

根据信息化工具的演进历程和当今市场特性,平台化和低代码成为未来BPM主流发展方向。同时,BPM的智能化成为未来产品优化的必然选择。BPM可以通过与机器人流程自动化(Robotic Process Automation,RPA)、人工智能(Artificial Intelligence,AI)等智能技术深度融合,进一步提高自身的性能和效率。此外,BPM厂商还需要在行业服务能力方面继续增强自身竞争力。

2.4.2 国内应用概况

21世纪初,BPM正式引入我国,但一方面国内企业的关注重点还在于市场的拓展和投融资方面,对BPM还不甚了解,另一方面国产BPM产品技术非常不成熟,客户体验很糟糕,所以当时国内市场上的BPM提供商多是国际服务商,如K2、Ultimus、IBM、Oracle等。

2010年以后,国内企业对BPM的关注度逐年提升,推动BPM市场快速发展,国产BPM产品在技术上有了质的飞跃,炎黄盈动、奥哲H3 BPM、天翎、联科等国产品牌开始为中国移动、浦发银行、沃尔玛、华为和政府部门等大型客户提供专业的BPM服务。

2019年,国内BPM市场规模已达到30亿~35亿元,年增长率超过30%。在利润方面,根据客户量级和供应商商业模式不同,BPM利润从几万到几百万元不等,行业毛利率为30%~40%。

随着越来越多的厂商进入BPM市场,国内供应商的市场份额逐年增加,目前已占据国内BPM市场的主导地位。伴随着需求的增长和技术壁垒的消除,国内BPM市场将迎来新的增长。

2.5 本章小结

工作流是BPM的核心组件之一。本章简单介绍了工作流的定义、发展历程,以及工作流参考模型和WfMS,重点介绍了工作流领域的BPMN 2.0规范,该规范为工作流应用提供了语言及图形标准。BPMN 2.0规范是后续章节的基础。

本文选自贺波,胡海琴,刘晓鹏著作

评论区留言点赞前三获得本书一本(文章发布后72h统计)

bd8233454738498f388950e179199b6a.jpeg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BPM(Business Process Management)框架是一种用于管理和优化业务流程的软件框架。它提供了一套工具和方法,帮助企业设计、执行、监控和优化业务流程。在Java开发中,有许多BPM框架可供选择,如Activiti、Camunda、JBPM等。这些框架提供了丰富的功能和组件,可以帮助开发人员快速构建和部署业务流程。 以下是一个使用Activiti框架的Java BPM框架的示例: ```java import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngineConfiguration; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.repository.Deployment; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; public class JavaBPMFrameworkExample { public static void main(String[] args) { // 创建流程引擎配置 ProcessEngineConfiguration cfg = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration(); ProcessEngine processEngine = cfg.buildProcessEngine(); // 部署流程定义文件 RepositoryService repositoryService = processEngine.getRepositoryService(); Deployment deployment = repositoryService.createDeployment() .addClasspathResource("processes/myProcess.bpmn20.xml") .deploy(); // 启动流程实例 RuntimeService runtimeService = processEngine.getRuntimeService(); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess"); // 处理任务 TaskService taskService = processEngine.getTaskService(); Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); System.out.println("当前任务:" + task.getName()); // 完成任务 taskService.complete(task.getId()); // 销毁流程引擎 processEngine.close(); } } ``` 这个示例演示了如何使用Activiti框架创建一个简单的Java BPM应用。首先,我们创建了一个流程引擎配置,并使用内存数据库进行配置。然后,我们部署了一个BPMN流程定义文件,并启动了一个流程实例。接下来,我们处理了任务并完成了它。最后,我们关闭了流程引擎。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值