基於工作流系統的表單技術

2022-05-18 19:07:45 字數 4798 閱讀 4271

殷武峰,武友新

(南昌大學資訊工程學院,江西南昌,330029)

0 引言

工作流是一類能夠完全或者部分自動執行的業務過程,它根據一系列預定義的規則來傳遞文件、資訊或任務,並使得此過程在不同的執行者之間自動傳遞與執行。很多現實生活中的操作,例如公文處理、購物消費等過程,都具有典型的工作流特徵,可以使用工作流系統加以實現。在基於工作流系統中,如何靈活實現表單的定義和處理,是直接關係到系統效能的重要因素。

目前這方面的研究文獻中,有些僅僅給出了表單資訊模型的定義,而沒有相應的表單處理規則;有些雖然給出了表單處理規則,但這些規則過於簡單和抽象,難以滿足實際工作流系統的需要。為了解決上述的問題,在本文中提出了一種新的表單定義與處理規則,並對規則的應用做出討論。

1 表單的定義

表單中包含了使用者在各個節點需要察看和填寫的內容。在實際的應用中,由於內容的不同,使用者可能使用的表單是多種多樣的。有些工作流產品會預先定義好一組表單模版,然後限定使用者在這些模版中進行選擇。

這種做法雖然容易實現,但缺乏靈活性,難以滿足使用者需求的變更。另一種更為靈活的方式,就是允許使用者按照需求自己定義表單,這種方式雖然在實現上較為複雜,但能夠滿足絕大部分的使用者需求。

在基於web的工作流系統中,可以將表單視為一張html頁面;使用者對工作流的處理過程,就是該頁面在多個使用者之間傳遞,填充資料的過程。基於這一處理方式,可以將表單視為多個表單項的組合,每乙個表單項都是使用者需要填寫的內容。通過一系列的要素,可以對錶單項進行定義。

2 表單在工作流中的應用

當使用者定義完表單後,就可以在工作流中使用這些表單了。為了簡化起見,此處討論每個工作流中只允許使用一張表單的情況。在這種情況下,使用者只需要為乙個新定義的流程指定一張表單即可,而不是為每乙個節點都指定相應的表單。

可以證明,在不同節點使用多張表單的工作流,是可以轉換成為在所有節點都使用同一表單的工作流的。

假定某一工作流中包含了s個節點(n1,n2,...,ns),其中節點ni所使用的表單fi中共含有ti個表單項(mi1,mi2,...miti),則我們可以重新定義一張表單f』,其中包含的表單項為mij,其中i=1...

s,j=1...ti。

在每個節點均使用表單f',並且定義規則如下:

當且僅當在節點ni,表單項(mi1,mi2,...,m iti)是可用的。

在此新規則下的工作流與原有的工作流等價。

2.1 表單的運算規則

根據不同的需求,可以對上述的規則進行進一步擴充套件,使之不僅僅控制表單項的顯示。例如,通過引進一系列的運算規則,可以實現表單項之間的運算:

1)四則運算:可以實現數值型表單項之間的加減乘除等運算。

2)字串函式:實現文字、字元類表單項的常見字串操作,例如合併、取子串等等。

3)求和運算:對於同乙個表單項的多個副本,求這些副本中的同乙個表單項內容之和。

4)均值運算:對於同乙個表單項的多個副本,求這些副本中的同乙個表單項內容的平均值。

5)極值運算:對於同乙個表單項的多個副本,可以實現數值、文字、日期等表單項在所有副本中取最大值、最小值的處理。為了進一步的需要,極值運算不僅僅返回表單項的值,還可以返回擁有該極值的副本的id。

6)取副本:對於同乙個表單項的多個副本,可以取出其中的某乙個副本進行操作。

7)刪除副本:刪除多個副本中的乙個。

8)賦值$運算規則的結果,可以賦予某乙個表單項。上述只是一些簡單的運算規則,可以根據需求的不同來決定引入哪些規則。

2.2 表單的邏輯規則

如果需要,也可以在運算規則之上再定義邏輯規則。執行分支的控制或更複雜的邏輯:

1)條件規則:根據表單項的內容,來判定某一條件是否成立。根據表單項內容型別的不同,可以採用的條件規則也各不相同。

