Shark与OMG

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Shark让更多的人联想到了XPDL,而忘了OMG的一些东东。

Shark不仅支持XPDL,而且还扩展了OMG's Workflow Management Facility Specification

所以你会在Shark中见到 WfExecutionObject,WfRequester等等让你并不是非常明白的类。

如果研究Shark,那么首先可以花费一些时间将 wfmopen 这个引擎研究一下。两者没有什么必然的联系,只是wfmopen简单一些,其中给出了一些omg core对象的关系和说明,而shark却很少提及。

WfMOpen is a J2EE based implementation of a workflow facility (workflow engine) as proposed by the Workflow Management Coalition (WfMC) and the Object Management Group (OMG).

The workflow component is based on a set of JAVA interfaces that define an API for a workflow management facility. The basic "omgcore" interfaces follow OMG's Workflow Management Facility Specification, V1.2 very closely, while making some modifications to adapt the CORBA service to the established design practices for a Java API.

下面这张图,很值得推敲。

http://wfmopen.sourceforge.net/userapi/de/danet/an/workflow/omgcore/doc-files/domain.gif

这个中的关系弄明白了,对shark的核心的类关系,也就大致了解了。

在下面这篇文档中,有这几个类的简要介绍:

http://www-db.stanford.edu/CHAIMS/Doc/RelatedWork/SWAP_jFLOW_CS446/paper.htm

其中还稍稍提及了流程实例的应该如何创建,看完以后,对你明白shark的流程创建非常有帮助。从这一点上你需要明白,shark的很多设计思想,是基于OMG规范的。

不过,在shark中,有client和internal之分。

下面的代码摘自WfProcessWrapper中创建流程实例的一段,为了看得直接,有删节:

public WfProcess create_process (SharkTransaction t,WfRequester requester) {

WfProcessMgrInternal mgr=WfProcessMgrWrapper.getProcessMgrImpl(t,name);

WfRequesterInternal req=

SharkEngineManager.getInstance().getObjectFactory().createDefaultRequester(userAuth);

WfProcessInternal procInternal=mgr.create_process(t,req);

WfProcess proc=

SharkEngineManager.getInstance().getObjectFactory()

.createProcessWrapper(userAuth,procInternal.key(t));

return proc;

}

Shark的org.enhydra.shark.api.client.wfmodel 包类似于wfmopen中的de.danet.an.workflow.omgcore ,是对omg的核心类的接口定义。

但是Shark却还有内部重要的api接口:org.enhydra.shark.api.internal 包。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航