`
hongsoft
  • 浏览: 291827 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

怎么装载流程定义<!----><o:p></o:p>

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

<o:p> </o:p>

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

/**
*
输入的是流程定义文件名,返回的是流程定义的包ID<o:p></o:p>

*/<o:p></o:p>

public String packageLoad(String xpdlName) throws MyException<o:p></o:p>

    {   <o:p></o:p>

  //(1)返回库管理器<o:p></o:p>

       RepositoryMgr rm = Shark.getInstance().getRepositoryManager();<o:p></o:p>

 //(2)库管理器得到包ID<o:p></o:p>

       String pkgId = rm.getPackageId(xpdlName);<o:p></o:p>

//(3)得到包管理器<o:p></o:p>

        PackageAdministration pa = Shark.getInstance().getAdminInterface().getPackageAdministration();<o:p></o:p>

       if (!pa.isPackageOpened(pkgId))<o:p></o:p>

       {<o:p></o:p>

           try<o:p></o:p>

           {<o:p></o:p>

//(4)装载流程定义<o:p></o:p>

              pa.openPackage(xpdlName);<o:p></o:p>

           }<o:p></o:p>

           catch (Exception e)<o:p></o:p>

           {<o:p></o:p>

              throw new MyException (e);<o:p></o:p>

           }<o:p></o:p>

       }<o:p></o:p>

       return rm.getPackageId(xpdlName);<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

(1)返回库管理器<o:p></o:p>

该功能实际是通过SharkEngineManger来实现的,如下:<o:p></o:p>

public RepositoryMgr getRepositoryManager () {<o:p></o:p>

      return SharkEngineManager.getInstance().getObjectFactory().createRepositoryManager();<o:p></o:p>

   }  <o:p></o:p>

SharkRepositoryMgr的实现类是RepositoryManager<o:p></o:p>

(2) 库管理器得到包ID<o:p></o:p>

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

(3)得到包ID,余下的事情交由PackageAdministration来完成<o:p></o:p>

<o:p> </o:p>

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

<o:p> </o:p>

<o:p> </o:p>

<o:p> </o:p>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics