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

来源:互联网 发布:mysql清除数据库缓存 编辑:程序博客网 时间:2024/05/19 18:17

怎么装载流程定义

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

 

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

/**
*
输入的是流程定义文件名,返回的是流程定义的包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();

   } 

SharkRepositoryMgr的实现类是RepositoryManager

(2) 库管理器得到包ID

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

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

 

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

 

 

 

原创粉丝点击