[轉] XPDL parser

          轉自:http://blog.csdn.net/windsails/archive/2005/03/03/309851.aspx

          XPDL作為一種由WfMC提出來的比較規范的工作流描述語言,很好的解決了工作流的定義的問題,也就是WfMC提出的工作流參考模

          型中的接口一,此外,對于工作流的核心而言,如何解釋XPDL也是關鍵。

          JaWE是目前公認的比較好的基于Java編寫的圖形化工作流定義工具,它使用的描述語言正是XPDL。如果你自己想做個簡單的工作

          流處理引擎,了解和解釋XPDL是關鍵的第一步,既然有了JaWE這個這么好的工具,而且它還是開源的,那么為什么不也利用它的

          函數庫來解釋XPDL呢?

          JaWE是一個開源的項目,最新的版本可以在http://jawe.objectweb.org下載。

          如果你只是利用它作為XPDL的解釋器的話,只需要以下的Java庫文件:
          jawexpdl.jar

          它同時需要幾個運行庫:
          xercesImpl.jar
          xml-apis.jar
          jawelan.jar (如果不涉及中文的描述,可以不要)

          另外如果想直接用JaWE的一些現成的圖形化工具庫,則需要jawe.jar

          下面是個簡單的代碼例子;

          package org.aas.readXPDL;

          import org.enhydra.jawe.xml.*;
          import org.enhydra.jawe.xml.elements.*;
          import java.util.*;

          /**
           * @author Jonathan
           * @version v0.1
           * Main: TODO To declare the description of this type
           */
          public class Main {

              public static void main(String[] args) {
                  XMLInterfaceForJDK13 xml = new XMLInterfaceForJDK13();
                  String strFilename = "XXX.xpdl";
                  int i = 0;
                  XMLElement subElement = null;
                  if (xml.doesPackageFileExists(strFilename))
                  {
                      System.out.println("OK!!!");         
                      org.enhydra.jawe.xml.elements.Package pkg = xml.openPackage(strFilename,false);
                      // pkg = xml.getPackageByFilename(strFilename);
                      // System.out.println("Version:" + pkg.getVersion());
                      System.out.println("ElementCount:" + pkg.getElementsCount());
                      System.out.println("Is made by JaWE:" + pkg.isMadeByJaWE());
                      System.out.println("Package to string:" + pkg.toString());
                      System.out.println("ID:" + xml.getIDFromFile(strFilename));
                      System.out.println("Current Version:" + pkg.getCurrentVersion());
                      System.out.println("Package ID:" + pkg.get("Id"));
                      System.out.println("package Name:" + pkg.get("Name"));
                     
                      // 讀取頭信息
                      System.out.println(" --- 頭信息 ---");
                      PackageHeader pkgh = (PackageHeader)pkg.get("PackageHeader");
                      System.out.println("Header ElementCount:" + pkgh.getElementsCount());
                      List pkghList = pkgh.getChildElements();
                      for (i=0;i<pkghList.size();i++)
                      {
                          subElement = (XMLElement)pkghList.get(i);
                          Object value = subElement.toValue();
                              System.out.println("No." + i + " : " + subElement.toName()
                                 + "[" + subElement.toLabel() + "]  "
                                 + value);                        
                      }
                     
                      // 獲取WorkflowProcesses
                      WorkflowProcesses wfps = (WorkflowProcesses)pkg.get("WorkflowProcesses");
                      System.out.println("WorkflowProcesses Number: " + wfps.size());
                      Collection wfpList = wfps.toCollection();
                      Iterator itor = wfpList.iterator();
                      while(itor.hasNext())
                      {
                          WorkflowProcess wfp = (WorkflowProcess)itor.next();               
                          System.out.println(wfp.get("Name"));
                          System.out.println(wfp.get("Id"));
                      }
                      xml.closeAllPackages();
                  }
                  else
                      System.out.println("Error when open the file!");
              }
          }

          熟悉XML操作的朋友一定覺得很簡單吧?
          XPDL的各個元模型元素在JaWE中都定義成了對象,可直接使用,十分方便。

          posted on 2008-03-24 19:43 hijackwust 閱讀(1420) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆檔案(57)

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 汾西县| 聂拉木县| 府谷县| 邻水| 白银市| 大港区| 且末县| 乐安县| 四平市| 都江堰市| 石林| 常山县| 威信县| 美姑县| 永年县| 苏尼特左旗| 五台县| 朝阳区| 定州市| 西贡区| 新河县| 五家渠市| 海门市| 五寨县| 米脂县| 韶关市| 扬中市| 伊吾县| 孟州市| 乐清市| 榆中县| 泰宁县| 乌拉特前旗| 木兰县| 遵义市| 涿鹿县| 瑞安市| 嵊州市| 灵璧县| 博罗县| 太白县|