基于 SOA 的业务流程管理(BPM)和工作流(WF)_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 基于 SOA 的业务流程管理(BPM)和工作流(WF)

基于 SOA 的业务流程管理(BPM)和工作流(WF)

 2017/8/24 12:08:54  看客还是过客  程序员俱乐部  我要评论(0)
  • 摘要:基于业务组件模型的工作流模块设计摘要当前基于BPLE的业务流程管理(BPM)以及基于XPDL的工作流(WF)都有成熟的理论和相应的产品支持,特别是在国内,工作流(WF)的应用十分广泛。本文从流程入手,结合业务流程管理、工作流、绩效管理、个人门户等概念,将业务流程管理和工作流结合起来,搭建企业级的跨系统的流程整合架构。什么是流程在面向服务体系架构(ServiceOrientedArchitecture,SOA)中,流程是一个很重要的概念,其中业务流程管理包含了人工任务等,结合《面向服务体系架构
  • 标签:工作 流程 BPM 流程管理

 基于业务组件模型的工作流模块设计

 

摘要

 

当前基于 BPLE 的业务流程管理BPM)以及基于 XPDL 的工作流(WF)都有成熟的理论和相应的产品支持,特别是在国内,工作流(WF)的应用十分广泛。本文从流程入手,结合业务流程管理、工作流、绩效管理、个人门户等概念,将业务流程管理和工作流结合起来 ,搭建企业级的跨系统的流程整合架构

 

什么是流程

 

在面向服务体系架构(Service Oriented Architecture,SOA)中,流程是一个很重要的概念,其中业务流程管理包含了人工任务等,结合《面向服务体系架构(SOA)和cangku.html" target="_blank">数据仓库(DW)的思考》(以下简称《SOA 和 DW》)以及《面向服务体系架构(SOA)和业务组件(BC)的思考》(以下简称《SOA 和 BC》)中关于共享库、业务组件的设计,本文进一步给出了关于如何进行工作流管理组件的设计方法和实现。

 

流程和作业

 

流程(Process)是产生某一结果的一系列作业,是多个人员、多个作业按照一定的规则的有序组合,它关心的是谁做了什么事,产生了什么结果,传递了什么信息给谁。流程一定是体现企业价值的,没有价值的流程是没有意义的,因此每个流程都有其特定的绩效目标。在信息系统中,流程由若干作业(Operation)按照一定的规则组合而成,可以用业务流程图来描述,其目标通过绩效指标体现。作业是为了实现一个可定义的目标而进行的一系列活动,是业务流程的基本单元。在信息系统中,作业的前端表现为若干界面,后端由若干个服务按照一定的规则组合成一个个功能单元。

在本文中,流程是指企业运作的所有工作流程,企业的所有的活动都可以看作是一个个流程,流程是由若干个作业组成的,在 IT 技术上流程称为工作流,作业称为流程节点。

 

流程规范 XPDL 和 BPEL

 

IT 技术中,关于流程最早是以 WfMC 为代表的“业务流程开发商”, 工作流管理联盟(WfMC)于 1993 年成立,他们主要拥护以 XPDL 作为描述语言来描述业务流程;之后是以

 

OASIS(Organization for the Advancement of Structured Information Standards,结构化信息标准促进组织)组织为代表的,被 IBM,MicroSoft,BEA 所拥护的 BPEL/BPEL4WS

 

规范;之后向来以规范著称的 OMG 组织也不甘示弱,联合 BPMI 组织,独辟蹊径以 Notation Specification 为入口,首先推出了 BPMN 规范,进而推出了 BPDM(Business Process Definition Metamodel BPDM)。

 

2003 年 4 月 BPEL 规范提交给了 OASIS 更名为 WSBPEL(Web Services Business Process Execution Language)规范。此规范描述如何处理输入的消息,它不是一个关于业务流程规格化定义的规范。简单的说,可以将它看作 XML 形式的编程语言,提供将 WSDL-Services 组合成控制流的能力。由于 BPLE 对于人工活动支持不好,为此进一步扩展为 BPEL4PeopleWS-BPEL Extension for People),从只能编排 Web 服务,扩展为同时支持对 Web 服务和基于角色的人工活动进行编排。

 

业务流程管理(BPM)和工作流管理(WFM)

 

业务流程管理(Business Process Management BPM),一般的定义为一套达成企业各种业务环节整合的全面管理模式。BPM 实现了人员、设备、桌面应用系统、企业级后台应用等内容的优化组合,从而实现跨应用、跨部门、跨合作伙伴与客户的企业运作。

 

