没有合适的资源?快使用搜索试试~ 我知道了~
首页微内核工作流引擎 体系结构与部分解决方案.pdf
微内核工作流引擎 体系结构与部分解决方案.pdf
需积分: 4 97 浏览量
更新于2023-05-30
评论
收藏 755KB PDF 举报
微内核工作流引擎 体系结构与部分解决方案参考 The Reference of Micro Kernel Workflow Engine Architecture and Some Solutions 版本:1.0 作者 :胡长城 [ 银狐999 ] http://www.javafox.org http://www.wfchina.org http://blog.csdn.net/james999 完成日期:2005-7-24 version 1.0 联系信箱:james-fly@vip.sina.com MSN :fcxiao2000@hotmail.com 我们需要更多的原创······ 更多工作流参考文档,请访问在http://www.javafox.org 注:转载文章,请注明作者信息。
资源详情
资源评论
资源推荐

微内核工作流引擎体系结构与部分解决方案参考 胡长城(银狐 999)
http://www.javafox.org 第 1 页 / 总 1 页
微内核工作流引擎
体系结构与部分解决方案参考
The Reference of Micro Kernel Workflow Engine
Architecture and Some Solutions
版本:1.0
作者 :胡长城 [ 银狐 999 ]
http://www.javafox.org
http://www.wfchina.org
http://blog.csdn.net/james999
完成日期:2005-7-24 version 1.0
联系信箱:james-fly@vip.sina.com
MSN :fcxiao2000@hotmail.com
我们需要更多的原创······
更多工作流参考文档,请访问在 http://www.javafox.org
注:转载文章,请注明作者信息。

微内核工作流引擎体系结构与部分解决方案参考 胡长城(银狐 999)
http://www.javafox.org 第 2 页 / 总 2 页
目录
1. 阅读本文的基础知识..................................................... 2
2. 前言 .................................................................. 3
3. 我的工作流探索之路..................................................... 3
4. 为什么要引入微内核..................................................... 5
5. 工作流引擎的位置....................................................... 5
6. 微内核工作流引擎的结构概述............................................. 6
6.1. 七个层次划分....................................................... 6
6.2. Shark 的架构简介 ................................................... 7
6.3. jBpm 的结构简介 .................................................... 9
7. 微内核工作流引擎的七个层次介绍........................................ 10
7.1. 外设层 ........................................................... 10
7.2. 接口层 ........................................................... 11
7.3. 交互代理层........................................................ 11
7.4. 引擎内核处理层.................................................... 11
7.5. 引擎运行服务层.................................................... 12
7.6. 扩展实现层........................................................ 12
7.6.1. 支撑流程运行的(Sustentive).............................. 12
7.6.1.1. 组织模型适配.......................................... 12
7.6.1.2. 流程实例存储服务...................................... 14
7.6.1.3. 应用适配.............................................. 15
7.6.2. 辅助流程运行的(Assistant)................................... 16
7.6.2.1. 条件处理.............................................. 17
7.6.2.2. 功能处理.............................................. 17
7.6.2.3. 客户操作处理.......................................... 18
7.6.3. 增强流程运行的(Enactment)................................... 18
7.6.3.1. 策略扩展.............................................. 19
7.6.3.2. 事件监听扩展.......................................... 20
7.6.3.3. 超时处理.............................................. 21
7.6.3.4. 代理人处理............................................ 22
7.6.3.5. 工作日历.............................................. 22
7.7. 基础组件层........................................................ 22
8. 结尾 ..................................................................... 22
1. 阅读本文的基础知识
本篇并不适合工作流的初学者,在阅读本篇之前,请您花一定的时间,弄懂下面所说的
一些知识点,这样有助于您更加深刻的理解本文的内容。
首先您需要读懂 WfMC 的《工作流参考模型》。 其次,您需要有过一定的软件开发经验,
对本文中所提到的一些应用模式能够迅速的理解,如:事件监听机制,状态机等等。
当然,如果您曾用过或了解 jbpm,osworkflow,shark,obe 这几个开源引擎,则更加有助

