shark工作流源代码学习(四)

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

怎么装载流程定义

上篇文章已经讨论过,流程定义的装载只需要做一次;下面讨论怎么装载的问题。

首先给出流程定义的装载的代码,其中的序号对应于后面的解释:

/**

*输入的是流程定义文件名,返回的是流程定义的包ID

*/

public String packageLoad(String xpdlName) throws MyException

{

//(1)返回库管理器

RepositoryMgr rm = Shark.getInstance().getRepositoryManager();

//(2)用库管理器得到包ID

String pkgId = rm.getPackageId(xpdlName);

//(3)得到包管理器

PackageAdministration pa = Shark.getInstance().getAdminInterface().getPackageAdministration();

if (!pa.isPackageOpened(pkgId))

{

try

{

//(4)装载流程定义

pa.openPackage(xpdlName);

}

catch (Exception e)

{

throw new MyException (e);

}

}

return rm.getPackageId(xpdlName);

}

(1)返回库管理器

该功能实际是通过SharkEngineManger来实现的,如下:

public RepositoryMgr getRepositoryManager () {

return SharkEngineManager.getInstance().getObjectFactory().createRepositoryManager();

}

Shark中RepositoryMgr的实现类是RepositoryManager

(2) 用库管理器得到包ID

该功能实现时,实现取出SharkUtilities.EXTERNAL_PACKAGES_REPOSITORY下的全部流程定义,再进行文件名的比较.

(3)得到包ID后,余下的事情交由PackageAdministration来完成

作者又名HongSoft,研究领域:1)基于工作流的BPM系统研究2)基于JAVA的信息安全技术.欢迎和大家讨论JAVA相关各方面问题 hongbosoftware@163.com

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