怎么装载流程定义
上篇文章已经讨论过,流程定义的装载只需要做一次;下面讨论怎么装载的问题。
首先给出流程定义的装载的代码,其中的序号对应于后面的解释:
/**
*输入的是流程定义文件名,返回的是流程定义的包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