專(zhuān)利名稱(chēng):工作流用戶(hù)界面生成方法及生成器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計(jì)算機(jī)領(lǐng)域,具體涉及工作流系統(tǒng),更具體地涉及一 種工作流用戶(hù)界面生成方法及生成器,背景技術(shù)自20世紀(jì)70年代提出工作流系統(tǒng)的思想以來(lái),經(jīng)過(guò)數(shù)十年的;SL艮,工 作流技術(shù)已經(jīng)成為企業(yè)內(nèi)部及外部業(yè)務(wù)流程系統(tǒng)的^。工作流(workflow)就是工作流程的計(jì)算模型,即將工作流程中的工 作前后組織在一起的邏輯和規(guī)則在計(jì)算機(jī)中以恰當(dāng)?shù)哪P瓦M(jìn)行表示并對(duì)其 實(shí)施計(jì)算。工作流要解決的主要問(wèn)4IA:為實(shí)現(xiàn)某個(gè)業(yè)務(wù)目標(biāo),在多個(gè)參 與者之間,利用計(jì)算機(jī),按某種預(yù)定規(guī)則自動(dòng)傳遞文檔、信息或者任務(wù).工作流管理系統(tǒng)(W歴S)的主要功能是通過(guò)計(jì)算機(jī)技術(shù)的支持去定 義、執(zhí)行和管理工作流,協(xié)調(diào)工作流執(zhí)行過(guò)程中工作之間以^體成員之 間的信息交互。工作流需務(wù)農(nóng)靠工作流管理系統(tǒng)來(lái)實(shí)現(xiàn)。1994年,工作流管理聯(lián)盟(WfMC)發(fā)布了用于工作流管理系統(tǒng)之間 互操作的工作流參考模型,并相繼制定了一系列工業(yè)標(biāo)準(zhǔn)。該工作流參考模型定義了典型工作流管理系統(tǒng)的體系結(jié)構(gòu)模型,如圖1所示。該工作流參考模型標(biāo)識(shí)了構(gòu)成工作流管理系統(tǒng)的基本部件和這些基本 部件交互使用的接口。這些基本部件包括工作流執(zhí)行服務(wù)、工作流引擎、 工作流定義工具、客戶(hù)端應(yīng)用、調(diào)用應(yīng)用、管理監(jiān)控工具.基本部件交互 使用的接口包括接口一、接口二、接口三、接口四和接口五,其中, 工作流執(zhí)行服務(wù)是工作流管理系統(tǒng)的核心部件,它的功能包括創(chuàng) 建、管理工作流定義,創(chuàng)建、管理和執(zhí)行工作流實(shí)例;在執(zhí)行上述功能的同時(shí),應(yīng)用程序可能會(huì)通過(guò)編程接口同工作流執(zhí)行服務(wù)交互; 一個(gè)工作流執(zhí)行服務(wù)可能包含有多個(gè)分布式工作的工作流 引擎。 工作流引擎是為工作流實(shí)例提供運(yùn)行環(huán)境并解釋執(zhí)行工作流實(shí)例 的軟件部件。 工作流定義工具是管理工作流定義的工具,它可以通過(guò)圖形方式把復(fù)雜的工作流定義顯示出來(lái)并加以操作;工作流定義工具同工 作流執(zhí)行服務(wù)交互。
客戶(hù)端應(yīng)用是通過(guò)請(qǐng)求的方式同工作流執(zhí)行服務(wù)交互的應(yīng)用,也就是說(shuō)是客戶(hù)端應(yīng)用調(diào)用工作流執(zhí)行服務(wù)。
調(diào)用應(yīng)用是被工作流執(zhí)行服務(wù)調(diào)用的應(yīng)用;調(diào)用應(yīng)用同工作流執(zhí)行服務(wù)交互,以協(xié)作完成一個(gè)工作流實(shí)例的執(zhí)行。
管理監(jiān)控工具主要用于組織機(jī)構(gòu)、角色等數(shù)據(jù)的維護(hù)管理和工作流執(zhí)行情況的監(jiān)控;管理監(jiān)控工具同工作流執(zhí)行服務(wù)交互。 為在工作流系統(tǒng)中實(shí)現(xiàn)一工作流,工作流開(kāi)發(fā)人員通過(guò)工作流定義工 具,設(shè)計(jì)出工作流模板。管理員將工作流模塊部署到工作流系統(tǒng)中;用戶(hù) 界面開(kāi)發(fā)人員根據(jù)該工作流的需要為每個(gè)工作流步驟設(shè)計(jì)出用戶(hù)界面,并 由管理員將各用戶(hù)界面部署到工作流系統(tǒng)中。這樣,用戶(hù)可以啟動(dòng)工作流 引擎來(lái)基于工作流模板創(chuàng)建和執(zhí)行一工作流實(shí)例。當(dāng)該工作流實(shí)例在執(zhí)行 過(guò)程中需要其他角色或用戶(hù)參與時(shí),工作流執(zhí)行服R為他們創(chuàng)建相應(yīng)的 工作流活動(dòng)。當(dāng)這些用戶(hù)登錄到工作流系統(tǒng)中后,會(huì)通it^戶(hù)端應(yīng)用提供 的各自的用戶(hù)界面中獲得這些工作流活動(dòng)。隨后用戶(hù)可以按照基于標(biāo)準(zhǔn)的 工作流操作模式處理這些活動(dòng)。當(dāng)活動(dòng)處理完畢后,工作流引擎會(huì)繼續(xù)執(zhí) 行該工作流實(shí)例,直到整個(gè)工作流實(shí)例執(zhí)行完畢。舉例來(lái)說(shuō),為在工作流系統(tǒng)中實(shí)現(xiàn)一套報(bào)銷(xiāo)流程,需要以下步驟a) 工作流開(kāi)發(fā)人員通過(guò)工作流定義工具,設(shè)計(jì)出報(bào)銷(xiāo)工作流模板;b) 管理員將報(bào)銷(xiāo)工作流模板部署到工作流系統(tǒng)中;c) 界面開(kāi)發(fā)人員,根據(jù)報(bào)銷(xiāo)工作流的需要,為每個(gè)工作流步驟設(shè)計(jì)界面,并部署用戶(hù)界面; d)最終用戶(hù)通過(guò)c)步生成的界面,參與工作流并完成其相關(guān)的工作流工作。例如,對(duì)于一個(gè)三個(gè)審批步驟的報(bào)銷(xiāo)流程,具體的執(zhí)行步驟如下1) 寺艮銷(xiāo)申請(qǐng)人員在工作流啟動(dòng)界面中,錄入報(bào)銷(xiāo)數(shù)據(jù),啟動(dòng)報(bào)銷(xiāo)工作流。2) 工作流引擎創(chuàng)建并執(zhí)行一個(gè)報(bào)銷(xiāo)工作流實(shí)例。3) 工作流引擎在執(zhí)行過(guò)程中,為報(bào)銷(xiāo)申請(qǐng)人員的主管創(chuàng)建一個(gè)工作流活動(dòng)o4) 主管登錄到工作流系統(tǒng)中,看到并選擇該待辦事宜。5) 主管在審批界面中,批準(zhǔn)該報(bào)銷(xiāo)申請(qǐng)。后臺(tái)會(huì)通知工作流引擎,該 審批活動(dòng)執(zhí)行完畢。6) 工作流引擎繼續(xù)工作流實(shí)例的執(zhí)行,為財(cái)務(wù)部人員創(chuàng)建一個(gè)工作流 活動(dòng)。7) 財(cái)務(wù)部人員登錄到工作流系統(tǒng)中,獲得該待辦事宜。8) 財(cái)務(wù)部人員在工作流界面中,完成該待辦事宜。后臺(tái)會(huì)通知工作流 引擎,該審批活動(dòng)執(zhí)行完畢。9) 工作流引擎完成整個(gè)工作流實(shí)例的執(zhí)行.以IBM的WebSphere Integration Developer為例,對(duì)于一個(gè)工作it活 動(dòng),用戶(hù)可以進(jìn)行以下標(biāo)準(zhǔn)的處理操作a) claim:用戶(hù)聲明開(kāi)始處理某個(gè)工作流活動(dòng)。當(dāng)一個(gè)工作流活動(dòng)屬于 多個(gè)人員時(shí),之后首先聲明該活動(dòng)的人員才可以完成該活動(dòng)。IBM工作流 引擎提供了以下方法來(lái)完成本操作public ClientObjectWrapper claim(java.Iang.String aiid) public ClientObjectWrapper claim(AIID aiid)b) complete:聲明之后,用戶(hù)可以完成該工作流活動(dòng)。工作流實(shí)例只 有在工作流活動(dòng)被完成以后,才會(huì)繼續(xù)執(zhí)行。IBM工作流引擎提供了以下 方法來(lái)完成本操作public void complete(java.lang.String aiid) public void complete(AIID aiid) public void complete(AIID aiid,ClientObjectWrapper output)public void complete(java.lang.String aiid,ClientObjectWrapper output) public void complete(AIID aiid,ClientObjectWrapper faultMessage,java.lang.String faultName) public void complete(java.lang.String aiid,ClientObjectWrapper faultMessage,java.lang.String faultName)c) cancelClaim:用戶(hù)可以取消聲明。IBM工作流引擎提供了以下方法 來(lái)完成本操作public void cancelCIaim(java.lang.String aiid) public void cancelClaim(AIID aiid)d) forceRetry, forceComplete:當(dāng)工作流活動(dòng)由于執(zhí)行4^或者其他原 因停止時(shí),管理員可以強(qiáng)迫重試或者強(qiáng)迫完成該活動(dòng)。IBM工作流引擎提供了以下方法來(lái)完成本操作 public void forceRetry(java.lang.String aiid,boolean continueOnError) public void forceRetry(AIID aiid,boolean continueOnError) public void forceRetry(java.lang.String aiid,ClientObjectWrapper inputMessage,boolean continueOnError) public void forceRetry(AIID aiid,ClientObjectWrapper inputMessage, boolean contimieOiiError) public void forceComplete(java.lang.String aiid,boolean continueOnError) public void forceComplete(AIID aiid,boolean continueOnError) public void forceComplete(java.lang.String aiid,ClientObjectWrapper output, boolean continueOnError) public void forceComplete(AIID aiid,ClientObjectWrapper output, boolc肌continueOnError) public void forceComplete(java.lang.String aiid,ClientObjectWrapper message, java.lang.String faultName, boolean continueOnError) public void forceComplete(AIID aiid,ClientObjectWrapper message, java.lang.String faultName, boolean continueOnError) e) transfer用戶(hù)可以將自己的活動(dòng),轉(zhuǎn)交給其他人進(jìn)行處理。IBM工 作流引擎提供了以下方法來(lái)完成本操作public void transferWorkltem(AIID aiid,int assignmeiitReasoii, java.lang.String fromUserID, java.lang.String toUserID) public void transferWorkltem(PIID piid,int assignmentReason,java,lang.String fromUserID, java.lang.String toUserID) public void transferWorkltem(java.lang.String identifier,int assignmentReason, java.lang.String fromUserID, java.lang.String toUserID) 另外,還可以使用了以下API來(lái)與工作流引擎交互,完成其它相關(guān)工作查詢(xún)系統(tǒng)中所有已部署的工作流public ProcessTemplateData[queryProcessTemplates( java.lang.String whereClause, java.lang.String orderByClause, java.lang.Integer threshold, java.util.TimeZone timeZone) 啟動(dòng)一個(gè)工作流public PIID initiate(java.lang.String processTemplateName, ClientObjectWrapper inputMessage) 查詢(xún)工作流引擎,獲得待處理事宜等信息public QueryResultSet queryAll(java.lang.String selectClause,java.lang.String whereClause, java.lang.String orderByClause, java.lang.Integer skipTuples, java.lang.Integer threshold, java.util.TimeZone timeZone) public QueryResultSet query(java.lang.String storedQueryName,java.lang.Integer skipTuples) public QueryResultSet query(java.lang.Striiig selectClause,java.lang.String whereClause, java.lang.String orderByClause,java.lang.Integer skipTuples, java.lang.Integer threshold, java.util.TimeZone timeZone) public QueryResultSet query(java.lang.String selectClause,java.lang.String whereClause, java.lang.String orderByClause, java.Iang.Integer threshold, java.util.TimeZone timeZone)獲得某個(gè)人工活動(dòng)的狀態(tài)public ActivitylnstanceData getActivitylnstance(AIID aiid) 從工作流引擎中讀取/寫(xiě)入工作流數(shù)據(jù)public ClientObjectWrapper getVariable(PIID piid,java.lang.String variableName) public void setVariable(PIID piid,java.lang.String variabIeName, ClientObjectWrapper message)從以上敘述可見(jiàn),在典型的工作流系統(tǒng)中,工作流執(zhí)行服務(wù)在后臺(tái)負(fù) 責(zé)工作流的執(zhí)行,而客戶(hù)需要通it^戶(hù)端應(yīng)用提供的用戶(hù)界面,來(lái)參與工 作流的執(zhí)行。目前,為了在客戶(hù)端應(yīng)用中訪(fǎng)問(wèn)工作流引擎的功能,需要為 每個(gè)人工活動(dòng)(也就是工作流程中的一個(gè)步驟)單獨(dú)定義用戶(hù)界面,而用 戶(hù)界面程序通過(guò)工作流引擎定義的標(biāo)準(zhǔn)接口 ,來(lái)與工作流引擎進(jìn)行交互。在構(gòu)建當(dāng)今的企業(yè)業(yè)務(wù)過(guò)程應(yīng)用時(shí),生成用戶(hù)界面(UI)是^艮大的工 作量。例如,在Websphere Process Server中,通常需要為每個(gè)工作流活 動(dòng)生成約2個(gè)頁(yè)面(jsp或portlet)。例如在一典型的場(chǎng)景中, 一企業(yè)具 有20個(gè)工作流,而每個(gè)工作流具有IO個(gè)人工活動(dòng)。這樣,開(kāi)發(fā)者必須完 成大約400個(gè)Web頁(yè)。而當(dāng)工作流數(shù)據(jù)改變時(shí),4艮多頁(yè)都需要改變。目前存在著一些應(yīng)用可以自動(dòng)生成工作流用戶(hù)界面,例如WebSphere Process Server所帶的BPC Explorer。圖2A、2B示出了使用BPC Explorer 生成一示例工作流的用戶(hù)界面的方法的示意圖,其中圖2A示出了如何將 工作流定義映射到接口定義,以及如何將接口定義映射到具體的數(shù)據(jù)模式 定義;圖2B示出了在BPC Expl orer中用于根據(jù)以上映射產(chǎn)生工作流用戶(hù) 界面的用戶(hù)界面的屏幕截圖。然而,這些應(yīng)用所具有的如下一些缺點(diǎn)使得 它們無(wú)法在很多實(shí)際的業(yè)務(wù)場(chǎng)景中"f吏用首先,現(xiàn)有的工作流用戶(hù)界面生 成器無(wú)法提供單獨(dú)的用戶(hù)界面定義機(jī)制,它們更專(zhuān)注于工作流數(shù)據(jù),而不 是這些數(shù)據(jù)的用戶(hù)界面呈現(xiàn)。它們僅使用由BPEL過(guò)程定義的數(shù)據(jù)模式 (schema),而這種數(shù)據(jù)模式很難描述復(fù)雜的用戶(hù)界面元素,例如文本區(qū) 域(Text Area)、單選^&( Radio Button)、日歷選擇器(calendar picker)、 下拉菜單(DropdownList)等。其次,它們不能根據(jù)不同情況進(jìn)行定制。 例如,主管和人力資源經(jīng)理應(yīng)當(dāng)查看和訪(fǎng)問(wèn)不同的lt據(jù)。即4吏同一主管在 不同的工作流步驟(例如,批準(zhǔn)步驟和提交步驟)中也應(yīng)具有不同的用戶(hù) 界面。由于在現(xiàn)有的這些工具中沒(méi)有基于業(yè)務(wù)角色的用戶(hù)界面定義和數(shù)據(jù) 過(guò)濾功能,所以如果一用戶(hù)能訪(fǎng)問(wèn)工作流數(shù)據(jù),則他可以看到所有的內(nèi)容, 而不pi根據(jù)不同的業(yè)務(wù)角色以及不同的步驟提供不同的用戶(hù)界面。這些工 具沒(méi)有對(duì)工作流數(shù)據(jù)的更細(xì)粒度的控制,而這種控制^li艮多實(shí)際的應(yīng)用場(chǎng) 景中所需要的。顯然,本領(lǐng)域中需要一種新的更方便、靈活和高效的用于生成工作流 用戶(hù)界面的方法和裝置。發(fā)明內(nèi)容根據(jù)本發(fā)明的一個(gè)方面,提供了一種工作流用戶(hù)界面生成方法,該方 法包括以下步驟創(chuàng)建并部署工作流用戶(hù)界面定義文件,該工作流用戶(hù)界 面定義文件包含工作流數(shù)據(jù)項(xiàng)、工作流參與角色、工作流活動(dòng)與工作流用 戶(hù)界面元素及其屬性之間的映射關(guān)系;在工作流運(yùn)行過(guò)程中確定當(dāng)前用 戶(hù)所屬的工作流參與角色;該工作流參與角色的當(dāng)前工作流活動(dòng);讀取并解析所述工作流用戶(hù)界面定義文件,并才艮據(jù)所確定的工作流參與角色及其 當(dāng)前工作流活動(dòng)、以及所讀取和解析的所述映射關(guān)系,獲得對(duì)應(yīng)于所述工作流參與角色及其當(dāng)前工作流活動(dòng)的工作流數(shù)據(jù)項(xiàng)以^目應(yīng)的工作流用戶(hù)界面元素及其屬性;從工作流引擎獲得所述數(shù)據(jù)項(xiàng)的值;以及生成并向用 戶(hù)呈現(xiàn)工作流用戶(hù)界面,該工作流用戶(hù)界面包含對(duì)應(yīng)于所述工作流數(shù)據(jù)項(xiàng) 的、具有所述數(shù)據(jù)項(xiàng)的值以及所述屬性的工作流用戶(hù)界面元素,并可通過(guò) 工作流引擎接口與工作流引擎交互。根據(jù)本發(fā)明的另一個(gè)方面,提供了一種工作流用戶(hù)界面生成器,包括 角色信息收集器,用于確定當(dāng)前用戶(hù)所屬的工作流參與角色;工作流引擎 訪(fǎng)問(wèn)器,用于訪(fǎng)問(wèn)工作流引擎以確定該工作流參與角色的當(dāng)前工作流活動(dòng); 工作流用戶(hù)界面定義解析器,用于讀取并解析工作流用戶(hù)界面定義文件, 其中該工作流用戶(hù)界面定義文件包含工作流數(shù)據(jù)項(xiàng)、工作流參與角色、工 作流活動(dòng)與工作流用戶(hù)界面元素及其屬性之間的映射關(guān)系,以及用于根據(jù) 所確定的工作流參與角色及其當(dāng)前工作流活動(dòng)、以及所讀取和解析的映射 關(guān)系,獲得對(duì)應(yīng)于所述工作流參與角色及其當(dāng)前工作流活動(dòng)的工作流數(shù)據(jù) 項(xiàng)以及相應(yīng)的工作流用戶(hù)界面元素及其屬性;其中,所述工作流引擎訪(fǎng)問(wèn) 器還用于從工作流引擎獲得所述數(shù)據(jù)項(xiàng)的值;以及工作流用戶(hù)界面呈現(xiàn)器, 用于生成并向用戶(hù)呈現(xiàn)工作流用戶(hù)界面,該工作流用戶(hù)界面包含對(duì)應(yīng)于所 述工作流數(shù)據(jù)項(xiàng)的、具有所述數(shù)據(jù)項(xiàng)的值以及所述屬性的工作流用戶(hù)界面 元素,并可通過(guò)工作流引擎接口與工作流引擎交互。根據(jù)本發(fā)明的又一個(gè)方面,還提供了一種工作流系統(tǒng),包括工作流 引擎;部署在該工作流系統(tǒng)中的一個(gè)或多個(gè)用于相應(yīng)的已部署的工作流的 工作流用戶(hù)界面定義文件,所述工作流用戶(hù)界面定義文件包含工作流數(shù)據(jù) 項(xiàng)、工作流參與角色、工作流活動(dòng)與工作流用戶(hù)界面元素及其屬性之間的 映射關(guān)系;以及上述工作流用戶(hù)界面生成器。根據(jù)本發(fā)明的再一個(gè)方面,還提供了一種用于開(kāi)發(fā)、部署和維護(hù)工作 流用戶(hù)界面的方法,該包括以下步驟創(chuàng)建工作流用戶(hù)界面定義文件,該 工作流用戶(hù)界面定義文件包含工作流數(shù)據(jù)項(xiàng)、工作流參與角色、工作流活動(dòng)與工作流用戶(hù)界面元素及其屬性之間的映射關(guān)系;將所創(chuàng)建的工作流用 戶(hù)界面定義文件部署到工作流系統(tǒng)中,以便在工作流運(yùn)行過(guò)程中,根據(jù)用 戶(hù)與工作流系統(tǒng)的交互從所述工作流用戶(hù)界面定義文件生成用于該用戶(hù)的 當(dāng)前活動(dòng)的用戶(hù)界面;根據(jù)需求修改工作流用戶(hù)界面定義文件或創(chuàng)建新的 工作流定義文件;以及將修改的或新創(chuàng)建的工作流定義文件部署到工作流 系統(tǒng)中,以便在工作流運(yùn)行過(guò)程中,根據(jù)用戶(hù)與工作流系統(tǒng)的交互從所述 t^改的或新創(chuàng)建的工作流用戶(hù)界面定義文件生成用于該用戶(hù)的當(dāng)前活動(dòng)的 用戶(hù)界面。本發(fā)明還可體現(xiàn)為一種計(jì)算機(jī)可讀介質(zhì),其用于存儲(chǔ)包括用于實(shí)現(xiàn)上 述方法的指令的計(jì)算機(jī)程序產(chǎn)品。根據(jù)本發(fā)明的工作流用戶(hù)界面生成方法及生成器具有以下優(yōu)點(diǎn) 簡(jiǎn)化了客戶(hù)端應(yīng)用的界面開(kāi)發(fā)工作,降低了用戶(hù)界面開(kāi)發(fā)者的工作量; 可以自動(dòng)地和動(dòng)態(tài)地生成復(fù)雜的用戶(hù)界面;可才艮據(jù)用戶(hù)的角色進(jìn)行定制不同角色的用戶(hù)可以具有不同的用戶(hù)界 面。此外,相同的用戶(hù)角色在不同的工作流步驟中可以訪(fǎng)問(wèn)不同的工作流 數(shù)據(jù),或者可以不同方式訪(fǎng)問(wèn)工作流數(shù)據(jù);容易學(xué)習(xí)和維護(hù)。開(kāi)發(fā)者再不需要學(xué)習(xí)和掌握復(fù)雜的用戶(hù)界面編程語(yǔ) 言和工具,而只需要以易學(xué)易懂XML等文^格式編制用戶(hù)界面定義文件 即可。此外,當(dāng)以后需要改變工作流用戶(hù)界面時(shí),只要改變用戶(hù)界面定義 文件并重新部署該文件即可。
所附權(quán)利要求中闡述了被認(rèn)為是本發(fā)明的特點(diǎn)的新穎特征。但是,通 過(guò)在結(jié)合附圖閱讀時(shí)參照下面對(duì)說(shuō)明性實(shí)施例的詳細(xì)說(shuō)明可更好地理解發(fā) 明本身以及其優(yōu)選使用模式、另外的目標(biāo)以及優(yōu)點(diǎn),在附圖中圖1工作流管理聯(lián)盟發(fā)布的定義了典型工作流管理系統(tǒng)的體系結(jié)構(gòu)模型;圖2A、 2B示出了現(xiàn)有技術(shù)中使用BPC Explorer生成一示例工作流的用戶(hù)界面的方法的示意圖;圖3示出了一示例性雇員升遷工作流以及分別對(duì)應(yīng)于該工作流中的三 個(gè)人工步驟的三個(gè)用戶(hù)界面;圖4示出了上述示例工作流中的工作流lt據(jù)項(xiàng)、工作流參與角色、工 作流活動(dòng)與工作流用戶(hù)界面元素之間的對(duì)應(yīng)關(guān)系;圖5示出了才艮據(jù)本發(fā)明的一實(shí)施例編制的針對(duì)以上示例工作流的工作 流用戶(hù)界面定義文件的片段;圖6示出了根據(jù)本發(fā)明的實(shí)施例的工作流用戶(hù)界面生成器及其相關(guān)工 作流部件的示意圖;圖7示出了根據(jù)本發(fā)明的實(shí)施例的一種開(kāi)發(fā)、部署和維護(hù)工作流用戶(hù) 界面的方法以及相關(guān)的工作流開(kāi)發(fā)、部署和運(yùn)行過(guò)程;以及圖8具體示出了根據(jù)本發(fā)明的實(shí)施例的工作流用戶(hù)界面生成方法。
具體實(shí)施方式
下面參照附圖本發(fā)明的實(shí)施例,然而,應(yīng)當(dāng)明了的是,本發(fā)明并不限 于所介紹的特定實(shí)施例。相反,可以考慮用下面的特征和元素的任意組合 來(lái)實(shí)施和實(shí)踐本發(fā)明,而無(wú)論它們是否涉及不同的實(shí)施例.因此,下面的 方面、特征、實(shí)施例和優(yōu)點(diǎn)僅作說(shuō)明之用而不應(yīng)被看作是所附權(quán)利要求的 要素或限定,除非權(quán)利要求中明確提出。在此說(shuō)明書(shū)內(nèi)對(duì)特征、優(yōu)點(diǎn)或類(lèi)發(fā)明的任何單個(gè)實(shí)施例內(nèi)。相反,涉及特征和優(yōu)點(diǎn)的語(yǔ)言應(yīng)被理解為僅意 味著與實(shí)施例相聯(lián)系地描述的特定特征、優(yōu)點(diǎn)和特性被包含在本發(fā)明的至 少一個(gè)實(shí)施例內(nèi)。本發(fā)明提供了一種動(dòng)態(tài)的、基于角色的、以工作流活動(dòng)為中心的用戶(hù) 界面生成方法及生成器。本發(fā)明提出了一種工作流用戶(hù)界面描述標(biāo)準(zhǔn)或規(guī) 范,用來(lái)設(shè)置每個(gè)用戶(hù)界面元素以及與其相關(guān)的業(yè)務(wù)角色和工作流步驟(活 動(dòng)).本發(fā)明的用戶(hù)界面生成器可基于該工作流用戶(hù)界面描述、角色信息 以及工作流交互模式在運(yùn)行時(shí)生成用戶(hù)界面。所生成的用戶(hù)界面可通過(guò)標(biāo)準(zhǔn)或非標(biāo)準(zhǔn)的接口與工作流引擎交互,以完成工作流。下面首先參照一工作流示例說(shuō)明本發(fā)明的基本思想??紤]如圖3所示的一示例性雇員升遷工作流以及分別對(duì)應(yīng)于該工作流 中的3個(gè)人工步驟的3個(gè)用戶(hù)界面。該工作流包括以下3個(gè)人工步驟1) 主管提交升遷雇員的請(qǐng)求;2) 人力資源經(jīng)理批準(zhǔn)該請(qǐng)求,并確定該雇員的新工資;3) CSR (客戶(hù)服務(wù)代表)然后將所有數(shù)據(jù)輸入到數(shù)據(jù)庫(kù)。 在該示例中,不同角色只能訪(fǎng)問(wèn)有關(guān)該雇員的不同數(shù)據(jù),或只能以不同方式訪(fǎng)問(wèn)有關(guān)該雇員的數(shù)據(jù)。主管可以修改關(guān)于該雇員的基本信息,例 如雇員號(hào)碼(Employee Personal Number)、雇員姓名(Employee Last Name、 Employee First Name)、雇員所屬類(lèi)另!] (Employee New Band)、 升遷理由(Reason)、開(kāi)始日期(Begin Date)、職位(Position Tile)。 相應(yīng)地,在該主管的用于提交雇員升遷請(qǐng)求的用戶(hù)界面中,用于修改以上 信息的用戶(hù)界面元素為可編輯或可選擇的文本框或下拉列表框。人力資源 經(jīng)理可以調(diào)整該雇員的工資,而不能修改該雇員的其他信息。相應(yīng)地,在 人力資源經(jīng)理的用于調(diào)整雇員工資的用戶(hù)界面中,增加了可編輯的雇員工 資文本框,而該雇員的其他信息顯示為不可編輯的只讀標(biāo)簽(label).而 CSR不能修改該雇員的任何數(shù)據(jù),但他可以查看所有數(shù)據(jù)。因此,在CSR 的用戶(hù)界面中,該雇員的所有信息都顯示為只讀標(biāo)簽。圖4示出了以上示例工作流中的工作流數(shù)據(jù)項(xiàng)、工作流參與角色、工作 流活動(dòng)與工作流用戶(hù)界面元素之間的對(duì)應(yīng)關(guān)系。從圖4中的表可見(jiàn),工作流 的參與角色及其活動(dòng)包括Manager⑥ManagerSubmit (即主管提交雇員升 遷請(qǐng)求)、HR@HRApprove (人力資源經(jīng)理批準(zhǔn))、和CSR (客戶(hù)代表 的活動(dòng)),工作流數(shù)據(jù)項(xiàng)包括雇員姓名、雇員號(hào)碼、雇員工資、升遷理由、 雇員類(lèi)別。其中,Manager⑥ManagerSubmit活動(dòng)涉及的數(shù)據(jù)項(xiàng)為雇員姓 名、雇員號(hào)碼、升遷理由、雇員類(lèi)別,且這些數(shù)據(jù)項(xiàng)在用于該角色該活動(dòng)的用戶(hù)界面中的顯示格式即其分別對(duì)應(yīng)的用戶(hù)界面元素為標(biāo)簽、文;^恒、 文本框、下拉框;HR(^HRApprove活動(dòng)涉及的數(shù)據(jù)項(xiàng)為雇員姓名、雇員號(hào)碼、雇員工資、升遷理由、雇員所屬類(lèi)別,且這些數(shù)據(jù)項(xiàng)在用于該角色 該活動(dòng)的用戶(hù)界面中的顯示格式即其分別對(duì)應(yīng)的用戶(hù)界面元素為標(biāo)簽、標(biāo)簽、文本框、標(biāo)簽、標(biāo)簽;而步驟CSR涉及到的數(shù)據(jù)項(xiàng)為雇員姓名、雇員 號(hào)碼、雇員工資、升遷理由、雇員所屬類(lèi)別,且這些數(shù)據(jù)項(xiàng)在用于該角色 該活動(dòng)的用戶(hù)界面中的顯示格式即其分別對(duì)應(yīng)的用戶(hù)界面元素均為標(biāo)簽。在本發(fā)明的實(shí)施例中,根據(jù)如圖4所示的該工作流中工作流數(shù)據(jù)項(xiàng)、工 作流參與角色、工作流活動(dòng)與工作流用戶(hù)界面元素之間的對(duì)應(yīng)關(guān)系,編制 一工作流用戶(hù)界面定義文件,該工作流用戶(hù)界面定義文件包含以下內(nèi)容 什么工作流數(shù)據(jù)項(xiàng)可由什么工作流參與角色在什么工作流活動(dòng)中訪(fǎng)問(wèn),以 及每個(gè)數(shù)據(jù)項(xiàng)的顯示格式。也就是說(shuō),該工作流用戶(hù)界面定義文件建立了 工作流數(shù)據(jù)項(xiàng)、工作流參與角色、工作流活動(dòng)、以及工作流用戶(hù)界面元素 及其屬性之間的映射關(guān)系。圖5示出了根據(jù)本發(fā)明的 一實(shí)施例編制的針對(duì)以上示例工作流的工作 流用戶(hù)界面定義文件的片段。如圖所示,在該定義文件中包含一名稱(chēng)(<FieldName>)為EmployeeSalary的數(shù)據(jù)項(xiàng),該數(shù)據(jù)項(xiàng)在用戶(hù)界面中的 標(biāo)簽(〈FieldLabd〉)為EmployeeSalary,其在一個(gè)顯示定義(<DisplayDefinition>)中的顯示格式(〈DisplayFormat〉)即對(duì)應(yīng)的用戶(hù)界面 為標(biāo)簽(Label),其只讀屬性(<ReadOnly>)為真,其訪(fǎng)問(wèn)角色(<AccessRole>)為主管(Manager),其訪(fǎng)問(wèn)活動(dòng)(AccessActivity)為 ManagerSubmit,該數(shù)據(jù)項(xiàng)在另一個(gè)顯示定義中的顯示格式為文本才匡,其 必有屬性(<Required>)為真,其只讀屬性為假,其訪(fǎng)問(wèn)角色為人力資源 經(jīng)理(HR),其訪(fǎng)問(wèn)活動(dòng)為HRApprove。也就是說(shuō),該用戶(hù)界面定義文 件片段規(guī)定了 ,在用于角色Manager的ManagerSubmit活動(dòng)的用戶(hù)界面中, 包含一對(duì)應(yīng)于數(shù)據(jù)項(xiàng)EmployeeSalary的只讀標(biāo)簽,而在用于角色HR的 HRApprove活動(dòng)的用戶(hù)界面中,包括一對(duì)應(yīng)于數(shù)據(jù)項(xiàng)EmployeeSalary的可 編輯的必有的文本框.該工作流用戶(hù)界面定義文件的其他部分的結(jié)構(gòu)與上 述片段相同。上述工作流用戶(hù)界面定義文件被編制完成后,將被部署到工作流系統(tǒng)中。此后,在工作流的運(yùn)行過(guò)程中,根據(jù)本發(fā)明的工作流用戶(hù)界面生成器 將加載和解析該工作流用戶(hù)界面定義文件,以動(dòng)態(tài)生成針對(duì)不同用戶(hù)角色 和工作流活動(dòng)的工作流用戶(hù)界面。在本發(fā)明的優(yōu)選實(shí)施例中,為工作流系 統(tǒng)所管理的每一個(gè)工作流定義和部署一個(gè)單獨(dú)的工作流用戶(hù)界面定義文 件。這樣,當(dāng)用戶(hù)需要運(yùn)行一個(gè)工作流時(shí),可加栽相應(yīng)的工作流用戶(hù)界面 定義文件,并為該用戶(hù)生成適于其角色和當(dāng)前工作流活動(dòng)的界面。應(yīng)指出的是,以上所述的工作流用戶(hù)界面定義方法以及工作流用戶(hù)界 面定義文件的格式、其中的元素和屬性等僅為本發(fā)明的工作流用戶(hù)界面定 義方法和工作流用戶(hù)界面定義文件的示例,而不是對(duì)其的P艮制。在本發(fā)明 的其他實(shí)施例中,工作流用戶(hù)界面定義文件可采用不同的格式,例如非XML的其他文本或非文W式,并且可具有其他的元素和屬性等。只要工 作流用戶(hù)界面定義文件能夠表達(dá)工作流中的工作流數(shù)據(jù)項(xiàng)、工作流參與角 色、工作流活動(dòng)與工作流用戶(hù)界面元素之間的映射關(guān)系,則這些變化均處 于本發(fā)明的范圍之內(nèi)。圖6示出了根據(jù)本發(fā)明的實(shí)施例的工作流用戶(hù)界面生成器及其相關(guān)工 作流部件的示意圖。如圖所示,根據(jù)本發(fā)明的該實(shí)施例,工作流用戶(hù)界面生成器610在Web 容器或Portal容器650中運(yùn)行。就;l:說(shuō),才艮據(jù)本發(fā)明的實(shí)施例,采用了瀏覽 器/服務(wù)器結(jié)構(gòu)。在這種結(jié)構(gòu)下,工作流用戶(hù)界面生成器610是以 servlet/portlet形式存在的,并遵守Servlet/Portlet規(guī)范。它運(yùn)行在應(yīng)用服務(wù) 器(例如WebSphere Application Server或者WebSphere Portal Server)中, 并且被這些應(yīng)用服務(wù)器中的組成部分Web容器或者Portal容器所管理和服 務(wù)。這樣,當(dāng)客戶(hù)端發(fā)出請(qǐng)求后,該請(qǐng)求會(huì)首先到達(dá)應(yīng)用服務(wù)器 (WebSphere Application Server或者WebSphere Portal Server), 然后應(yīng)用 服務(wù)器的Web容器或者Portal容器會(huì)獲得該請(qǐng)求,然后調(diào)用調(diào)用根據(jù)本發(fā)明的實(shí)施例的工作流用戶(hù)界面生成器以產(chǎn)生用戶(hù)界面.產(chǎn)生的界面代碼會(huì) 返回給Web容器(Portal容器),進(jìn)而由應(yīng)用服務(wù)器發(fā)送回到客戶(hù)的瀏覽器中,從而顯示給最終用戶(hù)。這就是說(shuō),根據(jù)本發(fā)明的該實(shí)施例的用戶(hù)界面生成器610被實(shí)現(xiàn)為 servlet或者portlet,并能直接服務(wù)客戶(hù)請(qǐng)求。作為另一種選擇,用戶(hù)界面 生成器610也可作為獨(dú)立的模塊存在,這樣,客戶(hù)請(qǐng)求首先通過(guò)應(yīng)用服務(wù)器 的Web容器或Portal容器到達(dá)其他servlet或者portlet,這些servlet/portlet 再調(diào)用用戶(hù)界面生成器610生成用戶(hù)界面代碼,然后把用戶(hù)界面代碼送回到 Web容器/Portal容器,進(jìn)而發(fā)回到客戶(hù)端瀏覽器中。當(dāng)然,本發(fā)明的工作流用戶(hù)界面生成器也可以采用Servlet或Portlet之 外的其他技術(shù)來(lái)實(shí)現(xiàn),例如采用諸如ASP等其他可生成動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)中 的一個(gè)來(lái)實(shí)現(xiàn)。工作流用戶(hù)界面生成器610可通過(guò)工作流引擎接口與工作流引擎620相 交互,并可訪(fǎng)問(wèn)工作流用戶(hù)界面定義文件630以及用戶(hù)注冊(cè)表640。例如, 在本發(fā)明的一實(shí)施例中,當(dāng)用戶(hù)在生成的用戶(hù)界面上進(jìn)行操作時(shí),會(huì)將操 作請(qǐng)求發(fā)回到用戶(hù)界面生成器610,由用戶(hù)界面生成器610再調(diào)用相關(guān)的工 作流引擎接口,與工作流引擎620交互。當(dāng)然,也可以考慮,當(dāng)用戶(hù)在生成 的用戶(hù)界面上進(jìn)行操作時(shí),將操作請(qǐng)求發(fā)回到用戶(hù)界面生成器之外的另一 模塊中,而由該模塊負(fù)責(zé)與工作流引擎620交互。工作流引擎620是所有業(yè)務(wù)過(guò)程在其中運(yùn)行的容器,并提供讀取工作流 數(shù)據(jù)、完成工作流活動(dòng)和獲取工作流活動(dòng)狀態(tài)等的接口。該工作流引擎620 可以為任何現(xiàn)有的商業(yè)和非商業(yè)的工作流引擎以及未來(lái)開(kāi)發(fā)的工作流引 擎,例如IBM的WebSphere Process Server中的工作流引擎。用戶(hù)注冊(cè)表640是企業(yè)存儲(chǔ)其用戶(hù)、組和組織信息的中央儲(chǔ)存庫(kù),例如 其中存儲(chǔ)有企業(yè)中每個(gè)用戶(hù)的ID、該用戶(hù)所屬的組和角色之間的映射關(guān) 系。其形式可以是任何適當(dāng)格式的文件、關(guān)系或非關(guān)系數(shù)據(jù)庫(kù)、LDAP目 錄等。工作流用戶(hù)界面定義文件630是根據(jù)本發(fā)明的實(shí)施例的包含所定義的 工作流用戶(hù)界面元素并存儲(chǔ)在文件系統(tǒng)中的文件。該文件中包含工作流 數(shù)據(jù)項(xiàng)、工作流參與角色、工作流活動(dòng)與工作流用戶(hù)界面元素及其屬性之間的映射關(guān)系。該文件優(yōu)選地AXML格式的。當(dāng)然,任何其 他文本或非文本格式也是可能的。工作流用戶(hù)界面生成器610本身包括如下四個(gè)部件 角色信息收集器614,該部件用于從用戶(hù)注冊(cè)表640獲取用戶(hù)、組和 組織信息,例如通過(guò)當(dāng)前登錄用戶(hù)的用戶(hù)ID獲得該用戶(hù)所屬的每個(gè)工作流 參與角色。這種信息可用于篩選將在工作流用戶(hù)界面上顯示的字段。角色 信息收集器614可直接從系統(tǒng)上下文中獲得當(dāng)前用戶(hù)的id,也可能通過(guò)例 如調(diào)用Web容器或Portal容器中提供的方法,來(lái)獲得當(dāng)前登錄用戶(hù)的id., 并進(jìn)而根據(jù)該用戶(hù)id,在后臺(tái)用戶(hù)注冊(cè)表640中查詢(xún)到該用戶(hù)所屬的用戶(hù)組 和角色。如果用戶(hù)的角色等信息被存放于LDAP中,角色信息收集器614 可通過(guò)標(biāo)準(zhǔn)的LDAP查詢(xún)語(yǔ)法來(lái)進(jìn)行查詢(xún)。而如果用戶(hù)的角色等信息4^存 放于數(shù)據(jù)庫(kù)中時(shí),角色信息收集器614可通過(guò)SQL語(yǔ)言來(lái)進(jìn)行查詢(xún)。工作流用戶(hù)界面定義解析器613,該部件用于從工作流用戶(hù)界面 定義文件中加載工作流用戶(hù)界面定義,并將其解析為數(shù)據(jù)對(duì)象以便利進(jìn)一 步的遍歷等操作。由于在已加載并解析的工作流用戶(hù)界面定義中包括工作 流數(shù)據(jù)項(xiàng)、工作流參與角色、工作流活動(dòng)與工作流用戶(hù)界面元素及其屬性 之間的對(duì)應(yīng)關(guān)系,因此,當(dāng)已確定了當(dāng)前工作流參與角色以及其當(dāng)前工作 流活動(dòng)之后,可通過(guò)遍歷所解析的所有工作流用戶(hù)界面定義來(lái)找到與該工作流參與角色和工作流活動(dòng)相關(guān)的所有工作流數(shù)據(jù)項(xiàng)以;sU目應(yīng)的工作流用戶(hù)界面元素及其屬性。當(dāng)工作流用戶(hù)界面定義文件為XML格式的時(shí),該工 作流用戶(hù)界面定義解析器613可以為標(biāo)準(zhǔn)的XML解析器。工作流引擎訪(fǎng)問(wèn)器612,該部件用于通過(guò)工作流引擎API與工作流 引擎交互,包括查詢(xún)工作列表,獲取當(dāng)前工作流活動(dòng)及其狀態(tài),讀取工作 流數(shù)據(jù),完成工作流活動(dòng)等。例如,當(dāng)已由用戶(hù)選擇或啟動(dòng)了工作流,且 已通過(guò)角色信息收集器614獲得當(dāng)前用戶(hù)所屬的工作流參與角色后,工作流 引擎訪(fǎng)問(wèn)器612可訪(fǎng)問(wèn)工作流引擎620來(lái)獲得該工作流參與角色的當(dāng)前工作 流活動(dòng)及其狀態(tài)。此外,當(dāng)已通過(guò)由工作流用戶(hù)界面定義解析器613所加栽 和解析的工作流用戶(hù)界面定義獲得與當(dāng)前工作流參與角色和當(dāng)前工作流活動(dòng)相關(guān)的所有工作流數(shù)據(jù)項(xiàng)后,工作流引擎訪(fǎng)問(wèn)器612可訪(fǎng)問(wèn)工作流引擎 620,來(lái)獲得所有這些工作流數(shù)據(jù)項(xiàng)的值,以便顯示在工作流用戶(hù)界面中。 在工作流用戶(hù)界面生成器610已生成工作流用戶(hù)界面并將其提供給用戶(hù)后, 用戶(hù)在該工作流用戶(hù)界面上執(zhí)行操作時(shí),與該操作對(duì)應(yīng)的用戶(hù)請(qǐng)求可M 送到工作流用戶(hù)界面生成器610中的工作流引擎訪(fǎng)問(wèn)器612,使得工作流引 擎訪(fǎng)問(wèn)器612可訪(fǎng)問(wèn)工作流引擎620,從而完成工作流活動(dòng)。工作流用戶(hù)界面呈現(xiàn)器611,該部件用于基于與當(dāng)前工作流參與角色和 工作流活動(dòng)相關(guān)的所有工作流數(shù)據(jù)項(xiàng)及其值、以;5L相應(yīng)的工作流用戶(hù)界面 元素及其屬性來(lái)生成工作流用戶(hù)界面,其中該工作流用戶(hù)界面包含對(duì)應(yīng)于 所述工作流數(shù)據(jù)項(xiàng)的、具有所述屬性以及所述數(shù)據(jù)項(xiàng)的值的工作流用戶(hù)界 面元素。工作流用戶(hù)界面呈現(xiàn)器611還用于根據(jù)當(dāng)前活動(dòng)的狀態(tài),生成工作 流用戶(hù)界面中的相應(yīng)的操作按鈕。例如,當(dāng)用戶(hù)還未聲明該活動(dòng)時(shí),可在 工作流用戶(hù)界面中生成一個(gè)Claim (聲明)按鈕。而當(dāng)該活動(dòng)的狀態(tài)為已 經(jīng)被聲明時(shí),可在工作流用戶(hù)界面中生成CancelClaim (取消聲明)、 Complete (完成)按鈕,等等。在本發(fā)明的實(shí)施例中,所生成的工作流用戶(hù)界面可在Web容器或 Portal容器中運(yùn)行,且可通過(guò)工作流引擎接口與工作流引擎交互,從而用 戶(hù)可通過(guò)該工作流用戶(hù)界面完成工作流活動(dòng)。具體地,當(dāng)用戶(hù)在所生成的 工作流用戶(hù)界面中完成編輯操作后,可點(diǎn)擊用戶(hù)界面中的例如CompIete按 鈕進(jìn)行提交。所提交的請(qǐng)求可經(jīng)由Web容器或Portal容器被傳送給工作流 用戶(hù)界面生成器,而工作流用戶(hù)界面生成器(例如經(jīng)由其中的工作流引擎 訪(fǎng)問(wèn)器)可執(zhí)行相關(guān)的接口函數(shù)與工作流引擎交互,從而完成工作流活動(dòng)。 或者,所提交的請(qǐng)求也可經(jīng)由Web容器或Portal容器被傳送給一單獨(dú)的 servlet或portlet,而所述servlet或portlet可通過(guò)執(zhí)行相關(guān)的接口函數(shù)與工作 流引擎交互,從而完成工作流活動(dòng)。所生成的用戶(hù)界面既可以;lLHTML代碼,其可通過(guò)瀏覽器訪(fǎng)問(wèn),也可 以是其他代碼,例如可供手機(jī)等移動(dòng)設(shè)備訪(fǎng)問(wèn)的WML代碼。在本發(fā)明的一實(shí)施例中,使用的工作流定義標(biāo)準(zhǔn)BPEL (業(yè)務(wù)過(guò)程執(zhí)行語(yǔ)言),利用了IBM的WebSphere Integration Developer進(jìn)行工作流 的開(kāi)發(fā),并將其部署到IBM WebSphere Process Server上面執(zhí)行。并且, 本發(fā)明的工作流用戶(hù)用戶(hù)界面生成器以及其生成的工作流用戶(hù)界面利用 BPEL自身定義的接口與工作流引擎進(jìn)行交互,從而完成創(chuàng)建工作流用戶(hù) 界面以及工作流運(yùn)行中的各種活動(dòng)。應(yīng)指出的是,圖6中示出和在上文中描述的根據(jù)本發(fā)明的實(shí)施 例工作流用戶(hù)界面生成器僅是示例性和說(shuō)明性的,而不是對(duì)本發(fā) 明的限制。本發(fā)明的工作流用戶(hù)界面生成器可具有更多、更少和 不同的部件,且所述各模塊的功能可由其他模塊來(lái)完成。例如, 本發(fā)明的工作流用戶(hù)界面生成器610還可具有一用于協(xié)調(diào)所述各 模塊之間的操作的控制模塊,或者協(xié)調(diào)各模塊之間的操作的功能 可由所述模塊之一例如工作流用戶(hù)界面呈現(xiàn)器611來(lái)完成。再例 如,通過(guò)遍歷所解析的所有工作流用戶(hù)界面定義來(lái)找到與當(dāng)前工作流參與 角色和工作流活動(dòng)相關(guān)的所有工作流數(shù)據(jù)項(xiàng)以及相應(yīng)的工作流用戶(hù)界面元 素及其屬性的功能既可由工作流用戶(hù)界面定義解析器613完成,也可由工作 流用戶(hù)界面呈現(xiàn)器611完成,也可由一單獨(dú)的模塊來(lái)完成。所述工作流用戶(hù)界面生成器610、工作流用戶(hù)界面定義文件630、用戶(hù) 注冊(cè)表640、以及工作流引擎620優(yōu)選地位于計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境中,且優(yōu)選地 位于該計(jì)算機(jī)網(wǎng)絡(luò)中的一服務(wù)器計(jì)算機(jī)上,該服務(wù)器計(jì)算機(jī)與多個(gè)客戶(hù)機(jī) 通過(guò)網(wǎng)絡(luò)連接。工作流系統(tǒng)的各用戶(hù)通過(guò)各自的客戶(hù)機(jī)與服務(wù)器計(jì)算機(jī)上 的工作流系統(tǒng)以及根據(jù)本發(fā)明的工作流用戶(hù)界面生成器相交互。所述工作 流用戶(hù)界面生成器610、工作流用戶(hù)界面定義文件630、用戶(hù)注冊(cè)表640、以 及工作流引擎620也可以位于該網(wǎng)絡(luò)中的不同計(jì)算機(jī)上,并通過(guò)網(wǎng)絡(luò)相互連 接和通信。并且,工作流用戶(hù)界面生成器610中的^^模塊也可以位于相同的 或不同的計(jì)算機(jī)上。此夕卜,盡管在圖6中僅示出了與根據(jù)本發(fā)明的實(shí)施例的工作流用戶(hù)界面 生成器相關(guān)聯(lián)的工作流引擎620等,但本領(lǐng)域的技術(shù)人員可想到,工作流系 統(tǒng)中以及工作流系統(tǒng)所運(yùn)行于其中的計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)中還存在其他未示出的部件。圖7示出了才艮據(jù)本發(fā)明的實(shí)施例的一種開(kāi)發(fā)、部署和維護(hù)工作流用戶(hù) 界面的方法以及相關(guān)的工作流開(kāi)發(fā)、部署和運(yùn)行過(guò)程。如圖所示,在步驟701,業(yè)務(wù)分析員分析業(yè)務(wù)過(guò)程,并形成工作流描述。在步驟702,過(guò)程開(kāi)發(fā)者根據(jù)工作流描述完成工作流系統(tǒng)的開(kāi)發(fā),這 包括設(shè)計(jì)和開(kāi)發(fā)工作流模塊等。在步驟703,開(kāi)發(fā)者完成工作流應(yīng)用的其他部分,如開(kāi)發(fā)支持該工作 流應(yīng)用的其他應(yīng)用程序,創(chuàng)建該工作流應(yīng)用所需的數(shù)據(jù)庫(kù)等。在步驟704,用戶(hù)界面開(kāi)發(fā)者根據(jù)本發(fā)明的工作流用戶(hù)界面定義規(guī)范 編制工作流用戶(hù)界面定義文件,該工作流用戶(hù)界面定義文件包含該工作流 中的工作流數(shù)據(jù)項(xiàng)、工作流參與角色、工作流活動(dòng)與工作流用戶(hù)界面元素 及其屬性之間的映射關(guān)系。在步驟705,管理員部署該工作流項(xiàng)目,包括部署工作流模板和其他 支持程序,以及將所述工作流用戶(hù)界面定義文件部署到該工作流系統(tǒng)中。在步驟706,最終用戶(hù)可在該工作流項(xiàng)目上工作,即生成和運(yùn)行工作 流實(shí)例。在工作流的運(yùn)行過(guò)程中,將根據(jù)用戶(hù)與工作流系統(tǒng)的交互從所述 工作流用戶(hù)界面定義文件生成用于該用戶(hù)的當(dāng)前活動(dòng)的用戶(hù)界面。此外, 在工作流的運(yùn)行過(guò)程中,根據(jù)業(yè)務(wù)需要,用戶(hù)可能需要對(duì)工作流做出改變, 例如改變工作流的某用戶(hù)界面等。在這種情況下,在步驟707,維護(hù)團(tuán)隊(duì)或用戶(hù)界面開(kāi)發(fā)者只需^"改或 重新編制工作流用戶(hù)界面定義文件,并返回步驟705,將該修改或重新編 制的用戶(hù)界面定義文件重新部署到該工作流系統(tǒng)中,從而可以在工作流運(yùn) 行過(guò)程中,根據(jù)用戶(hù)與工作流系統(tǒng)的交互從所述修改的或新創(chuàng)建的工作流 用戶(hù)界面定義文件生成用于該用戶(hù)的當(dāng)前活動(dòng)的新的用戶(hù)界面。下面參照?qǐng)D8具,述根據(jù)本發(fā)明的實(shí)施例的工作流用戶(hù)界面生成方 法。在下文中,根據(jù)本發(fā)明的實(shí)施例的工作流用戶(hù)界面生成方法被描述為 由上述根據(jù)本發(fā)明實(shí)施例的工作流用戶(hù)界面生成器610執(zhí)行,然而這只是說(shuō)明性和例示性的,而不是對(duì)本發(fā)明的限制;相反,根據(jù)本發(fā)明的實(shí)施例 的工作流用戶(hù)界面生成方法也可由其他裝置執(zhí)行。如圖8所示,在步驟801,生成并部署工作流用戶(hù)界面定義文件,該 工作流用戶(hù)界面定義文件包含工作流數(shù)據(jù)項(xiàng)、工作流參與角色、工作流活 動(dòng)與工作流用戶(hù)界面元素及其屬性之間的映射關(guān)系。在本發(fā)明的優(yōu)選實(shí)施 例中,該工作流用戶(hù)界面定義文件是XML格式。當(dāng)然,工作流用戶(hù)界面 定義文件也可以采取任何其他可表示工作流數(shù)據(jù)項(xiàng)、工作流參與角色、工 作流活動(dòng)與工作流用戶(hù)界面元素及其屬性之間的映射關(guān)系的格式??墒褂?任何XLM編輯工具或文本編輯工具來(lái)生成該工作流用戶(hù)界面定義文件, 所生成的工作流用戶(hù)界面定義文件將,皮部署到工作流系統(tǒng)中。在本發(fā)明的 優(yōu)選實(shí)施例中,可為每個(gè)工作流生成和部署一個(gè)工作流用戶(hù)界面定義文件,文件:"、,- , 、 乂 ",.在步驟802,用戶(hù)在客戶(hù)機(jī)上登錄進(jìn)工作流系統(tǒng)后,可以J^創(chuàng)建一 個(gè)工作流實(shí)例,也可以參與一個(gè)正在運(yùn)行的工作流實(shí)例??稍谟脩?hù)登錄工 作流系統(tǒng)后的初始界面中提供列出工作流系統(tǒng)所管理的所有工作流和正在 運(yùn)行的工作流實(shí)例的列表,供用戶(hù)從中選擇,以創(chuàng)建工作流實(shí)例,或參與 正在運(yùn)行的工作流實(shí)例。例如,可通過(guò)由根據(jù)本發(fā)明的實(shí)施例的工作流用 戶(hù)界面生成器610調(diào)用WebSphere Process Server中的query接口函數(shù),來(lái)獲 得當(dāng)前用戶(hù)可參與的工作流實(shí)例;并且可通過(guò)由梠^據(jù)本發(fā)明的實(shí)施例的工 作流用戶(hù)界面生成器610調(diào)用WebSphere Process Server中initiate,來(lái)iL^ 創(chuàng)建一個(gè)由WebSphere Process Server所管理工作流實(shí)例。在步驟803,根據(jù)本發(fā)明的實(shí)施例的工作流用戶(hù)界面生成器610 在通過(guò)Web容器或Portal容器接收到來(lái)自客戶(hù)端的創(chuàng)建或參與工 作流實(shí)施的請(qǐng)求后,其中的角色信息收集器614可直接從系統(tǒng)上下文 中獲得當(dāng)前用戶(hù)的id,或者,角色信息收集器614例如可通過(guò)調(diào)用Web 容器或Portal容器中提供的方法,來(lái)獲得當(dāng)前登錄用戶(hù)的id.,并且根據(jù)該id, 在后臺(tái)用戶(hù)注冊(cè)表640中查詢(xún)到該用戶(hù)所屬的用戶(hù)組和角色。在步驟804,根據(jù)本發(fā)明的實(shí)施例的工作流用戶(hù)界面生成器610可以通 過(guò)其中的工作流引擎訪(fǎng)問(wèn)器612訪(fǎng)問(wèn)工作流引擎620來(lái)確定該工作 流參與角色的當(dāng)前工作流活動(dòng),例如可以通過(guò)標(biāo)準(zhǔn)的工作流引擎接口 例如query和getActivitylnstance等基于在步驟802中獲得的工作流實(shí)例名 稱(chēng)來(lái)獲得當(dāng)前用戶(hù)所屬角色的當(dāng)前活動(dòng)以及當(dāng)前活動(dòng)的狀態(tài)等信息。當(dāng)用 戶(hù)發(fā)起創(chuàng)建工作流時(shí),可以直接從來(lái)自客戶(hù)端的用戶(hù)請(qǐng)求獲得用戶(hù)選擇的 工作流名稱(chēng),并確定當(dāng)前活動(dòng)為起始活動(dòng)。在步驟805,根據(jù)本發(fā)明實(shí)施例的工作流用戶(hù)界面生成器610中 的工作流用戶(hù)界面定義解析器613可根據(jù)工作流名稱(chēng),找到相應(yīng)的工作 流用戶(hù)界面定義文件,加栽該工作流用戶(hù)界面定義文件,并例如通過(guò)標(biāo)準(zhǔn) 的XML解析器對(duì)該文件進(jìn)行解析,從而將用戶(hù)界面定義文件中的內(nèi)容,轉(zhuǎn) 換為內(nèi)存中的對(duì)象表示。在步驟806,根據(jù)本發(fā)明實(shí)施例的工作流用戶(hù)界面生成器610中的工作 流用戶(hù)界面呈現(xiàn)器611或工作流用戶(hù)界面定義解析器613或其他部 件可根據(jù)在步驟803獲得的用戶(hù)角色信息,以及在步驟804獲取的當(dāng)前工作 流活動(dòng)等信息,在步驟805中加栽和解析的用戶(hù)界面定義中進(jìn)行遍歷,找到 所有涉及到的用戶(hù)界面元素及其屬性,以及對(duì)應(yīng)的工作流數(shù)據(jù)項(xiàng)。在步驟807,對(duì)于在步驟806得到的所有工作流數(shù)據(jù)項(xiàng),根據(jù)本發(fā) 明的實(shí)施例的工作流用戶(hù)界面生成器610中的工作流引擎訪(fǎng)問(wèn)器612可 例如通過(guò)標(biāo)準(zhǔn)的工作流引擎接口 getVariableO^工作流引擎中獲擬目應(yīng) 數(shù)據(jù)值'在步驟808,對(duì)于在步驟806中得到的每個(gè)工作流數(shù)據(jù)項(xiàng),工作流用 戶(hù)界面呈現(xiàn)器611可根據(jù)定義好的顯示格式(即在步驟806中得到的對(duì) 應(yīng)的用戶(hù)界面元素及其屬性),按照定義順序,依次生成對(duì)應(yīng)的用戶(hù)界面 元素,并顯示于最終用戶(hù)的界面上。在步驟809,根據(jù)在步驟804中獲得的當(dāng)前活動(dòng)的狀態(tài),工作流用 戶(hù)界面呈現(xiàn)器611可例如按照工作流的標(biāo)準(zhǔn)活動(dòng)處理才莫式,在用戶(hù)界面上 生成相應(yīng)的^Mt^^,例如Claim、 CancelClaim、 Complete、 Transfer (轉(zhuǎn)移)等。在步驟808和809中所生成的包含用戶(hù)界面元素和必要的操作按鈕的 用戶(hù)界面將被提供給用戶(hù),例如顯示在用戶(hù)的瀏覽器上。根據(jù)本發(fā)明的實(shí)施例,當(dāng)用戶(hù)點(diǎn)擊這些^之一時(shí),相應(yīng)的用戶(hù)請(qǐng)求將被從瀏覽器發(fā)送到 應(yīng)用服務(wù)器,并通過(guò)應(yīng)用服務(wù)器中的Web容器或Portal容器傳遞給根據(jù) 本發(fā)明的實(shí)施例的工作流用戶(hù)界面生成器610,工作流用戶(hù)界面生成器610 中的工作流引擎訪(fǎng)問(wèn)器612將調(diào)用相應(yīng)的工作流引擎接口函數(shù),從而使工 作流引擎執(zhí)行相應(yīng)的工作流操作。例如,在本發(fā)明的一實(shí)施例中,當(dāng)用戶(hù) 點(diǎn)擊用戶(hù)界面上的Claim按鈕時(shí),將觸發(fā)claim函數(shù)調(diào)用;當(dāng)用戶(hù)點(diǎn)擊用 戶(hù)界面上的CancelClaim拎組時(shí),將觸發(fā)cancelClaim函數(shù)調(diào)用;當(dāng)用戶(hù) 點(diǎn)擊用戶(hù)界面上的Complete按鈕時(shí),將觸發(fā)complete函數(shù)調(diào)用,等等。以上描述了才艮據(jù)本發(fā)明的實(shí)施例的工作流用戶(hù)界面生成方法,應(yīng)指出 的是,以上描述僅為示例,而不是對(duì)本發(fā)明的限制。本發(fā)明的工作流用戶(hù) 界面生成方法可具有更多、更少和不同的步驟, 一些步驟可具有不同的順 序或者可并行執(zhí)行, 一些步驟可被劃分為更多的步驟,或可合并為更少的 步驟,等等。例如,在本發(fā)明的工作流用戶(hù)界面生成方法中也可包括生成 和部署工作流模板的步驟。再例如,讀取并解析工作流用戶(hù)界面定義文件 的步驟805也可以在確定當(dāng)前用戶(hù)所屬的工作流參與角色的步驟803和確 定用戶(hù)的當(dāng)前工作流活動(dòng)的步驟804之前執(zhí)行,或與之并行執(zhí)行。又例如, 讀取并解析工作流用戶(hù)界面定義文件的步驟805也可與在所讀取并解析的 工作流用戶(hù)界面定義中遍歷以找到所有涉及到的用戶(hù)界面元素以及對(duì)應(yīng)的 工作流數(shù)據(jù)項(xiàng)的步驟806合并為一個(gè)步驟。此外,生成用戶(hù)界面元素的步 驟808也可與生成用戶(hù)界面上的操作掩組的步驟809合并為一個(gè)生成工作 流用戶(hù)界面的步驟,等等。所有這些變化都處于本發(fā)明的精神和范圍之內(nèi)。 本發(fā)明可以硬件、軟件、或硬件與軟件的結(jié)合的方式實(shí)現(xiàn),本發(fā)明可 以集中的方式在一個(gè)計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn),或以分布方式實(shí)現(xiàn),在這種分布 方式中,不同的部件分布在若干互連的計(jì)算機(jī)系統(tǒng)中。適于執(zhí)行本文中描 述的方法的任何計(jì)算機(jī)系統(tǒng)或其它裝置都是合適的。 一種典型的硬件和軟件的組合可以是帶有計(jì)算*14呈序的通用計(jì)算機(jī)系統(tǒng),當(dāng)該計(jì)算M序^n載和執(zhí)行時(shí),控制該計(jì)算機(jī)系統(tǒng)而使其執(zhí)行本文中描述的方式。本發(fā)明也可體現(xiàn)在計(jì)算機(jī)程序產(chǎn)品中,該程序產(chǎn)品包含使能實(shí)現(xiàn)本文 中描述的方法的所有特征,并且當(dāng)其^i口栽到計(jì)算機(jī)系統(tǒng)中時(shí),能夠執(zhí)行 這些方法。盡管以上已參照優(yōu)選實(shí)施例具體示出和說(shuō)明了本發(fā)明,但是本領(lǐng)域內(nèi) 的那些技術(shù)人員應(yīng)理解,可在形式和細(xì)節(jié)上對(duì)其進(jìn)行各種改變而不會(huì)背離 本發(fā)明的精神和范圍。
權(quán)利要求
1.一種工作流用戶(hù)界面生成方法,包括以下步驟創(chuàng)建并部署工作流用戶(hù)界面定義文件,該工作流用戶(hù)界面定義文件包含工作流數(shù)據(jù)項(xiàng)、工作流參與角色、工作流活動(dòng)與工作流用戶(hù)界面元素及其屬性之間的映射關(guān)系;在工作流運(yùn)行過(guò)程中確定當(dāng)前用戶(hù)所屬的工作流參與角色;確定該工作流參與角色的當(dāng)前工作流活動(dòng);讀取并解析所述工作流用戶(hù)界面定義文件,并根據(jù)所確定的工作流參與角色及其當(dāng)前工作流活動(dòng)、以及所讀取和解析的所述映射關(guān)系,獲得對(duì)應(yīng)于所述工作流參與角色及其當(dāng)前工作流活動(dòng)的工作流數(shù)據(jù)項(xiàng)以及相應(yīng)的工作流用戶(hù)界面元素及其屬性;從工作流引擎獲得所述數(shù)據(jù)項(xiàng)的值;以及生成并向用戶(hù)呈現(xiàn)工作流用戶(hù)界面,該工作流用戶(hù)界面包含對(duì)應(yīng)于所述工作流數(shù)據(jù)項(xiàng)的、具有所述數(shù)據(jù)項(xiàng)的值以及所述屬性的工作流用戶(hù)界面元素,并可通過(guò)工作流引擎接口與工作流引擎交互。
2. 根據(jù)權(quán)利要求1的方法,其中所述確定該工作流參與角色 的當(dāng)前工作流活動(dòng)的步驟還包括通過(guò)工作流引擎確定該工作流參 與角色的當(dāng)前工作流活動(dòng)的狀態(tài),且所述生成并向用戶(hù)呈現(xiàn)的工 作流用戶(hù)界面還包含對(duì)應(yīng)于所述當(dāng)前工作流活動(dòng)的狀態(tài)的操作按 鈕,其中用戶(hù)通過(guò)操作所述操作按鈕來(lái)與工作流引擎交互。
3. 根據(jù)權(quán)利要求1的方法,其中所述工作流用戶(hù)界面定義文 件是XML格式的。
4. 根據(jù)權(quán)利要求1的方法,其中所述生成并向用戶(hù)呈現(xiàn)工作 流用戶(hù)界面的步驟是通過(guò)Web容器或Portal容器執(zhí)行的,且所述 工作流用戶(hù)界面通過(guò)Web容器或Portal容器與所述工作流引擎交互。
5. 根據(jù)權(quán)利要求1的方法,其中所述工作流引擎接口為 BPEL接o 。
6. —種工作流用戶(hù)界面生成器,包括角色信息收集器,用于確定當(dāng)前用戶(hù)所屬的工作流參與角色;工作流引擎訪(fǎng)問(wèn)器,用于訪(fǎng)問(wèn)工作流引擎以確定該工作流參 與角色的當(dāng)前工作流活動(dòng);工作流用戶(hù)界面定義解析器,用于讀取并解析工作流用戶(hù)界 面定義文件,其中該工作流用戶(hù)界面定義文件包含工作流數(shù)據(jù)項(xiàng)、 工作流參與角色、工作流活動(dòng)與工作流用戶(hù)界面元素及其屬性之 間的映射關(guān)系,以及用于根據(jù)所確定的工作流參與角色及其當(dāng)前 工作流活動(dòng)、以及所讀取和解析的映射關(guān)系,獲得對(duì)應(yīng)于所述工 作流參與角色及其當(dāng)前工作流活動(dòng)的工作流數(shù)據(jù)項(xiàng)以及相應(yīng)的工 作流用戶(hù)界面元素及其屬性;其中,所述工作流引擎訪(fǎng)問(wèn)器還用于從工作流引擎獲得所述 數(shù)據(jù)項(xiàng)的值;以及工作流用戶(hù)界面呈現(xiàn)器,用于生成并向用戶(hù)呈現(xiàn)工作流用戶(hù) 界面,該工作流用戶(hù)界面包含對(duì)應(yīng)于所述工作流數(shù)據(jù)項(xiàng)的、具有 所述數(shù)據(jù)項(xiàng)的值以及所述屬性的工作流用戶(hù)界面元素,并可通過(guò) 工作流引擎接口與工作流引擎交互。
7. 根據(jù)權(quán)利要求6的工作流用戶(hù)界面生成器,其中所述工作 流引擎訪(fǎng)問(wèn)器用于確定該工作流參與角色的當(dāng)前工作流活動(dòng)的狀 態(tài),且所述生成并向用戶(hù)呈現(xiàn)的工作流用戶(hù)界面還包含對(duì)應(yīng)于所 述當(dāng)前工作流活動(dòng)的狀態(tài)的操作按鈕,其中用戶(hù)通過(guò)操作所述操 作按鈕來(lái)與工作流引擎交互。
8. 根據(jù)權(quán)利要求6的工作流用戶(hù)界面生成器,其中所述工作 流定義文件是XML格式的.
9. 根據(jù)權(quán)利要求6的工作流用戶(hù)界面生成器,其中該工作流用戶(hù)界面生成器在Web容器或Portal容器中運(yùn)行,且所述工作流 用戶(hù)界面通過(guò)Web容器或Portal容器與所述工作流引擎交互。
10. 根據(jù)權(quán)利要求6的工作流用戶(hù)界面生成器,其中所述工作 流引擎接口為BPEL接口 。
11. 一種工作流系統(tǒng),包括 工作流引擎;部署在該工作流系統(tǒng)中的一個(gè)或多個(gè)用于相應(yīng)的已部署的工 作流的工作流用戶(hù)界面定義文件,所述工作流用戶(hù)界面定義文件 包含工作流數(shù)據(jù)項(xiàng)、工作流參與角色、工作流活動(dòng)與工作流用戶(hù)界面元素及其屬性之間的映射關(guān)系;以及根據(jù)權(quán)利要求6-10中任何一項(xiàng)的工作流用戶(hù)界面生成器。
12. —種用于開(kāi)發(fā)、部署和維護(hù)工作流用戶(hù)界面的方法,包括 以下步驟創(chuàng)建工作流用戶(hù)界面定義文件,該工作流用戶(hù)界面定義文件 包含工作流數(shù)據(jù)項(xiàng)、工作流參與角色、工作流活動(dòng)與工作流用戶(hù) 界面元素及其屬性之間的映射關(guān)系;將所創(chuàng)建的工作流用戶(hù)界面定義文件部署到工作流系統(tǒng)中, 以便在工作流運(yùn)行過(guò)程中,根據(jù)用戶(hù)與工作流系統(tǒng)的交互從所述 工作流用戶(hù)界面定義文件生成用于該用戶(hù)的當(dāng)前活動(dòng)的用戶(hù)界 面;根據(jù)需求修改工作流用戶(hù)界面定義文件或創(chuàng)建新的工作流定 義文件;以及將修改的或新創(chuàng)建的工作流定義文件部署到工作流系統(tǒng)中, 以便在工作流運(yùn)行過(guò)程中,根據(jù)用戶(hù)與工作流系統(tǒng)的交互從所述 修改的或新創(chuàng)建的工作流用戶(hù)界面定義文件生成用于該用戶(hù)的當(dāng) 前活動(dòng)的用戶(hù)界面。
全文摘要
公開(kāi)了一種工作流用戶(hù)界面生成方法及生成器,該方法包括創(chuàng)建并部署工作流用戶(hù)界面定義文件,其包含工作流數(shù)據(jù)項(xiàng)、工作流參與角色、工作流活動(dòng)與工作流用戶(hù)界面元素及其屬性之間的映射關(guān)系;在工作流運(yùn)行過(guò)程中確定當(dāng)前用戶(hù)所屬的角色;通過(guò)工作流引擎確定該角色的當(dāng)前工作流活動(dòng);讀取并解析工作流用戶(hù)界面定義文件,并根據(jù)所確定的角色及其當(dāng)前活動(dòng)、以及所讀取和解析的映射關(guān)系,獲得相應(yīng)的工作流數(shù)據(jù)項(xiàng)以及工作流用戶(hù)界面元素及其屬性;從工作流引擎獲得所述數(shù)據(jù)項(xiàng)的值;以及生成并向用戶(hù)呈現(xiàn)工作流用戶(hù)界面,其包含對(duì)應(yīng)于所述工作流數(shù)據(jù)項(xiàng)的、具有所述值以及所述屬性的工作流用戶(hù)界面元素,并可通過(guò)工作流引擎接口與工作流引擎交互。
文檔編號(hào)G06Q10/00GK101334865SQ200710126838
公開(kāi)日2008年12月31日 申請(qǐng)日期2007年6月28日 優(yōu)先權(quán)日2007年6月28日
發(fā)明者M·斯塔基, 洋 劉, 蔣樂(lè)洋, 薛江波 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司