摘 要:針對記錄和描述XML表單文件的變動,采用工作流處理系統(tǒng)中的工作流處理過程作為活動節(jié)點,XML表單文件中的工作單元作為變動區(qū)域,通過活動節(jié)點對變動區(qū)域進行增刪改處理,來自動查出文件變動的情況并實時存儲,根據(jù)企業(yè)需求重建XML表單文件的版本。通過實例表明,XML表單文件的存儲與重建效率得到明顯提高。
關(guān)鍵詞:XML;工作流;工作單元;活動節(jié)點
中圖分類號:TP311 文獻標識碼:B 文章編號:1004-373X(2007)02-126-03
Storing and Reconstructing of XML Form Document Based on Working Flow
CHEN Hua,F(xiàn)U 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 引 言
隨著信息產(chǎn)業(yè)的飛速發(fā)展,信息化管理已經(jīng)進入到各個行業(yè)的管理領(lǐng)域。企業(yè)若想在激烈的市場經(jīng)濟中立足并勝出,就必須擁有一套完善的適合自身特點的信息化管理系統(tǒng)。因此,文檔管理系統(tǒng)在大中型企業(yè)中的應(yīng)用越來越廣泛。在文檔管理系統(tǒng)中,各種形式的信息對企業(yè)有著重要的作用??墒瞧髽I(yè)在實施企業(yè)信息化的過程中,不同時期為滿足企業(yè)的不同需求,各個企業(yè)采用不同的技術(shù)開發(fā)不同的文檔管理系統(tǒng)。這些文檔管理系統(tǒng)的實踐在一定程度上加強了企業(yè)的管理水平,提高了企業(yè)的信息流和資金流的流動速度。但是,由于在企業(yè)事實信息化系統(tǒng)的過程中沒有較長遠的規(guī)劃及系統(tǒng)間信息共享重要性的認識。在這些系統(tǒng)的實施過程中,各系統(tǒng)間的兼容、信息交換和共享,就成為企業(yè)的全局信息交換和共享的障礙。在這種情況下,系統(tǒng)間的信息交換與共享就需要由一個轉(zhuǎn)換系統(tǒng)來完成,這樣做的工作量是非常巨大的。因為不同系統(tǒng)的系統(tǒng)間的轉(zhuǎn)換不同,這樣使系統(tǒng)的存儲效率很低。并且在系統(tǒng)發(fā)生故障時,需要對故障時正在處理而沒有處理完的文件進行恢復(fù)。但是,這對于這些企業(yè)信息管理系統(tǒng)來說是十分復(fù)雜的。
本文就是采用XML表單文件作為數(shù)據(jù)存儲的媒介,對原有的文檔管理系統(tǒng)進行改進,使其可以根據(jù)用戶的需求高效地存儲數(shù)據(jù)和重建任何版本的數(shù)據(jù)。
2 XML表單在工作流文檔管理系統(tǒng)中的處理
2.1 XML技術(shù)
XML即可擴展標記語言,是一種可以用來創(chuàng)建自己的標記的標記語言。在商業(yè)環(huán)境中,很多數(shù)據(jù)在表單文件中被處理,這些表單文件能夠容易和有效地處理數(shù)據(jù)。在表單文件中,用戶可以輕易的填寫文件。因此,一個程序的執(zhí)行則被認為是完成表單文件,而程序的主要任務(wù)則是處理文件[1]。
在業(yè)務(wù)流程和工作流領(lǐng)域中XML以各種方式被使用。在本文,XML作為商業(yè)文件格式。使用XML為表單文件提供了以下幾個好處:首先,是他的平臺無關(guān)性,他可以在不同的信息系統(tǒng)之間轉(zhuǎn)換;其次,XML已經(jīng)包括為應(yīng)用開發(fā)有用的工具:簡單的對象通入?yún)f(xié)議(SOAP),文件對象模型(DOM)和為XML的簡單的應(yīng)用程序接口(SAX);最后,他分離文件的形式描述和內(nèi)容描述[2]。
以上3個好處提供了充足的理由讓我們使用XML作為表單文件的格式。這里構(gòu)造了一個使用XML標記的表單文件。圖1展示XML代碼并且由應(yīng)用樣式表產(chǎn)生表單文件。
2.2 基于工作流的文檔管理系統(tǒng)框架
使用工作流的目的主要是通過合理地調(diào)用和分配有關(guān)的信息及人力資源來協(xié)調(diào)業(yè)務(wù)過程中的各個活動,以促使業(yè)務(wù)目標的高效實現(xiàn)?;诠ぷ髁鞯南到y(tǒng)已經(jīng)越來越受人們的關(guān)注。這里在早先的工作流系統(tǒng)的模型上對原有模型進行了一些改進。如圖2所示,有陰影的長方形代表被增加的模塊。
過程結(jié)構(gòu)模塊代表了一個由活動和弧組成的結(jié)構(gòu),文件結(jié)構(gòu)模塊代表一個用XML格式所寫的表單文件結(jié)構(gòu)。結(jié)構(gòu)連接模塊將過程結(jié)構(gòu)模塊和文件結(jié)構(gòu)模塊聯(lián)系在一起。在處理被執(zhí)行時使用一個版本創(chuàng)作模塊和變化存儲模塊處理文件。在本文中,處理變化存儲模塊并且根據(jù)他重建文件[3]。
2.3 工作流的處理過程
為了在執(zhí)行時管理變動的文件,需要表示文件結(jié)構(gòu)和過程結(jié)構(gòu)。用過程結(jié)構(gòu)和文件結(jié)構(gòu)來描述是非常有用的。下面定義過程結(jié)構(gòu):
在以上定義的基礎(chǔ)上,將表單文件元素和過程的活動使用小點記法表示。如dk#8226;wm是文件dk的第m個工作單元,而p#8226;ai是過程p中的第i個活動。在業(yè)務(wù)流中,文件的處理是主要任務(wù),過程的施行又直接與文件的處理有關(guān)。因此用結(jié)構(gòu)連接模塊連接過程和文件。結(jié)構(gòu)連接模塊分配各個工作單元到過程。當一個工作單元diwj被分配到一個活動p#8226;aj時,其用di#8226;wj→p#8226;ai表達。
3 存儲變化和重建文件
3.1 查出和存儲變化
在存儲文件之前,系統(tǒng)需要查出文件的確切變化。所以,采用由活動查出變化的一個方法。每個變化由活動記錄。被分配了工作單元的活動執(zhí)行修改。工作單元的變化分為4種類型:增加,ΔADD(f1)(值):一個新的值,值被增加到領(lǐng)域f1;刪除,ΔDEL(f1)(值):在區(qū)域f1中的值被刪除;修改,ΔMOD(f1)(值1)(值2):在區(qū)域f1中的值由值1變?yōu)橹?;空,Δ:沒有發(fā)生任何變化;
對一個或多個工作單元的修改,是一系列的變化,形成文件的變化。文件的變化被定義如下:
[HTH]定義3(文件變化) 一個文件的變化是由多個活動對工作單元的改變組成?;顒訉ξ募母淖儽硎緸椋害莫璱={Δl|l=1,2,…,L},L是文件中改變的個數(shù)。
當一個由活動修改文件被記錄,文件的變化被自動地查出,并且將其存儲在數(shù)據(jù)庫中。文件的修改引起一個新文件狀態(tài)。在處理過程中文件被多次修改。所以,文件變化的歷史被系統(tǒng)反復(fù)地處理。每個文件狀態(tài)被稱為文件版本,并且那個工作單元被稱為工作單元版本。用以下定義的文件版本來管理文件變化的歷史[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節(jié)點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節(jié)點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);
接著,定義另一種類型的操作。當文件被多次修改時,為實現(xiàn)高效的修改,組合操作必須被定義。
3.2.2 組合操作
對于一個工作單元對于2個改變Δ,Δ′的組合操作被表示為Δ[KX(]#8226;[KX)]Δ′,意思是對于一個工作單元在發(fā)生Δ改變后,另一個改變Δ′也在影響這個工作單元。組合操作組合了2種不同類型的操作:
3.3 文件恢復(fù)
文件經(jīng)常需要返回到一個早先狀態(tài)來滿足一個管理目的或矯正系統(tǒng)誤差。在過程實施期間,當錯誤發(fā)生時采用的方法可以被用來恢復(fù)文件。恢復(fù)方法根據(jù)反向操作被開發(fā)。如果第K個活動到第i個活動文件需要返回一個狀態(tài),通過應(yīng)用反向操作他可以被恢復(fù)。文件被恢復(fù)的版本可以被如下重建。
4 原型系統(tǒng)
用在本文中所采用的方法完成了一個原型系統(tǒng)。在現(xiàn)有的文檔管理系統(tǒng)的工作流處理上增加一個用來管理文件的模塊。增加的模塊是根據(jù)在第2.2節(jié)中被描述的5個模塊建造的,那5個模塊被分為建立時和運行時。圖4是對文件存儲確認的流程建立的視圖。
在業(yè)務(wù)執(zhí)行的過程中,文件分配給適當?shù)幕顒犹幚?。這里的系統(tǒng)顯示文件的版本和檢查當前版本,在用戶完成任務(wù)并且告知文件之后,變化被自動查出和存放,且產(chǎn)生一個新的版本[5]。
5 結(jié) 語
按照文中的說明,使用XML作為表單文件。XML具有將形式描述和內(nèi)容描述分離和跨平臺的優(yōu)點。當變化發(fā)生時,能夠查出變化且將其存儲在數(shù)據(jù)庫中。文件的原型和所有改變被按時間順序儲存。當文件需要被檢查,系統(tǒng)可以在變化之間使用一系列的操作來重建任一版本的文件。變動操作可以執(zhí)行一個逆序,這就意味著變動操作可以被取消。于是,用這個方法恢復(fù)文件。這里提供的方法不僅可以便利地管理文件而且可以高效的存儲文件。
參 考 文 獻
[1][美]Michae U.XML學(xué)習(xí)指南[M].Young 前導(dǎo)工作室,譯.北京:機械工業(yè)出版社,2001.
[2]趙萍.基于XML技術(shù)的數(shù)據(jù)轉(zhuǎn)換[D].北京:中國科學(xué)院,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數(shù)據(jù)的對象模型的動態(tài)更新[J].軟件學(xué)報,2001,12(增刊):1 851-1 858.
[5]翟裕忠.一個基于XML的數(shù)據(jù)交換原型系統(tǒng)[J].計算機工程,2000,26(9):35-37.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。