研究工作流及其相关技术的人一定知道这个组织——工作流管理联盟(简称WfMC,Workflow Management Coalition),其成立于1993年。作为工作流技术标准化的工业组织,WfMC提出的工作流系统参考模型(Reference Model)无疑为各家工作流软件厂商的系统设计规划提供了最权威的参考,乃至标准。下面就是这个参考模型:
首先,最重要的部分就是中间的工作流引擎,可以说它就是整个工作流系统的心脏,因为所有的工作流系统都要使用工作流引擎来:
1、为运行中的流程实例解释我们的流程定义——这些定义一般都是由接口1获得的。
2、组织调度流程的实例,推进工作流程的前进,这包括条件流转、分支聚合、父子流程……
3、处理工作任务的分配、接受、提交等行为。——为无论是人工干预或自动执行的任务,提供计算的支持。
4、管理调用其他的4个接口——这可能包括解释工作流程定义中的一些脚本。
工作流引擎做的工作就像心脏把血液不断的送到我们身体的各个部分一样,关于工作流引擎是如何架构和设计的,这相当复杂,不过我会在以后的文章和大家讨论。
然后,说说工作流系统“身体”的五个部分吧,也就是五个接口:
接口1——流程定义工具,前面提到过我们使用它来定义业务流程,所谓的业务流程定义一般来说就是一段XML,它遵循XPDL(Xml Process Define Language)标准或BPEL(Business Process Execution Language)标准或厂商自定义的标准等等。事实上你就可以把它理解为一个产生XML的图形化建模工具。这种图形化建模工具各个厂商的技术实现可谓五花八门,国内的一些厂商,例如西安协同采用的是java swing,joinwork使用的是flash,而我做的工作流系统使用的是ActiveX;国际上的一些开源项目,如jBPM使用的是基于Eclipse的插件,Shark Workflow使用的则是JAWE——一种基于Java技术实现的XPDL建模工具。当然,它们的目的都是——产生XML形式的流程定义。
接口2——工作流客户端应用,这很有意思,当我们的业务流程设计好了、运行起来了,那么我们——人如何与工作流引擎交互呢?这时候,工作流引擎就通过接口2,为我们提供各种各样的工作/任务列表、工作表单、流程列表以及一些查询功能。我们通过这个接口,就可以办理任务、填写表单……从而与工作流引擎沟通。
接口3——应用程序执行服务,工作流引擎通过这个接口去执行一些外部的或面向专门职能领域的应用程序,例如财务系统、报表系统等,让这些第三方系统参与进来,从而完成定义的工作流程。这看起来就像EAI(——Enterprise Application Integration)的特性,而事实上它也可以说就是Workflow EAI。同时我们也可以发现接口2和接口3的界定很模糊,难道接口2提到的工作列表不能算是外部的应用程序么?没错!这个问题确实存在,这也就是为什么荷兰工作流大师Aalst在其著作中写道“建议每个应用程序都由此‘应用程序执行服务’打开”的原因,他是在建议统一这两个接口么?我也不知道。总之,接口3在标准化方面众口不一。
接口4——与其它工作流系统的定制/交互服务,用来处理若干自治工作流系统之间的工作交换,例如案例转移、工作项外包等等。事实上,WfMC组织的初衷是想通过这个接口来连接各个不同的工作流引擎/系统,使它们在一个统一的标准下工作和交流。想法是好的,但是,由于种种原因吧,个人认为是商业利益的因素以及WfMC还没有强大到能“号令江湖,莫敢不从”的地步,所以到目前为止,接口4基本不被支持,也就是说,各大厂商的工作流产品并不能用同一种语言对话。
接口5——管理和监控工具,虽然很多工作流系统(特别是开源工作流系统)实现的最简单部分的就是这个接口,但我认为最能体现工作流系统在管理上应用价值的就是这个部分,它主要被用来搜集管理信息,这包括诸如工作流系统功能管理工具、流程实时监视和控制工具以及工作效率分析和流程覆盖面分析等各种商业智能工具,这为提升企业的管理能力、优化重组企业的业务流程、分析企业内部的工作效率瓶颈等提供了重要的量化数据支持。俗话说“工业化解放人类的体力,信息化解放人类的智力”,这个接口提供的功能不正是解放了企业领导和决策者们智力的么,而这正是信息化的初衷,工作流的最终价值所在。而传统的工作流系统在这个接口上的“短板”,正为BPM(Business Process Management)这个概念的支持者提供了攻击工作流系统的口实,BPM系统在这个接口上的强化成了很多人认为“Workflow系统”不等同于或弱于“BPM系统”的最重要原因,事实上,不过是些概念而已,如过眼云烟……
总结一下,五大接口各自强调了什么?接口1——(流程)定义;接口2——强化工作列表和应用程序集成;接口3——(外部应用程序的)参与;接口4——(不同工作流系统间的)连接;接口5——搜集管理信息。
还有一些补充观点:
接口3和接口5标准化工作进展较为缓慢。
接口3和接口4问题很多,主要是什么问题?还不就是流程和工作任务的事务、回滚(包括被动退回和主动取回的任务)问题,在这两个问题上如何处理、怎么处理好、如何保持原子性或如何进行“补偿”,都是很有些发挥空间的。
 
