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

    技术2022-05-11  24

    怎么装载流程定义

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

     

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

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

     

     

     


    最新回复(0)