微内核工作流引擎体系结构与部分解决方案参考 胡长城(银狐 999)
http://www.javafox.org 第 3 页 / 总 3 页
于明白本篇所谈及到的一些处理方式。
如果您能够对工作流常用应用需求能够有所了解,则能够更加深刻的理解,通用引擎体
系的架构和用意
2. 前言
到目前为止,国内还没有一篇文章讲解引擎框架的。所以很多人对“引擎”很难有一个
“结构上的认识”。一谈论到工作流引擎,很多人的脑海只有一个概念:哦,那是一个就像发
动机样的东西。
虽然说引擎的实现方式是五花八门,但是从引擎的框架和内部层次角度来看,还是有很
多共性的东西。今天我们就拿“微内核引擎”的通用体系框架来给大家做个讲解。
我想这篇的文章,对大家,不论是开发工作流引擎,还是应用工作流,都会有很多帮助。
这也是这几年来,我第一次从一个“引擎的实现角度”来讲解工作流问题。早先我写的那些
《工作流模型分析》《工作流授权控制模型》《工作流系统中的组织模型应用解决方案》《工作
流系统功能列表系列》,以及《工作流之星光》等等文章,都主要是站在“理论、模型、原理、
功能”的角度来讲解工作流一些普及知识。
说到这儿,插入几句额外的话:即使上次写的《工作流引擎核心调度算法与 PetriNet》也
仅仅是分析了几种开源引擎的“调度算法”,虽然姑且也算是与实现接轨,但是估计能读懂得
少之又少。在那篇《工作流引擎核心调度算法与 PetriNet》的文章中,我隐去了有关“引擎内
核组成”的内容,这部分内容只在我后来所提供的工作流培训中有所讲解。在下面的文章中,
我会多次提到“Engine Kernel”这一部分,至于 Engine Kernel 到底包含什么、如何调度、
组成。本篇文章也不会谈及。这一部分内容将在我年底准备写那篇《工作流引擎内核揭秘》
中和盘托出。
3. 我的工作流探索之路
在进入本文章正文之前,让我姑且浪费点笔墨来说说我的“工作流探索之路”,虽然这不
是一个述说经历的场合,但是希望通过分析我所经历的一些过程,能够让大家明白,在探索
工作流的时候,需要积累些什么,才能够真正明白这篇所介绍的“引擎架构层次”。——我不
太希望明明确确长篇累牍地去写文字,告诉人们应该学习什么,那并不是一个 Preacher 所应
该做的事情。希望有兴趣而又有探索钻研精神的开发者们,从这些含糊的文字中,自己摸索
出什么—— 明晰而又豁朗的文字,将会在我后续的《工作流之魂》中详细介绍。
三年前我也是那么想的“哦,那是一个就像发动机样的东西”,三年后我已经很明白了,
那么你呢?如果你现在刚刚接触工作流,而你又看到了这篇文档,那么你是个很幸运的人了
——恭喜你,你将少走很多弯路。
是的,三年前我也是那样想的,那时候我已经是 JavaUnion 的总版主了。我不再一味只去

微内核工作流引擎体系结构与部分解决方案参考 胡长城(银狐 999)
http://www.javafox.org 第 4 页 / 总 4 页
钻研干巴巴的 Java 技术(毕竟技术终究是技术),一头扎进了这个独特的圈子,一扎就是三年
多。
最初的一年内,我几乎没有在理论方面去探究什么。那时候似乎也不能说是完全的工作
流,用现在的话说,应该叫“审批流”(一套 OA 产品中的流程处理,2002 年的时候,能够支
撑流程的 J2EE 的 OA 产品并不多,想来,我还是挺幸运的)。那时候没有什么可以求助的人,
也没有什么可参考的文档,也主要是跟着公司内的老一辈们摸索着。
这一年虽然对工作流并没有积累多么有价值的经验(至少我们当时做得那个产品还没有
Engine 这个概念,内部的实现也过分依据于数据库的处理),但是对审批流的应用需求、模型、
权限需求等方面却收获不小。这可以从我早期写的《工作流模型分析》和《工作流权限控制
模型》中略窥一二。
中途有过半年去做了 Data Integration 方面的项目实施和开发。这领域虽然看似跟工作流
没有任何关系,但是其很多有关“数据传输”的思想,却被整入了后来的很多工作流产品。
有空大家看看最早期的支持流程的 EAI 产品,或者如今比较火爆的 BPM,都或多或少有这方
面的影子。
这半年中,我还做了一些重要的事情:一是反思前一年做得公文流转产品;二是把 OBE
的源码翻了又翻(可惜那时候有很多朦胧不明白的地方)。—— 说到这里,也有必要感谢一
下 “浆糊”和“踏冰”兄弟早期的的努力,他们于 2002 翻译的《工作流参考模型》和《XPDL》
帮助了很多人。
半年之后我毅然返回工作流这个领域,并且也正是在那个时候真正开始从理论、模型角
度来研究工作流。
然而,那时候国内工作流的可交流人太少了,自己坑坑洼洼的摸索,留下了很多朦胧的
地方。带着这些的朦胧,后来主持过一款工作流的研发,可惜最终以失败告终(失败的原因
是多方面的,但想来,那些朦胧之处,也成了研发中的瓶颈)。 虽然最终失败了,但是却也
留下了很多探索中的成果,最明显的要数那篇《工作流系统中的组织模型应用解决方案》,从
那篇文档中,你也许可以感到,当时我已经努力去多研究和接触现有的抽象模型和思想。—
— 当然这样的研究对我以后的实施和开发工作流产品,起到很多基础性帮助和指导性作用。
但那时候,也隐约感觉“工作流”这个模型中还存在一个我还未探究的领域,但很可遗
憾自己那时候却一直没有想通。后来有幸去了 Justep,在那两个多月的时间里,将很多精力投
入到对“Process Methodology”研究中,才终于解决了自己的那个疑问。—— 从这一点上
说,我挺佩服老宋(Justep CTO)的,至少我去研究“Process Methodology”,很大程度上被其
逼的——至少在刚开始的时候,我总觉得像“Petri Net 之类的咚咚,对流程来说还是一个空洞
的理论”。(可见那时候我得想法还是多么的幼稚,当然,很庆幸的是,我现在已经不这么认
为了)
当时 Justep Biz5.0 刚刚开始研发,为了不泄密,所以没有没有写过什么专门的文档来阐述
当时的收获,但是倒是写了很多零散的收获放在我的 Blog 上。
离开 Justep 之后,来到了现在的公司,又重构了一款流程产品。至少这时候自我感觉已
经“积累的很敦实了”。很庆幸在这里碰到一位我很佩服的哥们“切尔斯基”。他在模式方面
扎实的基本功,为这边的引擎奠定了一个很不错的基础。遗憾的是,我来后没有多久他就离
开了公司,为此写了篇《送同仁别》。