根据 WfMC 的定义,工作流(Work Flow)为自动运作的业务过程部分或整体,表现为参与者对文件、信息或任务按照规程采取行动,并令其在参与者之间传递。简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。

 

工作流管理(Workflow Management, WFM)是人与电脑共同工作的自动化协调、控制和通讯,在电脑化的业务过程上,通过在网络上运行软件,使所有命令的执行都处于受控状态。在工作流管理下,工作量可以被监督,分派工作到不同的用户达成平衡。

 

在本文中业务流程管理(BPM),是指基于 BPEL 标准的业务流程整合,主要实现系统和系统之间的整合;工作流(WF)是指人工活动的业务流程,基于 XPDL 标准或者 BPEL4People 标准,实现人机交互的整合,目的是实现系统内部以及跨系统的流程审批。关于业务流程(BPM),当前有很多成熟的产品,不做过多介绍,本文以工作流管理(WFM)为基础,基于《SOA 和 BC》的方法进行设计,给出了工作流管理组件的设计模型。工作流和绩效、个人门户、即时沟通等紧密相关,比如每个岗位流程节点汇总在一起,在前端展示为个性化门户,即时沟通平台实现人员之间实时沟通。

 

业务流程建模符号(BPMN)

 

业务流程建模符号(Business Process Modeling Notation,BPMN)由 BPMI(The Business Process Management Initiative)开发是一套标准叫业务流程建模符号,于 2004 年 5 月对外发布了 BPMN 1.0 规范。BPMN 的主要目标是提供一些被所有业务用户容易理解的符号,从创建流程轮廓的业务分析到这些流程的实现,直到最终用户的管理监控。BPMN 也支持提供一个内部的模型可以生成可执行的 BPEL4WS。BPMN 定义了一个业务流程图(Business Process Diagram),该业务流程图基于一个流程图(Flowcharting),该流程图被设计用于创建业务流程操作的图形化模型。而一个业务流程模型 (Business Process Model),指一个由的图形对象(graphical objects)组成的网状图,图形对象包括活动(acticities)和用于定义这些活动执行顺序的流程控制器(flow controls)

 

在本文中业务流程管理(BPM),是指基于 BPEL 标准的业务流程整合,主要实现系统和系统之间的整合;工作流(WF)是指人工活动的业务流程,基于 XPDL 标准或者 BPEL4People 标准,主要实现人机之间交互的整合,目的是实现系统内部以及跨系统的审批。关于业务流程(BPM),当前有很多成熟的产品,不做过多介绍,本文以工作流管理(WFM)为主,进行设计,同时考虑到 BPMN 未来将会得到更多的使用,采用 BPMN 来进行画图。工作流是和绩效紧密相关,每个岗位流程节点汇总在一起,在前端展示为个性化门户,除了工作流的沟通之外还有消息平台实现人员之间的协同

 

工作流管理(WFM)组件设计

 

企业可以看作是企业实体对象,包括组织、人员、产品等在不同的环境和条件下的不断的运转的过程,实体对象和运转过程映射到信息系统中,分别对应着数据(可以用 ER 图描述)和业务流程(可以用流程图、业务逻辑和业务规则描述)。数据和业务流程能够全面反映实体对象及其运动的状态。在现实社会中,实体对象的运动体现为一系列活动,在信息系统中 ,活动表现为一个流程节点,实体对象通过一系列的业务活动直至最终完成任务,在信息系统中体现为数据状态的不断变化,直到数据最终完成。

 

在《SOA  BC》一文中提到了关于基于 OSGi 的模块化的设计思路,工作流管理作为其中的一个公共组件的模块,如果是提升到企业级的公共服务平台中,则是独立的工作流管理业务组件,可以实现跨系统的工作流整合,以下结合《SOA  BC》的思路,进一步细化工作流管理模块(或工作流管理业务组件)的设计思路。

 

工作流组件的松耦合设计

 

传统的办公自动化或者协同办公系统,要实现基于工作流的流转,需要有两个基本的功能:工作流引擎和自定义表单,有了这两个基本功能就可以在一个系统中实现流程的流转。但是如果要实现整合企业所有的应用(不管是什么平台、哪个开发商),要将所有的业务全部整合到一个工作流平台中,就需要工作流组件提供一个松耦合的连接方式,将所有的应用整合在一块,保证现有的系统都能整合到统一的一个工作流中,从而实现统一企业的工作流,全面对企业流程进行监控。

 