例如對於數值型別,可以定義=、≠、<、>、≤、≥等條件;對於字串型別,可以定義=、≠、包含、不包含、以...開頭、以...結尾等條件。

2)and規則:定義兩個條件之間的關聯為與關係。

3)or規則:定義兩個條件之間的關聯為或關係。

4)not規則:定義對某個條件的結果取反。

5)if-then-else 規則:定義判斷條件,如果條件滿足則將工作流導向不同的分支。

6)swtich-case規則:定義判斷條件,如果條件滿足則將工作流導向不同的分支。

7)輸出控制規則:可以使用此規則來控制輸出的內容。

8)輸入控制規則:此規則控制輸入的多個表單副本、當滿足一定條件後開啟下一步的操作。

對於較為簡單的、單線的工作流系統,上述的邏輯規則並不必要。但是對於複雜的、多分支的工作流系統來說,邏輯規則的存在是必不可少的。只有通過這些規則,才能夠對表單在不同分支所產生的多個副本進行控制和管理。

2.3各種規則的應用

根據上面所描述的顯示規則、運算規則和邏輯規則,可以將工作流中的節點劃分為以下三種節點:

1)使用者節點:此類節點用於對使用者的顯示與互動。顯示規則與部分邏輯規則在此節點發揮作用,控制使用者所見的表單。使用者節點的輸入和輸出都是唯一的。

2)邏輯節點:負責邏輯的控制,為工作流做出判斷,傳遞相應的副本到工作流所流向的節點。邏輯規則在此節點發揮作用。 邏輯節點可以具有多個輸入和多個輸出。

3)運算節點:負責表單內容的運算。運算節點可以接受多個表單副本,根據這些副本的內容來生成新的、要輸出的副本。

這類節點主要使用運算規則,可以擁有多個輸入和多個輸出。

使用上述的三種節點,可以非常靈活地定義各種複雜的工作流過程。在一些工作流系統中,會設定專門的投票節點來處理從多個節點彙總而來的表單副本。例如當多於半數的表單副本選擇某一選項時,則流向某一節點。

在我們的定義中,不需要使用專門的投票節點,只要使用乙個運算節點與乙個邏輯節點即可實現此功能(圖中代表使用者節點,代表運算節點,代表邏輯節點,下同):

如圖2所示,在表單中可以將投票所使用的表單項定義為單選項或者下拉列表,例如"0:反對" "1:贊成"。各個使用者節點的表單副本提交到運算節點後,執行如下規則:

圖2 例一: 實現投票功能

1)對投票表單項求和。2)將求和的值賦予輸出表單中得某一表單項。此表單項可以是乙個使用者可見的表單項,也可以是乙個專為儲存引數而使用,在任何節點都不可見的表單項。

3)為輸出表單的其他項賦值。4)提交表單。

在邏輯節點,就可以根據運算節點所得到的和(按照上面的定義,這個和其實就是贊成者的票數)進行判斷,以決定下一步的走向:

if 贊成票數》=2 then goto u4

else goto u5

end if

上面給出的是如何實現投票功能的例子。下面我們給出另乙個例子,描述使用上述節點如何實現競標功能。競標功能,就是在多個表單中,根據某錶單項的值,來選擇讓哪乙個表單流向下一節點。

與上面的例子類似,我們也可以使用乙個運算節點來實現這一功能。

圖3 例二:實現競標功能

在運算節點c,各個使用者節點的表單副本提交到運算節點後,執行如下規則:1)取指定表單項的最大,最小值,返回該值所在的副本id。2)根據id取出此副本。

3)將此副本賦予輸出副本。4)提交表單。

將多個邏輯節點與運算節點結合使用,可以實現更為複雜,功能更為強大的工作流過程,以應對各種各樣的環境。

2.4 工作流系統中表單的處理

在工作流系統中,需要一系列的模組來為上述的表單和規則服務,使之能夠有效地運轉。與上面所描述的表單與規則的處理相關的系統模組如圖4所示。

表單定義:負責上述段落中所描述的表單的定義。

流程定義:負責流程的定義和規則的定義。

表單生成器:負責表單的自動生成。