微内核工作流引擎体系结构与部分解决方案参考 胡长城(银狐 999)
http://www.javafox.org 第 5 页 / 总 5 页
如今,这边的引擎已经重构完了。而我基本上也将不再涉足 workflow 开发,主要把精力
和心思转移到其它领域。如今写这篇文档,姑且算是前一段重构引擎的总结。也希望这篇文
档,能够让更多的人“真真正正的理解工作流引擎”。
4. 为什么要引入微内核
为什么要引入微内核引擎这个概念,大的道理就不说了,说点自己的感悟吧。前段时间
重构这边的引擎,由于早期引擎内部与外部基本上娇柔在一起,弄得我重构之路上疲惫不堪,
最大的问题是任何地方的修改都很容易“牵一发而动全身”。最终造成虽然引擎这边要重构的
内容很多,但是基本上别人都没办法修改,基本上都落在我一人身上。最终我不得不首先把
引擎所有部分全部打散,重新抽象和组装。
经过两轮的重构,这边的引擎逐渐在朝着“微内核”趋势发展。这样目前很多引擎所依
赖的服务和组件,即使别人不懂引擎这一块构造,但是依据扩展接口和规则,可以较为容易
的扩展和修改一些实现类。
其实微内核的思想,就是“降低组件耦合度”的延伸。当然后来的 IoC 发展也为“微内
核”实现提供很好的支撑。当然微内核更加讲究的是一个“体系上、全局上”的设计思路。
5. 工作流引擎的位置
本篇的主旨是讲“引擎的内部架构体系”,微内核只是一种更加良性、易扩展的方式。但
是在讲解引擎之前,先让我们给工作流引擎摆正一个位置:
所以平常我们所说的那些审批流产品,并不是真正的“工作流”,那只是在工作流之上一
层的产物。好的审批流产品会内嵌“工作流引擎”负责流程的调度维护。当然也不得不说,
部分国内的审批流产品,其内部实现与“工作流”是没有多大关系的。
剩余22页未读,继续阅读













scnu_yzy
- 粉丝: 4
- 资源: 22
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- ARM Cortex-A(armV7)编程手册V4.0.pdf
- ABB机器人保养总结解析.ppt
- 【超详细图解】菜鸡如何理解双向链表的python代码实现
- 常用网络命令的使用 ipconfig ping ARP FTP Netstat Route Tftp Tracert Telnet nslookup
- 基于单片机控制的DC-DC变换电路
- RS-232接口电路的ESD保护.pdf
- linux下用time(NULL)函数和localtime()获取当前时间的方法
- Openstack用户使用手册.docx
- KUKA KR 30 hA,KR 60 hA机器人产品手册.pdf
- Java programming with JNI
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0