什么是 Enhydra Shark 管理程序?
Shark 管理程序是一個 Java swing 應用程序,管理者可用于進行 Shark 引擎的管理。有兩種管理程序,一種是把 shark 直接作為庫來使用,另一種是利用 shark 的 CORBA 包裝器接口,配置成CORBA 服務與Shark進行通信。該管理程序可用來處理含有XPDL文件(上傳新的 XPDL 文件或刪除已有)的 shark 外部庫,向 shark 中加載 XPDL 文件,以及卸載、更新該文件,以實例化和監(jiān)控 shark 的流程,進行參與者定義到實際用戶間的映射, application definitions 和 Tool agents 間映射,等等。該管理程序還包括用來執(zhí)行 workitem 的內置 worklist 處理程序,或從某個用戶向另一用戶再次指派 workitem。
下一章節(jié)將闡述管理程序的可行性。
啟動 Shark 管理程序
有兩種管理程序,第一個是把 shark 直接作為庫來使用,另一個則通過它的CORBA 接口來使用它。
啟動把Shark作為庫來使用的管理程序
要啟動把Shark作為庫來使用的 shark 管理程序,你只需執(zhí)行 runSA 腳本(runSA.bat)即可(依賴操作系統)。
當程序啟動后,將會出現登陸界面。要真正連接上 shark,首先你應該輸入用戶名和密碼。你輸入什么都可以,但必須是合法的,除非你以前用相同用戶名和不同密碼登陸過。
當你輸入了必要的參數后,點擊 OK 按鈕,你將連接上 shark。
啟動 CORBA 管理程序
采用這種方式,你只需執(zhí)行 runA 腳本(runA.bat)即可(依賴操作系統)。
當程序啟動后,將會出現登陸界面。要真正連接上 shark,首先你應輸入用戶名和密碼。如果 shark 服務器設置沒有發(fā)生改變過,默認用戶名和密碼寫在 "Shark.conf" 中,分別是 usename="admin",password="enhydra"。
下一步,你應該知道啟動的 CORBA 命名服務器所在機器(Shark 服務器本身已經登記的機器)的名稱和端口。同時,你必須知道自己登記的命名服務器的名字(該參數也設置在服務器"Shark.conf"文件里)。
如果已經啟動命名服務器,服務器和客戶都在你的本地機器上,使用給定的腳本文件,要是沒有改變 "Shark.conf" 文件的話,除了用戶名和密碼外的所有值都被設置好了。
當你輸入了必要的參數后,點擊 OK 按鈕,將連接上服務器(當然,服務器應該調用 run 腳本(run.bat)先運行起來)。
注意:如果你想把命名服務器、shark 服務器和管理程序一起啟動,你只需簡單的運行 runAll 腳本(runAll.bat)即可。
使用 Shark 管理程序
shark 管理程序被分成多個邏輯部分。各部分分別表述下列內容。
庫管理(Repository Management)
庫管理中顯示了在引擎的 XPDL庫里所有可利用的文件。在這里你能管理引擎的 XPDL 庫,可以從本地上傳新的 XPDL 文件到服務器的知識庫中,或刪除其中一個。
上傳新包,要點擊 'upload' 按鈕。接著出現一個對話框讓你從本地文件系統選擇 XPDL 文件。當你選擇了要上傳的包文件后,對話框將自動顯示引擎庫的相對路徑。你也可以自己定義引擎上的 XPDL 目錄結構和文件名。例如:test/conformance/test1.xpdl。
當文件上傳到引擎的庫后,就可被載入到引擎中,流程也就可以運行起來了,這些都會在下面描述到。
當然,你也能從引擎的庫選擇想要刪除的文件,再點擊 'delete' 按鈕。
注意:如果你想上傳到庫的文件不是 'shark' 合法的,一些描述問題原因的信息會顯示出來,包將不會被上傳。
包管理(Package Management)
包管理顯示了所有裝載到引擎的包(XPDLs)。包管理允許你從引擎中裝載和卸載包,而且也能更新已載入包和同步引擎包的緩存。
載入包:要把包載入到引擎中,你應該點擊 'load' 按鈕,接著選擇某個包。你所載入的包都來自于引擎庫,除了當前你已經載入的包,并且 Id 和已經被裝載的包名一樣。當你從列表選擇了包,文件名和 Id 會顯示到文本筐內。接著,再點擊 'Load' 按鈕,包將被加載到引擎中(如果是合法且在加載過程中沒問題),你將能啟動基于包流程定義的流程實例。
注意:如果包引用了一些外部包,這些外部包也會被載入引擎,當然他們也要是合法的。
注意:如果你想加載到引擎的文件不是 'shark' 合法的,將會顯示問題描述的錯誤信息,接著包被卸載掉。
卸載包:要從引擎卸載包,先選擇好目標,然后點擊 'unload' 按鈕。如果包流程定義中沒有已實例化的流程,則仍舊保留在 DB 中,并且這個包也沒有引用任何其他包,則將從引擎中卸載。一旦卸載了,你不能從流程定義中實例化流程。
你也有可能卸載包的所有版本,但這需要 furfilled 包的每個版本。
更新包:如果你想更新包,就先選中它,再點擊 'update' 按鈕。將列出庫中所有的包,顯示了和你想要更新名稱一樣的 Id(包)。接著再選擇其中一個點擊 'update' 按鈕。這個時候的流程還是基于原先包中定義運行,不過你可以建立基于新版本包的流程定義。
如果你想更新的包文件不是 'shark' 合法的,將會出現錯誤信息。
注意:流程定義的可視化圖形界面將會在實例化和監(jiān)控章節(jié)說明,如果一些包有多個版本,你只能看到最新的包流程定義,無論實際的流程管理器是否基于老的版本,所以視圖在這種情況下是無效的。同樣可以在包列表樹上點擊鼠標右鍵取得屬性。
流程實例管理(Process Instantiation Management)
從這里開始,你將看到已裝載包的流程定義(package-processdefinition) 樹。如果你從樹中選擇了一個包,并點擊鼠標左鍵,將會出現包屬性對話框。如果你選擇了某些包流程定義,你就可以通過點擊鼠標右鍵得到屬性對話框,當然也可以做些其他事:
在右邊,有些基本的流程屬性,以及基于流程定義的當前流程運行數目。
通過點擊 'Instantiate' 按鈕,你將創(chuàng)建新的流程運行實例。
通過點擊 'View' 按鈕,你能看到流程的圖形化視圖。
通過點擊 'Description' 按鈕,你能看到流程定義的描述。
你能把包的具體流程定義或整體流程定義設置為有效或無效。
你可進行指派的重新評估(如果你改變了參與者 -> 用戶的映射,并且想應用到已建好的指派中,這會很有用)。
注意:當圖形化界面中出現了相同流程定義的多個版本,你只能看見最新的一個,無論實際流程管理器是否根據老定義運行,那樣的話視圖是無效的。同樣對包樹上的流程定義單擊鼠標右鍵讀取屬是有效的。
流程監(jiān)控(Process Monitor)
流程監(jiān)控被分成四個主要部分。package-processdefinition-processinstances 樹允許你從包流程定義中選擇某個正在運行的實例。當選擇了流程實例,另一部分將會顯示相應的流程實例的圖形化數據。你會看到主要的實例屬性(名字、當前狀態(tài)),你能看到標記了當前正在運行,處于活動狀態(tài)的流程實例的圖形化對話框,你也能通過底部的按鈕對流程實例進行不同的操作。
可進行的操作如下:
啟動流程 - 如果流程處于 open.not_running.not_started 狀態(tài)則可用。
暫停流程 - 通過激活 subflow 活動,所有激活的活動以及同步 sub-processes 的實例化將暫停。
恢復流程 - 通過激活 subflow 活動,所有活動和同步的 sub-processes 將被恢復。注意:( if you try to resume a synchronous process started by some subflow activity of the suspended process)。你將不會直接做這件事,因為當 'parent' 激活恢復后將自動恢復。
終止流程 - 所有活動和同步 sub-processes 的實例化都是通過激活 subflow 活動來終止的。
中斷流程 - 所有活動和同步 sub-processes 的實例化都是通過激活 subflow 來中斷的。
查看流程歷史 - 從流程啟動開始記錄,按時間順序排列(當流程啟動,當流程狀態(tài)改變,當流程變量改變,當流程活動狀態(tài)改變,當流程活動變量改變,當活動指派給資源...)。
查看流程描述
查看和編輯流程變量,那樣你能按需管理流程(如果轉換條件依賴變量值)。
進入活動管理對話框。對話框顯示了流程活動列表,當你選中一個,當前狀態(tài)會顯示在文本筐中。從這個對話框,你能對單個活動做類似操作:
暫停活動
恢復活動
終止活動(當你終止一個活動,如果滿足轉換條件的話,流程會處理下一活動)
中斷活動 流程變成 'stucked' 狀態(tài)
手動啟動活動
刪除所有已完成流程
刪除選中的流程(或基于選中流程定義的已完成流程,或基于所有包流程定義的已完成流程)
進行所有流程的活動終止期檢查
進行所有流程和活動的限制檢查
用戶管理(User Management)
分為三個部分:
帳戶(Accounts) - 通過定義新帳戶,刪除已存在帳戶或改變他們的屬性來達到管理 shark 服務器用戶目的。
注意:如果 shark 被配置為依賴 LDAP 實現的 UserGroup 管理器,將不能創(chuàng)建新帳戶以及修改或者刪除存在的帳戶,只能查看已存在的。
日志(Logged) - 顯示已記錄日志的用戶
映射(Mapping) - 讓你能為真實的 shark 用戶映射包和包流程參與者。一旦定義了映射,并且當一項活動需要一個或多個實際用戶映射到參與者執(zhí)行時,就需要在這里查看流程,每個已映射用戶的 workitem 將被放在 worklist 中。
應用映射(Application Mapping)
你能映射包以及包流程應用到由tool agent控制的實際應用。目前 Shark 發(fā)布了六個 tool agent。要映射應用定義到 tool agent 應用,你應該去管理程序的應用映射部分,點擊 'add' 按鈕,將會彈出對話框,可以從左邊的框中選擇應用定義,tool agent 則在右邊的筐中。接著可以為 tool agent 輸入一些映射參數。當應用定義映射到 tool agent 時,shark 將試圖連接到相應的 tool agent,讓它執(zhí)行該應用,接著得到執(zhí)行結果。以下是關于設置參數的摘要性描述:
用戶名和密碼 - 對于 Shark 自帶的 tool agent 不是必須輸入的。而其他 tool agent 卻需要,因為調用應用時需要登陸。
應用名稱 - 應該由 tool agent 啟動的應用名稱(例如:JavaClassToolAgent 是類的全名,RuntimeApplicationToolAgent 是可執(zhí)行文件名,應該是 tool agent 所在機器的路徑,JavaScriptToolAgent 代表 java 腳本文件的名字,或者是 java 腳本自身,依賴應用模型屬性),對于SOAPToolAgent來說它是WEB 服務的位置,MailToolAgent 是 MailMessageHandler 的類,用來進行發(fā)送/接收郵件。
應用模型 - 不同的 tool agent 使用該屬性是為了達到不同目的。例如,RuntimeApplicationToolAgent 使用模型 0 表明直到系統程序結束才能結束運行(另外,它將啟動系統程序并返回完成狀態(tài) -> 活動不等系統程序結束,而流程接著處理下一活動),JavaScriptToolAgent 使用模型 0 表明它要搜索 java 腳本文件(另外,程序名字將被認為是 java 腳本)。
更多關于 tool agent 映射可參考 Tool Agent 文檔
緩存管理(Cache Management)
通過本部分你可以設置 shark 緩存大小。可以改變流程以及資源緩存的大小,也可以清除它們。
Worklist 管理(Worklist Management)
這幾乎和 shark 的 worklist 處理程序是相同的。通過這些,能處理已實例化流程的 workitem。你能處理自己的 workitem,也能看到其他的 workitem。同樣,也能把 workitem 從一個用戶指派給其他用戶。
點擊 'complete' 按鈕 workitem 將執(zhí)行,或在表單中雙擊它也可。如果 workitem 中有你打算更新的變量,當 'completing' 時你將會被問到是否更新,或在你輸入更新對話框之前完成了 workitem(只是在你接受它之后)。
當 workitem 中被放入兩個或多個不同用戶的列表時,它將停留在那里直到任何一個用戶受理它。一旦有人受理 workitem,該 workitem 就從其他用戶的 worklist 中去除,而如果該用戶又拒絕受理 workitem,則該 workitem 將退回到適當的用戶 worklist 中。
注意:為了在執(zhí)行 workitem 時能更新或查看變量,活動定義必須有一些特殊的外部屬性被定義,范例如下:
如果你想在執(zhí)行活動時允許執(zhí)行者更新 'x' 流程變量,在創(chuàng)建流程定義時,你應該為那些活動定義以下外部屬性:
<ExtendedAttribute Name="VariableToProcess_UPDATE",Value="x"/>
如果你想在執(zhí)行活動時只允許執(zhí)行者看到 'y' 和 'z' 流程變量,在創(chuàng)建流程定義時,你應該為那些活動定義以下兩個外部屬性:
<ExtendedAttribute Name="VariableToProcess_VIEW",Value="y"/>
<ExtendedAttribute Name="VariableToProcess_VIEW",Value="z"/>
如果你想在執(zhí)行活動時允許執(zhí)行者更新 'x'、'y'、'z' 流程變量,同時觀察 'a'、'b'、'c' 變量,應該為給定活動定義以下外部屬性:
<ExtendedAttribute Name="VariableToProcess_UPDATE",Value="y"/>
<ExtendedAttribute Name="VariableToProcess_UPDATE",Value="z"/>
<ExtendedAttribute Name="VariableToProcess_VIEW",Value="a"/>
<ExtendedAttribute Name="VariableToProcess_VIEW",Value="b"/>
<ExtendedAttribute Name="VariableToProcess_VIEW",Value="c"/>
利用 Enhydra JaWE 工作流編輯器,你可以更簡單地進行以上工作。請注意!引用、轉貼本文應注明原譯者:Rosen Jiang 以及出處:http://m.tkk7.com/rosen
Powered by: BlogJava Copyright © Rosen