本文转自胡奇 51CTO博客,原文链接:http://blog.51cto.com/huqicto/280651,如需转载请自行联系原作者

理解工作流系统参考模型相关推荐

  1. 工作流管理系统参考模型简介

    在阐述工作流引擎之前,我们来了解一下工作流技术的基本知识.早在几年前,为了建立工作流管理系统的相关标准,国际上成立了一个称为"工作流管理联盟"(简称WFMC)的国际组织.她提出了有 ...

  2. 工作流系统理解(1)

    分成 工作流建模 工作流引擎 工作流系统,根据个人理解,通过工作流建模工具进行工作流的模型建立,定义好XDPL文件,工作流引擎根据XDPL定义文件进行解释执行,完成工作流的各种任务.工作流建模系统应该 ...

  3. 工作流系统开发之二十二 dotnet版工作流引擎

    工作流管理系统为实现流程的自动化,必须包含一个工作流引擎,工作流引擎负责流程的定义,解释和运转.流程引擎是对业务流程的一个抽象,因此工作流引擎的设计模型是决定流程功能的重中之重,将直接影像流程的各个环 ...

  4. 95. 基于Notes/Domino的文档工作流系统(七)

    本文继续剖析基于Notes/Domino的文档工作流系统的设计和代码,以方便用户能应用和创建自己的工作流.(CSDN的下载资源一旦上传就不能修改,很不方便,现已将下载地址改到GitHub,若发现下载有 ...

  5. 理解Android系统的进程间通信原理(二)----RPC机制

    理解Android系统中的轻量级解决方案RPC的原理,需要先回顾一下JAVA中的RMI(Remote Method Invocation)这个易于使用的纯JAVA方案(用来实现分布式应用).有关RMI ...

  6. 理解Android系统的进程间通信原理------RPC机制

    理解Android系统中的轻量级解决方案RPC的原理,需要先回顾一下JAVA中的RMI(Remote Method Invocation)这个易于使用的纯JAVA方案(用来实现分布式应用).有关RMI ...

  7. 一步一步学习开发BPM工作流系统--------(一)为什么要开发工作流系统

    写下这个这题目我知道意味着一项艰巨冗长的任务开始了,做工作流方面的研发已经7年了,总算能拿出一些东西来,虽然走过很多弯路,但最终都变成收获.今天把一些心得和成果共享出来,和大家一起交流.探讨,也希望能 ...

  8. java表单自动绑定数据_java工作流系统表单自动 获取数据

    关键词:工作流快速开发平台  工作流流设计  业务流程管理   asp.net 开源工作流  bpm工作流系统  java工作流主流框架  自定义工作流引擎 表单设计器  流程设计器 什么是数据自动获 ...

  9. 理解Linux系统中的load average(图文版)转载

    理解Linux系统中的load average(图文版) 博客分类: Linux linux load nagios  一.什么是load average? linux系统中的Load对当前CPU工作 ...

最新文章

  1. mysql中blob_MySQL中的BLOB类型
  2. 中天亮剑——打击网络风暴侵袭
  3. android 电源管理 关闭屏幕,Android之PowerManager电源管理
  4. 我的Android进阶之旅------gt;Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed....
  5. 量角器中Selenium定位器的完整指南(示例)
  6. MySQL 索引分析除了 EXPLAIN 还有什么方法?
  7. VirtualBox下安装MacOS11
  8. 揭秘手机行业未来AI之路
  9. 最近在学OAuth2.0协议,给大家分享一下
  10. 编程之美读书笔记1.3 —— 一摞烙饼的排序
  11. Elasticsearc 6.x以后不再支持mapping下多个type
  12. 速看,PMP备考通关宝典来袭
  13. 量子计算机的加密安全性,公钥加密机制被量子计算机攻破,传统加密方式不再安全...
  14. 基于WeMos的WiFi避障小车
  15. 关于win10无法正常关机
  16. JAVA高效批量插入数据到数据库demo
  17. Redhat 8 制作本地光盘镜像yum源
  18. 树莓派启动自动连接WiFi
  19. Angular中input双向绑定
  20. 制动电阻 DF8B型机车电阻制动装置-奥创电子

热门文章

  1. vscode配置live-server转发代理
  2. OCR算法:CNN+BLSTM+CTC架构(VS15)
  3. UBuntu安裝使用PIP
  4. gRPC-Web发布,REST又要被干掉了?
  5. postgreSql 常用操作总结
  6. 微信小程序把玩(三十二)Image API
  7. 在centos7上安装Jenkins
  8. 为什么 MySQL 回滚事务也会导致 ibd 文件增大?
  9. Cisco开CASE方法
  10. Java程序优化之享元模式