程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Fire Workflow源碼分析——(基本組成)(4)

Fire Workflow源碼分析——(基本組成)(4)

編輯:關於JAVA

這次講包org.fireflow.model.resource。首先看一下這個包的整體類圖。

資源這塊Fire Workflow主要定義了資源和資源管理兩大塊。其中對於資源的描述分為子流程、應用、 表單和參與者,這裡本人對把子流程作為資源的定義不甚理解,而前面介紹的包org.fireflow.model中又 含有WorkflowProcess,個人覺得是不是應該統一比較好?資源管理方面只是簡單的實現了一個解析資源 文件(XML格式)的類,這塊還有進一步完善的空間。下面對每一部分進行介紹。

IResource:工作流引用的資源。

必須實現的方法:主要針對於資源名稱,顯示名稱以及描述等。

AbstractResource:抽象類主要實現IResource接口。

 

基本元素包括資源名稱、資源顯示名稱和資源描述。並重寫了toString()方法。

SubWorkflowProcess:子流程,目前也被定義為資源的一種。保存對另一個流程引用信息。

Application:後台程序。

handler:後台程序的類名。

Form:表單。

uri:記錄表單的地址,工作流引擎本身不處理表單。

Participant:參與者。

assignmentHandlerClassName:任務分配句柄的類名。Fire workflow引擎調用該句柄獲得真正的操作 者ID。

IResourceManager:資源管理接口。主要定義如何來獲得資源。

ResourceManager4XmlFile:解析xml格式的資源文件來獲得資源。

通過對xml格式資源文件的解析,獲得forms、participants、applications資源。解析函數有重載的 parseResource()方法,變量參數分別為文件路徑和文件輸入流。利用org.dom4j包對文件進行解析。 parseResource()中調用了三個load方法,分別提取三類元素。舉個loadForms()的例子吧。

1protected List<Form> loadForms( Element element)  {
2         Element formsElement = Util4Parser.child(element, "Forms");
3        if  (formsElement==null)return null;
4        List<Element> formElementList  = Util4Parser.children(formsElement, "Form");
5        List<Form> forms  = new Vector<Form>();
6        for (int i=0; formElementList!=null  && i<formElementList.size();i++){
7            Element formElm  = formElementList.get(i);
8            String name =  formElm.attributeValue("Name");
9            Form form = new Form (name);
10            form.setDisplayName(formElm.attributeValue ("DisplayName"));
11            form.setDescription (Util4Parser.elementAsString(formElm, "Description"));
12             form.setUri(Util4Parser.elementAsString(formElm, "Uri"));
13             forms.add(form);
14        }
15        return forms;
16}
17

Xml資源文件的格式很簡單,通過查找element和attribute就可以解析了。這裡的Util4Parser是Fire Workflow自定義的解析類。其他兩種資源的load過程基本一致。

下次介紹model項目的最後一部分,關於文件解析和序列化的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved