介 绍
Enhydra Shark 项目以一种不同的方式交付了一个工作流服务器。
Enhydra Shark 是一个可扩展的工作流引擎框架,它包括一个完全基于 WFMC 规范的标准实现,它使用XPDL(没有任何自己新的扩展)作为自身的工作流流程定义格式,使用WFMC 的 "ToolAgents" API 作为系统活动的服务器端的执行形式。
Enhydra JaWE 图形XPDL编辑器可用于为 Enhydra Shark 生成 XPDL 流程定义!
ToolAgents 可用于 JavaScript,JDBC 访问,EJB 访问,纯 Java 类,CORBA 调用,EMail,Webservice 调用,等等...
流程与活动实例的存储通过一个可配置的持久化 API 来完成。持久层实现采用的标准是轻量级的Enhydra DODS O/R mapping 工具。更多重量级 J2EE EJB 持久层选择方案在下面展示。
每个单一构件(持久层,事务管理,脚本引擎,流程库...)可用于它的标准实现或被项目特定模块所扩展/取代。
通过这种方式,Enhydra Shark 可作为一个简单的位于servlet 或 swing 应用或运行在J2EE 容器(支持会话 bean API 以及用于 EJB 持久化)中的"Java library",CORBA ORB 或 Web 服务来使用。
工作流引擎内核为高负载环境下的活动工作流对象提供可配置的 LRU 缓存。缓存可在集群部署时关闭。
当工作流运行时,WFMC WDF API 规范将用来把 JAWe 编辑器或 selfwritten 程序附加在运行期实例信息上,甚至修改实例。使用这一方法,Enhydra Shark支持动态工作流机制,能修改其自身来支持更复杂的工作流环境或组织的异常处理。
通常,基于 Swing 的管理GUI可用于管理工作。JMX 扩展和基于 HTML 的管理客户端也可用于管理。
其他 API 可用于知识库访问,日志,知识库持久化,事件通知,以及为转换评估(transition evaluations)设计的脚本引擎适配器。
ObjectWeb 工作流工作组
2003 年 12 月,新的 ObjectWeb 工作流工作组会议首次召开。
本次会议的目标是在当前 ObjectWeb 工作流项目,也就是在 "Enhydra Shark"、"COW" 和 "Bonita" 之间确定可行的协作规则。
会议达成的共识是,这些组件的 API 应该遵循各自的标准(WFMC,OMG,BPEL)。这些组件将会是未来独立工作流引擎项目的组成部分。
所有组件将不会依赖于特定的运行环境(Swing,Servlets,J2EE/EJB,CORBA...)。
要选择一个通用组件模型("glue"),当前非常可能的建议是采用 "Fractal"。
新的邮件列表已经建立,以方便讨论日常工作流工作组事宜和支持项目间的合作。该列表可在 http://www.objectweb.org/wws/info/wow 上找到。
其它达成的共识是使用 Enhydra JaWE 作为 基于XPDL进行流程定义的通用编辑器。
对WFMC WDF(工作流定义功能)的研究将表明,该 API 是否适合为流程和活动实例进行动态修改。如果 WDF 成为 API 的首选,JaWE 将支持该 API 以在运行期间可以进行图形化观看和实例修改。
以下列出了初步确定的组件列表:
模型库
映射模块,包括到ToolAgents,脚本语言/引擎,以及参与者(用户和组)的映射
流程和活动实例持久化(基于 Enyhdra DODS, Speedo, EJB's,...)
脚本引擎适配器/包装器,适用于不同脚本语言(JavaScript, Python,...)的流程转换评估。
活动流程和活动实例的运行期缓存(Perseus ?)
事务管理(GOTM ?)
ToolAgents
分派API,用于动态参与者映射
通知 API(Jabber, JMS, ...)
日志(系统日志和管理活动日志)
截止期(Deadline)管理(活动截止期(deadlines), 活动持续时间(durations), ...)
记时器(Quartz, J2EE Timer Services,...)
升级(Escalation)
Enhydra Shark 架构
根据上述已达成共识的Shark组件,当前 Enhydra Shark 架构目标如下图所示。
请注意!引用、转贴本文应注明原译者:Rosen Jiang 以及出处:
http://www.blogjava.net/rosen