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

    技术2022-05-20  27

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

    发布时间:2006.03.10 06:13      来源:     作者:

     

    怎么装载流程定义

     

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

     

     

     

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

     

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


    最新回复(0)