微内核工作流引擎体系结构

上传人:suns****4568 文档编号:118769620 上传时间:2019-12-25 格式:PDF 页数:23 大小:752.84KB
返回 下载 相关 举报
微内核工作流引擎体系结构_第1页
第1页 / 共23页
微内核工作流引擎体系结构_第2页
第2页 / 共23页
微内核工作流引擎体系结构_第3页
第3页 / 共23页
微内核工作流引擎体系结构_第4页
第4页 / 共23页
微内核工作流引擎体系结构_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《微内核工作流引擎体系结构》由会员分享,可在线阅读,更多相关《微内核工作流引擎体系结构(23页珍藏版)》请在金锄头文库上搜索。

1、微内核工作流引擎体系结构与部分解决方案参考 胡长城(银狐 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 完成日期:2005-7-24 version 1.0 联系信箱:james-fly

2、MSN :fcxiao2000 我们需要更多的原创 我们需要更多的原创 更多工作流参考文档,请访问在 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 的架构简介

3、. 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. 客户操作处理 1

4、8 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 的工作流参考模型 。 其次,您需要有过一定的软件开发经验, 对本文中所提到的一些应用模式能够迅速的理解,如:事

5、件监听机制,状态机等等。 当然,如果您曾用过或了解 jbpm,osworkflow,shark,obe 这几个开源引擎,则更加有助 微内核工作流引擎体系结构与部分解决方案参考 胡长城(银狐 999) http:/www.javafox.org 第 3 页 / 总 3 页 于明白本篇所谈及到的一些处理方式。 如果您能够对工作流常用应用需求能够有所了解,则能够更加深刻的理解,通用引擎体 系的架构和用意 2. 前言前言 到目前为止,国内还没有一篇文章讲解引擎框架的。所以很多人对“引擎”很难有一个 “结构上的认识” 。一谈论到工作流引擎,很多人的脑海只有一个概念:哦,那是一个就像发 动机样的东西。 虽

6、然说引擎的实现方式是五花八门,但是从引擎的框架和内部层次角度来看,还是有很 多共性的东西。今天我们就拿“微内核引擎”的通用体系框架来给大家做个讲解。 我想这篇的文章,对大家,不论是开发工作流引擎,还是应用工作流,都会有很多帮助。 这也是这几年来,我第一次从一个“引擎的实现角度”来讲解工作流问题。早先我写的那些 工作流模型分析 工作流授权控制模型 工作流系统中的组织模型应用解决方案 工作 流系统功能列表系列 ,以及工作流之星光等等文章,都主要是站在“理论、模型、原理、 功能”的角度来讲解工作流一些普及知识。 说到这儿,插入几句额外的话:即使上次写的工作流引擎核心调度算法与 PetriNet也 仅

7、仅是分析了几种开源引擎的“调度算法” ,虽然姑且也算是与实现接轨,但是估计能读懂得 少之又少。在那篇工作流引擎核心调度算法与在那篇工作流引擎核心调度算法与 PetriNet的文章中,我隐去了有关“引擎内 核组成”的内容,这部分内容只在我后来所提供的工作流培训中有所讲解 的文章中,我隐去了有关“引擎内 核组成”的内容,这部分内容只在我后来所提供的工作流培训中有所讲解。在下面的文章中, 我会多次提到“Engine KernelEngine Kernel”这一部分,至于 Engine Kernel 到底包含什么、如何调度、 组成。本篇文章也不会谈及。这一部分内容将在我年底准备写那篇工作流引擎内核揭秘

8、 中和盘托出。 3. 我的工作流探索之路我的工作流探索之路 在进入本文章正文之前,让我姑且浪费点笔墨来说说我的“工作流探索之路” ,虽然这不 是一个述说经历的场合,但是希望通过分析我所经历的一些过程,能够让大家明白,在探索 工作流的时候,需要积累些什么 虽然这不 是一个述说经历的场合,但是希望通过分析我所经历的一些过程,能够让大家明白,在探索 工作流的时候,需要积累些什么,才能够真正明白这篇所介绍的“引擎架构层次” 。我不 太希望明明确确长篇累牍地去写文字,告诉人们应该学习什么,那并不是一个 Preacher 所应 该做的事情。希望有兴趣而又有探索钻研精神的开发者们,从这些含糊的文字中,自己摸

9、索 出什么 明晰而又豁朗的文字,将会在我后续的工作流之魂中详细介绍。 三年前我也是那么想的“哦,那是一个就像发动机样的东西” ,三年后我已经很明白了, 那么你呢?如果你现在刚刚接触工作流,而你又看到了这篇文档,那么你是个很幸运的人了 恭喜你,你将少走很多弯路。 是的,三年前我也是那样想的,那时候我已经是 JavaUnion 的总版主了。我不再一味只去 微内核工作流引擎体系结构与部分解决方案参考 胡长城(银狐 999) http:/www.javafox.org 第 4 页 / 总 4 页 钻研干巴巴的 Java 技术(毕竟技术终究是技术) ,一头扎进了这个独特的圈子,一扎就是三年 多。 最初的

10、一年内,我几乎没有在理论方面去探究什么。那时候似乎也不能说是完全的工作 流,用现在的话说,应该叫“审批流” (一套 OA 产品中的流程处理,2002 年的时候,能够支 撑流程的 J2EE 的 OA 产品并不多,想来,我还是挺幸运的) 。那时候没有什么可以求助的人, 也没有什么可参考的文档,也主要是跟着公司内的老一辈们摸索着。 这一年虽然对工作流并没有积累多么有价值的经验(至少我们当时做得那个产品还没有 Engine 这个概念,内部的实现也过分依据于数据库的处理) , 但是对审批流的应用需求、模型、 权限需求等方面却收获不小。这可以从我早期写的工作流模型分析和工作流权限控制 模型中略窥一二。 中

11、途有过半年去做了 Data Integration 方面的项目实施和开发。这领域虽然看似跟工作流 没有任何关系,但是其很多有关“数据传输”的思想,却被整入了后来的很多工作流产品。 有空大家看看最早期的支持流程的 EAI 产品,或者如今比较火爆的 BPM,都或多或少有这方 面的影子。 这半年中,我还做了一些重要的事情:一是反思前一年做得公文流转产品;二是把 OBE 的源码翻了又翻(可惜那时候有很多朦胧不明白的地方) 。 说到这里,也有必要感谢一 下 “浆糊” 和 “踏冰” 兄弟早期的的努力, 他们于 2002 翻译的 工作流参考模型 和 XPDL 帮助了很多人。 半年之后我毅然返回工作流这个领域

12、,并且也正是在那个时候真正开始从理论、模型角 度来研究工作流。 然而,那时候国内工作流的可交流人太少了,自己坑坑洼洼的摸索,留下了很多朦胧的 地方。带着这些的朦胧,后来主持过一款工作流的研发,可惜最终以失败告终(失败的原因 是多方面的,但想来,那些朦胧之处,也成了研发中的瓶颈) 。 虽然最终失败了,但是却也 留下了很多探索中的成果,最明显的要数那篇工作流系统中的组织模型应用解决方案 ,从 那篇文档中,你也许可以感到,当时我已经努力去多研究和接触现有的抽象模型和思想。 当然这样的研究对我以后的实施和开发工作流产品,起到很多基础性帮助和指导性作用。 但那时候,也隐约感觉“工作流”这个模型中还存在一

13、个我还未探究的领域,但很可遗 憾自己那时候却一直没有想通。后来有幸去了 Justep,在那两个多月的时间里,将很多精力投 入到对“Process MethodologyProcess Methodology”研究中,才终于解决了自己的那个疑问。 从这一点上 说,我挺佩服老宋(Justep CTO)的,至少我去研究“Process Methodology” ,很大程度上被其 逼的至少在刚开始的时候,我总觉得像“Petri Net 之类的咚咚,对流程来说还是一个空洞 的理论” 。 (可见那时候我得想法还是多么的幼稚,当然,很庆幸的是,我现在已经不这么认 为了) 当时 Justep Biz5.0 刚

14、刚开始研发,为了不泄密,所以没有没有写过什么专门的文档来阐述 当时的收获,但是倒是写了很多零散的收获放在我的 Blog 上。 离开 Justep 之后,来到了现在的公司,又重构了一款流程产品。至少这时候自我感觉已 经“积累的很敦实了” 。很庆幸在这里碰到一位我很佩服的哥们“切尔斯基” 。他在模式方面 扎实的基本功,为这边的引擎奠定了一个很不错的基础。遗憾的是,我来后没有多久他就离 开了公司,为此写了篇送同仁别 。 微内核工作流引擎体系结构与部分解决方案参考 胡长城(银狐 999) http:/www.javafox.org 第 5 页 / 总 5 页 如今,这边的引擎已经重构完了。而我基本上也

15、将不再涉足 workflow 开发,主要把精力 和心思转移到其它领域。如今写这篇文档,姑且算是前一段重构引擎的总结。也希望这篇文 档,能够让更多的人“真真正正的理解工作流引擎” 。 4. 为什么要引入微内核为什么要引入微内核 为什么要引入微内核引擎这个概念,大的道理就不说了,说点自己的感悟吧。前段时间 重构这边的引擎,由于早期引擎内部与外部基本上娇柔在一起,弄得我重构之路上疲惫不堪, 最大的问题是任何地方的修改都很容易“牵一发而动全身” 。最终造成虽然引擎这边要重构的 内容很多,但是基本上别人都没办法修改,基本上都落在我一人身上。最终我不得不首先把 引擎所有部分全部打散,重新抽象和组装。 经过

16、两轮的重构,这边的引擎逐渐在朝着“微内核”趋势发展。这样目前很多引擎所依 赖的服务和组件,即使别人不懂引擎这一块构造,但是依据扩展接口和规则,可以较为容易 的扩展和修改一些实现类。 其实微内核的思想,就是“降低组件耦合度”的延伸。当然后来的 IoC 发展也为“微内 核”实现提供很好的支撑。当然微内核更加讲究的是一个“体系上、全局上”的设计思路。 5. 工作流引擎的位置工作流引擎的位置 本篇的主旨是讲“引擎的内部架构体系” ,微内核只是一种更加良性、易扩展的方式。但 是在讲解引擎之前,先让我们给工作流引擎摆正一个位置: 所以平常我们所说的那些审批流产品,并不是真正的“工作流” ,那只是在工作流之上一 层的产物。好的审批流产品会内嵌“工作流引擎”负责流

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号