结合《SOA  BC》的思路,将工作流组件作为一个独立的公共组件,为了更好的实现和其它业务组件以及公共组件内部的不同模块之间的松耦合,工作流组件对外以 Web 服务的方式对外提供接口,通过 ESB 和业务组件进行调用。同时为了保证性能,可以将工作流引擎内嵌到业务组件中,通过类总线(API)进行调用。这样既可以实现和内部业务组件之间的结合,也可以实现和应用外部的系统进行流程整合。从业务组件划分角度来看,工作流模块可以作为独立的业务组件,从方便管理角度来看,将其和其它的功能模块合并在一起,是公共组件的一个部分。

 

 图 1. 公共组件模型-工作流模块

 [注]

表单自定义功能是界面管理模块的重要功能之一。

本文中的工作流管理组件实际上是公共组件的一个部分。

工作流组件和其他业务组件通过 Web 服务方式调用可以采用异步同步传输两种模式。同步传输主要适用于两个系统必须同时提交的业务场景,采用同步传输需要等待另外一个系统的反馈信息,对提交 Web 服务的系统有性能的影响;异步传输的方式主要适用于可以异步提交 Web 服务的业务场景,保证了提交 Web 服务系统的性能,异步提交的方式需要考虑接受服务的系统出现宕机或者网络故障的情况下还可以准确无误的将 Web 服务传递到接收系统。异步传输一般通过消息中间件完成。

关于松偶合的 Web 服务的调用顺序在《SOA  BC》文中建议尽量采用触发的方式进行调用,基于这种调用方式,业务组件对外只提供查询或者写入服务,而不会直接通过写代码调用服务,实现业务组件的松偶合,这种调用方式同样适应于工作流组件中。比如客户注册流程,一开始实在 CRM 系统完成的,但是如果随着业务的发展,客户注册采用网上注册,原来 CRM 系统客户注册流程的任务启动就会发生变化,如果是采用的触发的方式,仅仅修改流程的编排即可(需要由业务流程管理(BPM)实现),而不需要修改 CRM 的程序。在工作流组件中,最好的一个实现方式就是由工作流组件进行流程的发起,如图 2-1 启动流程所示。

 

  图 2. 工作流组件的松偶合调用

 

为了实现松偶合,业务组件和工作流组件之间不进行业务数据交互,传递的仅仅是任务信息 。业务组件对外提供获取信息或者写入信息的 Web 服务,和普通的业务组件之间的 Web 服务没有什么区别,读取信息和写入信息是标准的业务服务,保证了为工作流使用的 Web 服务具有通用性。如果需要和工作流整合,仅仅提供一个特殊的 Web 服务“通知完成”将任务的完成状况或者任务的基本信息等传递到工作流组件,任务的基本信息主要是为了痕迹化管理,将修改的信息做一个记录,便于未来的审计。通过这种模式实现业务数据和流程数据分离,工作流组件和业务组件不进行业务数据的交互,简化了工作流整合的难度。工作流组件则提供启动流程、修改流程状态,启动下一环节以及保存任务基本信息等 Web 服务。

 

为了使流程平台具有良好的扩展性,如果工作流组件需要业务数据,比如需要根据业务数据进行判断业务流转,也是以 Web 服务的方式有业务组件提供一个标准的服务,通过 BPEL 实现,比如为了进行痕迹化,则需要对进行审批的内容进行保存,通过 BPLE 调用查询服务将数据保存到流程数据库中,其调用跟工作流引擎没有关系。实现跨系统的流程流转,也是通过 BPEL 的编排,通过调用业务 Web 服务实现。

 

工作流组件组成及和业务组件关系

 

作为公共组件的工作流模块主要包含三个主要功能:工作流引擎、待办任务管理、工作流可视化管理。工作流引擎是基础模块,可以为所有的系统提供工作流引擎,实现工作流流转的逻辑控制;待办任务管理主要实现人机交互,提供一个统一管理的待办任务管理,整合公共的工作流引擎以及企业已经存在的工作流引擎(如 OA)以及普通业务系统的任务(如没有工作流引擎的 ERP),形成一个统一的待办任务管理;工作流可视化管理,主要用于工作流的可视化展示,用于除了用于工作流定义外,可以实现流程监控、业务绩效指标监控、流程导航等功能。

 