邏輯規則直譯器:在邏輯節點,由邏輯規則直譯器根據當前節點的邏輯條件進行處理。

圖4 系統框架圖

運算規則直譯器:在運算節點,由運算解釋模組根據當前的運算規則進行處理,得出相應的結果。

啟動流程:負責工作流的啟動。當工作流開始執行時,系統根據工作流所使用的表單建立表單的例項。

在工作流的執行過程中,根據表單的定義以及工作流中對表單在當前節點的描述,為使用者動態生成表單。使用者的輸入內容在通過有效性驗證後儲存到資料庫中,由工作流引擎將其提交到工作流中的下乙個節點。

表單的例項是在某一使用者啟動乙個工作流時建立的。資料庫中除了要記錄當前工作流的資訊以外,還要根據使用者的資訊記錄例項的建立人、建立時間等。

副本傳遞:隨著工作流的逐步執行,在每一步都可以為當前的例項建立副本,儲存當前節點的使用者輸入。在單線的工作流系統中,可以使用單一的例項儲存整個過程中表單的值,但是在多分支的工作流系統裡,必須使用單獨的副本來為每乙個節點儲存所產生的值。

副本的總數量是由工作流圖中的節點間路徑總數所決定的,同時存在的最大副本數量是由最大分支數所決定的。在這種情況下,兩個節點之間的資料傳遞可以通過傳遞表單副本的id來實現。

資料儲存與管理:使用者在使用表單時,會在各個表單項中輸入具體的資料。這些輸入資料都必須被儲存下來,以供下乙個節點的使用者使用。在資料庫中儲存表單項的輸入。

結束流程:當某乙個流程執行完畢後,按照預定義的規則結束該流程,清理流程中生成的資料,關閉相應的例項與副本、並記錄相應的日誌。

3 結束語

本文通過所描述的邏輯規則以及運算規則,我們可以以一種非常靈活的方式對工作流進行描述和定義。在這種方式下,使用者可以定義較為複雜的工作規則,很多日常的工作處理流程都可以在此規則下實現,在很大程度上支援了辦公自動化系統的實現。上述的工作已經在實際的專案中得到了部分的實現。

本文中所描述的規則可以滿足目前對工作流應用的通常需求,也可以在本文的基礎上進一步改進,以實現更廣泛實際應用的要求。

本文作者創新點: 通過所描述的邏輯規則以及運算規則,我們可以以一種非常靈活的方式對工作流進行描述和定義。在這種方式下,使用者可以定義較為複雜的工作規則,很多日常的工作處理流程都可以在此規則下實現,在很大程度上支援了辦公自動化系統的實現。

【1】李偉,李青. 基於j2ee的工作流管理系統框架研究與實現微計算機資訊,2004

【2】範玉順. 工作流管理技術基礎———實現企業業務過程重組、過程管理與過程自動化的核心技術[m] . 北京:清華大學出版社,施普林格出版社,2001.

基於工作流的請假審批系統設計與實現

2 系統功能模組設計 請假審批,需要請假的人先在網頁上填寫請假單,該申請會按照流程定義自動轉向上級審批 請假審批模組主要用於任課老師對學生新增的請假申請單進行同意或駁回,同意則轉到系主任審批,駁回則直接結束 院長可以對系主任審批過的請假單再次進行審批,同意或駁回,同意則請假成功,否則請假失敗,請假流...

OA工作流各種表單模版

1.1 發文收檔案 1.1.1 發文 1.1.2 收文 1.1.3 內部資訊 檔案 傳遞 1.1.4 部門工作協調流程 1.1.5 部門工作請示流程 1.2 行政部流程 1.2.1 門衛訪問登記 1.2.2 辦公用品申請 1.2.3 來訪接待登記 1.2.4 資產調拔申請 1.2.5 請假申請流程 ...

基於Web Service的工作流引擎的研究

近年來,由於資訊化的飛速發展,傳統的工作流技術在系統的整合性和復用性以及異構平台的通訊中都難以滿足企業資訊化的需求,web service技術的出現提供了解決這些問題的途徑。將web service技術與工作流技術相結合,可以解決傳統工作流系統中互操作性難的問題,同時推進了工作流技術的研究和實際的應...