摘 要:針對記錄和描述XML表單文件的變動,采用工作流處理系統中的工作流處理過程作為活動節點,XML表單文件中的工作單元作為變動區域,通過活動節點對變動區域進行增刪改處理,來自動查出文件變動的情況并實時存儲,根據企業需求重建XML表單文件的版本。通過實例表明,XML表單文件的存儲與重建效率得到明顯提高。
關鍵詞:XML;工作流;工作單元;活動節點
中圖分類號:TP311 文獻標識碼:B 文章編號:1004-373X(2007)02-126-03
Storing and Reconstructing of XML Form Document Based on Working Flow
CHEN Hua,FU Bei
(Computer Science and Engineering College,Xi′an Technological University,Xi′an,710032,China)Abstract:In view of record and tracking the change of XML form-document,there is a new method of making working flow processing in working flow processing system as a activity node so as to check the situation of document changed automatically and store immediately,and reconstruct the version of XML form-document by the need of enterprise.According to the example,the efficiency of storing and reconstructing of XML form-document have been improved obviously.
Keywords:XML;working flow;working unit;activity node
1 引 言
隨著信息產業的飛速發展,信息化管理已經進入到各個行業的管理領域。企業若想在激烈的市場經濟中立足并勝出,就必須擁有一套完善的適合自身特點的信息化管理系統。因此,文檔管理系統在大中型企業中的應用越來越廣泛。在文檔管理系統中,各種形式的信息對企業有著重要的作用。可是企業在實施企業信息化的過程中,不同時期為滿足企業的不同需求,各個企業采用不同的技術開發不同的文檔管理系統。這些文檔管理系統的實踐在一定程度上加強了企業的管理水平,提高了企業的信息流和資金流的流動速度。但是,由于在企業事實信息化系統的過程中沒有較長遠的規劃及系統間信息共享重要性的認識。在這些系統的實施過程中,各系統間的兼容、信息交換和共享,就成為企業的全局信息交換和共享的障礙。在這種情況下,系統間的信息交換與共享就需要由一個轉換系統來完成,這樣做的工作量是非常巨大的。因為不同系統的系統間的轉換不同,這樣使系統的存儲效率很低。并且在系統發生故障時,需要對故障時正在處理而沒有處理完的文件進行恢復。但是,這對于這些企業信息管理系統來說是十分復雜的。
本文就是采用XML表單文件作為數據存儲的媒介,對原有的文檔管理系統進行改進,使其可以根據用戶的需求高效地存儲數據和重建任何版本的數據。
2 XML表單在工作流文檔管理系統中的處理
2.1 XML技術
XML即可擴展標記語言,是一種可以用來創建自己的標記的標記語言。在商業環境中,很多數據在表單文件中被處理,這些表單文件能夠容易和有效地處理數據。在表單文件中,用戶可以輕易的填寫文件。因此,一個程序的執行則被認為是完成表單文件,而程序的主要任務則是處理文件[1]。
在業務流程和工作流領域中XML以各種方式被使用。在本文,XML作為商業文件格式。使用XML為表單文件提供了以下幾個好處:首先,是他的平臺無關性,他可以在不同的信息系統之間轉換;其次,XML已經包括為應用開發有用的工具:簡單的對象通入協議(SOAP),文件對象模型(DOM)和為XML的簡單的應用程序接口(SAX);最后,他分離文件的形式描述和內容描述[2]。
以上3個好處提供了充足的理由讓我們使用XML作為表單文件的格式。這里構造了一個使用XML標記的表單文件。圖1展示XML代碼并且由應用樣式表產生表單文件。
2.2 基于工作流的文檔管理系統框架
使用工作流的目的主要是通過合理地調用和分配有關的信息及人力資源來協調業務過程中的各個活動,以促使業務目標的高效實現。基于工作流的系統已經越來越受人們的關注。這里在早先的工作流系統的模型上對原有模型進行了一些改進。如圖2所示,有陰影的長方形代表被增加的模塊。
過程結構模塊代表了一個由活動和弧組成的結構,文件結構模塊代表一個用XML格式所寫的表單文件結構。結構連接模塊將過程結構模塊和文件結構模塊聯系在一起。在處理被執行時使用一個版本創作模塊和變化存儲模塊處理文件。在本文中,處理變化存儲模塊并且根據他重建文件[3]。
2.3 工作流的處理過程
為了在執行時管理變動的文件,需要表示文件結構和過程結構。用過程結構和文件結構來描述是非常有用的。下面定義過程結構:
在以上定義的基礎上,將表單文件元素和過程的活動使用小點記法表示。如dk#8226;wm是文件dk的第m個工作單元,而p#8226;ai是過程p中的第i個活動。在業務流中,文件的處理是主要任務,過程的施行又直接與文件的處理有關。因此用結構連接模塊連接過程和文件。結構連接模塊分配各個工作單元到過程。當一個工作單元diwj被分配到一個活動p#8226;aj時,其用di#8226;wj→p#8226;ai表達。
3 存儲變化和重建文件
3.1 查出和存儲變化
在存儲文件之前,系統需要查出文件的確切變化。所以,采用由活動查出變化的一個方法。每個變化由活動記錄。被分配了工作單元的活動執行修改。工作單元的變化分為4種類型:增加,ΔADD(f1)(值):一個新的值,值被增加到領域f1;刪除,ΔDEL(f1)(值):在區域f1中的值被刪除;修改,ΔMOD(f1)(值1)(值2):在區域f1中的值由值1變為值2;空,Δ:沒有發生任何變化;
對一個或多個工作單元的修改,是一系列的變化,形成文件的變化。文件的變化被定義如下:
[HTH]定義3(文件變化) 一個文件的變化是由多個活動對工作單元的改變組成。活動對文件的改變表示為:δi={Δl|l=1,2,…,L},L是文件中改變的個數。
當一個由活動修改文件被記錄,文件的變化被自動地查出,并且將其存儲在數據庫中。文件的修改引起一個新文件狀態。在處理過程中文件被多次修改。所以,文件變化的歷史被系統反復地處理。每個文件狀態被稱為文件版本,并且那個工作單元被稱為工作單元版本。用以下定義的文件版本來管理文件變化的歷史[4]。
3.2 變化操作
使用之前對變化的定義,需要在變化之間進行一系列不同的操作。首先考慮反向操作。
XmlDocument document = new XmlDocument();
document.Load(\"contosoBooks.xml\");
XPathNavigator navigator = document.CreateNavigator();
navigator.MoveToChild(\"bookstore\",\"http://www.contoso.com/books\");
navigator.MoveToChild(\"book\",\"http://www.contoso.com/books\");
navigator.MoveToChild(\"price\",\"http://www.contoso.com/books\");
XmlWriter attributes = navigator.CreateAttributes();
attributes.WriteAttributeString(\"discount\",\"1.00\");
attributes.WriteAttributeString(\"currency\",\"USD\");
attributes.Close();
navigator.MoveToParent();
Console.WriteLine(navigator.OuterXml);
刪除變化的反向操作:Δ-1DEL=ΔADD;刪除一個XML節點C#代碼:
XmlDocument document = new XmlDocument();
document.Load(\"contosoBooks.xml\");
XPathNavigator navigator = document.CreateNavigator();
navigator.MoveToChild(\"bookstore\",\"http://www.contoso.com/books\");
navigator.MoveToChild(\"book\",\"http://www.contoso.com/books\");
navigator.MoveToChild(\"price\",\"http://www.contoso.com/books\");
navigator.SetValue(\"\");
navigator.MoveToRoot();
Console.WriteLine(navigator.OuterXml);
修改變化的反向操作:Δ-1MOD=Δ′MOD;修改一個XML節點C#代碼:
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add(\"http://www.contoso.com/books\",\"contosoBooks.xsd\");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(\"contosoBooks.xml\",settings);
XmlDocument document = new XmlDocument();
document.Load(reader);
XPathNavigator navigator = document.CreateNavigator();
navigator.MoveToChild(\"bookstore\",\"http://www.contoso.com/books\");
navigator.MoveToChild(\"book\",\"http://www.contoso.com/books\");
navigator.MoveToChild(\"price\",\"http://www.contoso.com/books\");
navigator.SetTypedValue(DateTime.Now);
接著,定義另一種類型的操作。當文件被多次修改時,為實現高效的修改,組合操作必須被定義。
3.2.2 組合操作
對于一個工作單元對于2個改變Δ,Δ′的組合操作被表示為Δ[KX(]#8226;[KX)]Δ′,意思是對于一個工作單元在發生Δ改變后,另一個改變Δ′也在影響這個工作單元。組合操作組合了2種不同類型的操作:
3.3 文件恢復
文件經常需要返回到一個早先狀態來滿足一個管理目的或矯正系統誤差。在過程實施期間,當錯誤發生時采用的方法可以被用來恢復文件。恢復方法根據反向操作被開發。如果第K個活動到第i個活動文件需要返回一個狀態,通過應用反向操作他可以被恢復。文件被恢復的版本可以被如下重建。
4 原型系統
用在本文中所采用的方法完成了一個原型系統。在現有的文檔管理系統的工作流處理上增加一個用來管理文件的模塊。增加的模塊是根據在第2.2節中被描述的5個模塊建造的,那5個模塊被分為建立時和運行時。圖4是對文件存儲確認的流程建立的視圖。
在業務執行的過程中,文件分配給適當的活動處理。這里的系統顯示文件的版本和檢查當前版本,在用戶完成任務并且告知文件之后,變化被自動查出和存放,且產生一個新的版本[5]。
5 結 語
按照文中的說明,使用XML作為表單文件。XML具有將形式描述和內容描述分離和跨平臺的優點。當變化發生時,能夠查出變化且將其存儲在數據庫中。文件的原型和所有改變被按時間順序儲存。當文件需要被檢查,系統可以在變化之間使用一系列的操作來重建任一版本的文件。變動操作可以執行一個逆序,這就意味著變動操作可以被取消。于是,用這個方法恢復文件。這里提供的方法不僅可以便利地管理文件而且可以高效的存儲文件。
參 考 文 獻
[1][美]Michae U.XML學習指南[M].Young 前導工作室,譯.北京:機械工業出版社,2001.
[2]趙萍.基于XML技術的數據轉換[D].北京:中國科學院,2001.
[3]Bae H.E-Business Document Management: Change Management of Business Documents for Workflow Processes.Ph.D.dissertation,Seoul National University,2002.
[4]施偉斌,孫未來.XML數據的對象模型的動態更新[J].軟件學報,2001,12(增刊):1 851-1 858.
[5]翟裕忠.一個基于XML的數據交換原型系統[J].計算機工程,2000,26(9):35-37.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。