SDP软件快速开发平台(从.net到java)
SDP 支持:(.NET、JAVE)平台
兼容:IE6FireFox、Chrome、Safari、Opera

SDP软件快速开发平台适用对象:软件开发商、最终用户、程序开发员
各类软件定制开发 APP/微信平台/CRM/OA/ERP/MES/数据采集/教育教学系列/会员系列

 

特点
01)快速开发系统,直接生成代码,节约人工,节约成本
02)可视化设计,操作简单易用,更新、维护、部署操作简单方便
03)支持多人多项目协同开发,提高协同工作效率
04)减少程序员代码量,只需极少的JS代码就能实现复杂业务功能
05)可以根据客户需求、快速开发出DEMO版,尤其是在大型项目调研对接过程,针对文档性资料不够直观,通过快速生成的DEMO版(其实就是后续正式的程序)让用户非常直观的看到软件项目最终的效果,对项目的调研起到事半功倍的效果,后续只要再次针对业务进行复杂业务逻辑的处理就可以完成项目的开发,基本上项目调研完成,软件项目基本上定型开发就已经完成,效率和效果得到空前提高。
06)SDP节省开发成本,开发速度快,从而满足企业快速发展变化而带来的系统变化的需要。一般普通的刚毕业的程序员只要简单培训,就能开发出项目页面,只需要会简单的JS程序,就能很快完成业务单据的正常的保存、修改、 删除、列表、输出、查询等功能;经过多次检验,一般一个稍微熟悉一点的开发人员一天基本上能开发几十个业务表单及功能,效率得到空前提高;
07)SDP对开发人员要求不高,只需清楚企业管理需求,就可很快速将需求实现。 开发人员需懂一定SQL语法,一般一周即可培训好。当然这只是说针对普通的业务来说的,如果是非常复杂的业务逻辑更新,则还是需要技术高点的人 来写DLL类库来执行更新,所以公司可将开发人员技术等级划分后,合理的分配任务,就能实现此目标。
08)SDP扩展性,适应性强,降低了企业重复购买软件的风险。 企业可在此平台上开发各种系统,集成在一起,充分利用。
09)SDP设计器可以支持多个项目配置,针对不同的项目登录时选择不同配置即可进入不同系统,实现一套平台操作多个应用。所有系统操作方法相同,每上一个新系统时无需重新培训。
10)SDP实现每实施一个新系统或升级一个旧系统时,能快速部署更新,大大减轻了实施和维护人员的工作量。
11)SDP为开发人员开发好了大量基础性模块,开发人员无需重复开发,如组织 管理、人事管理、个人事务、新闻管理、系统管理、权限管理等。如需修 改,直接修改对应的文件就可以完成新的需求
12)SDP提供了邮件发送功能,只需在WEB端配置一下邮件服务器就可以实现邮件发送;同时提供的内部消息和新闻通知功能基本满足日常的需求。 13)SDP平台开发生成的项目,是纯HTML源码文件,用户可以轻松阅读修改。(软件项目是B/S架构)
14)通过可视化的页面设计,轻松实现复杂业务页面的功能设计
15)通过流程图设计模块,快速制作业务工作流。
16)通过报表设计工具,可以制作出符合逻辑的中国式复杂报表(包括图表、打印、输出等)

SDP开发平台推出了V3.5版本,增加了JAVA版的项目开发功能,让使用JAVA开发的公司也能使用上开发平台。实现JAVA .NET 双版本的格局。下一步我们将继续努力推出手机APP的开发功能,最终实现 .NET JAVA APP 融合一体的综合开发平台。 


可视化流程设计及监控:涵盖了从流程定义、发布、管理配置、执行、监控到结果分析的完整的生命周期管理。

多层多级复杂权限控制:复杂权限控制,实现横向、纵向数据权限控制,可精确控制到页面单元格元素控件,全局统筹掌控易如反掌。

让你的员工更高效的工作:适用于通用领域和特定领域的业务系统,实现框架重用、组件 重用、业务逻辑重用和程序员组装动作重用。

高性能架构,强大的支撑体系:涵盖了Web应用项目的基础架构及通用功能,包括工作流引擎、报表引擎、组织架构、权限管理、流程管控、任务管理。

源自多年运营经验:ERP、供应链、人力资源、协同办公、项目管理、设备管理跨系统整合等各种应用案例实战保障。

中国式复杂报表分析:独创的中国式报表,支持分组、交叉、条码、主从、套打、分栏、 图表混排等多种展现方式。

 

发表评论
用户名: 匿名