日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

oracle --構(gòu)建富互聯(lián)網(wǎng)應(yīng)用程序以監(jiān)控工作流和流程

 xuyizun 2006-10-11
構(gòu)建富互聯(lián)網(wǎng)應(yīng)用程序以監(jiān)控工作流和流程
作者:Doug Todd

通過擴(kuò)展 Oracle BPEL 流程管理器 API 創(chuàng)建實(shí)時(shí)工作流和高級(jí)流程活動(dòng)監(jiān)控儀表板。

查看完整的“BPEL 指南”索引

本文相關(guān)下載:
Oracle BPEL 流程管理器

2005 年 11 月發(fā)表

為了提高運(yùn)營(yíng)效率,越來越多的企業(yè)正在將其關(guān)鍵業(yè)務(wù)流程進(jìn)行自動(dòng)化。但是,即使流程實(shí)現(xiàn)了自動(dòng)化,也會(huì)因?yàn)橐韵聝蓚€(gè)重要原因而需要手動(dòng)交互:使流程前進(jìn)到下一步(工作流)以及為最終用戶提供實(shí)時(shí)流程可見性(流程監(jiān)控)。

來看一個(gè)開立新銀行帳戶的業(yè)務(wù)流程。首先,客戶提供必需的詳細(xì)信息(姓名、地址、SSN、起存額)以開立帳戶。該流程啟動(dòng)后,客戶將需要跟蹤請(qǐng)求的狀態(tài)并響應(yīng)銀行發(fā)出的任何其他查詢。該流程需要工作流來實(shí)現(xiàn)客戶參與,并需要流程監(jiān)控以便客戶可以跟蹤請(qǐng)求狀態(tài)。

Oracle BPEL 流程管理器簡(jiǎn)化了基本的工作流功能和流程活動(dòng)監(jiān)控。但同樣重要的是,通過擴(kuò)展其豐富的 API 接口以便與流程、實(shí)例和工作流交互,可以構(gòu)建一個(gè)支持高級(jí)工作流和流程活動(dòng)監(jiān)控的富互聯(lián)網(wǎng)應(yīng)用程序 (RIA)。該高級(jí)工作流功能可以使用戶和流程之間實(shí)現(xiàn)無延時(shí)的通信,而高級(jí)流程活動(dòng)監(jiān)控可以將實(shí)時(shí)流程狀態(tài)信息傳輸給工作流,以便采取相應(yīng)的操作。

“BPEL 指南”的這個(gè)部分中,我將介紹一個(gè)需要實(shí)時(shí)工作流和高級(jí)流程活動(dòng)監(jiān)控功能的簡(jiǎn)單業(yè)務(wù)情形。然后,您將了解基于 Macromedia Flash 的 RIA 的體系結(jié)構(gòu)(它利用 BPEL 流程管理器 API 滿足這些目標(biāo)),然后了解 RIA 如何初始化流程并集成工作流。您還將學(xué)習(xí)到如何以可視化方式描繪可用的流程路徑,以及當(dāng)前實(shí)例實(shí)際采用的流程路徑。(該功能對(duì)于回顧檢查流程非常重要。)最后,還將向您簡(jiǎn)要介紹如何使用 API 接口跟蹤審計(jì)線索。

RIA 背景知識(shí)

RIA 融合了 Web 應(yīng)用程序與傳統(tǒng)的桌面應(yīng)用程序,它通常是使用 JavaScript、Flash、Java Applet、XML 用戶界面標(biāo)記語(yǔ)言 (XUL)、可擴(kuò)展應(yīng)用程序標(biāo)記語(yǔ)言 (XAML)、JavaServer Faces 以及 Swinglets 等“交互式”技術(shù)構(gòu)建的,并經(jīng)常使用異步 XML 和 JavaScript (AJAX) 方法。RIA 可以潛在地提高聯(lián)機(jī)應(yīng)用程序的可用性和效率,還有開發(fā)人員的生產(chǎn)效率。根據(jù) Gartner Research,截止到 2010 年,至少 60% 的新應(yīng)用程序開發(fā)項(xiàng)目將包含某種 RIA 技術(shù)。

本文的示例包含一個(gè) BPEL 工作流界面和流程監(jiān)控控制臺(tái),用于為最終用戶提供一個(gè)統(tǒng)一的、功能豐富的儀表板。請(qǐng)注意,必須將該應(yīng)用程序與 Oracle BPEL 控制臺(tái)或真正的業(yè)務(wù)活動(dòng)監(jiān)控 (BAM) 加以區(qū)分;盡管存在某種程度的功能重疊,但 RIA 的目標(biāo)用戶群與后兩個(gè)應(yīng)用程序的目標(biāo)用戶群截然不同。BPEL 控制臺(tái)更適合于調(diào)試、部署和維護(hù)流程實(shí)例的管理員和開發(fā)人員,而 BAM 適合于要度量關(guān)鍵性能指標(biāo) (KPI) 然后采取措施改進(jìn)流程的流程所有者(管理人員、LOB 經(jīng)理等)和 IT 經(jīng)理。而本文描述的示例 RIA 應(yīng)用程序是針對(duì)以下最終用戶而設(shè)計(jì)的:要跟蹤特定業(yè)務(wù)交互的狀態(tài)并且不關(guān)心 KPI 或流程改進(jìn)的客戶、合作伙伴或供應(yīng)商。

示例流程

示例業(yè)務(wù)流程“新帳戶請(qǐng)求”是一個(gè)多企業(yè)流程,用于為金融服務(wù)中介、其金融合作伙伴(保險(xiǎn)公司及其財(cái)務(wù)顧問)、共同基金公司和結(jié)算所創(chuàng)建帳戶。本文將著重介紹該流程的前兩個(gè)步驟。

  1. 該流程接受客戶的 SSN,然后從數(shù)據(jù)庫(kù)中提取并顯示客戶信息(名稱、地址)。
  2. 客戶驗(yàn)證該數(shù)據(jù)、添加存款帳戶,然后單擊 Submit。
顯而易見,客戶將需要一個(gè)工作流界面來輸入 SSN、驗(yàn)證姓名和地址并輸入存款帳戶。此外,他們需要能夠以可視化方式監(jiān)控請(qǐng)求的進(jìn)度。

在下個(gè)部分中,我將概述有關(guān)構(gòu)建此應(yīng)用程序的開發(fā)方面的問題。稍后,您將看到新帳戶業(yè)務(wù)流程如何使用此應(yīng)用程序執(zhí)行。

構(gòu)建應(yīng)用程序

正如前面所介紹的,您將出于以下兩個(gè)主要目的設(shè)計(jì)該應(yīng)用程序:

  • 提供一個(gè)豐富的統(tǒng)一用戶界面,以便用戶跟蹤流程狀態(tài)并在需要時(shí)提供輸入(RIA 前端)
  • 提供高級(jí)流程監(jiān)控(BPEL 流程管理器 API 后端)

RIA 前端。RIA 用戶界面是應(yīng)用程序的“外觀”;它運(yùn)行并管理新帳戶業(yè)務(wù)流程。該表示層是使用 Macromedia Flex 技術(shù)和 ActionScript 腳本語(yǔ)言構(gòu)建的。它接受用戶輸入,并將其傳遞給 BPEL 流程。它還顯示流程的當(dāng)前狀態(tài)。

下面的圖 1 顯示了新帳戶業(yè)務(wù)流程的 RIA 前端。

圖 1

圖 1
新帳戶流程的 RIA 前端

下面,我們將了解它的四個(gè)主要組件及其重要功能:

  • 工作流欄: 工作流欄 (Workflow Bar) 使用戶可以在業(yè)務(wù)級(jí)別查看新帳戶流程中的工作流步驟。工作流欄中的每個(gè)步驟都在 BPEL 面板中進(jìn)行了分解。
  • BPEL 面板:BPEL 面板 (BPEL Panel) 提供了新帳戶流程中每個(gè)步驟的分解視圖。該面板動(dòng)態(tài)讀取給定流程實(shí)例的流程模型和實(shí)例審計(jì)線索,以將可用的流程路徑與當(dāng)前實(shí)例實(shí)際采用的路徑相結(jié)合。該面板還輪詢審計(jì)線索以確定哪個(gè)操作已經(jīng)掛起,并以可視化方式描述當(dāng)前流程此時(shí)此刻所處的位置??梢詥螕粢郧皥?zhí)行的流程的任何節(jié)點(diǎn)以查看它們相應(yīng)的有效載荷。該功能為操作和合規(guī)經(jīng)理提供了對(duì)當(dāng)前流程的過去、當(dāng)前以及潛在的未來狀態(tài)的實(shí)時(shí)可見性。
  • 工作流表單:工作流表單 (Workflow Forms) 對(duì)應(yīng)于新帳戶 BPEL 流程中的工作流步驟。該 Flex“視圖系列”與業(yè)務(wù)流程的審計(jì)線索通信,并更改視圖系列表單以匹配 BPEL 流程的環(huán)境。
  • 區(qū)域:區(qū)域 (Zones) 提供警報(bào)和反饋以幫助工作流和流程活動(dòng)用戶執(zhí)行他們相應(yīng)的作業(yè)(此處不予介紹)。
這些面板提供了卓越的可用性體驗(yàn)并與 BPEL API 交互。下面,我們將了解利用哪些后端 API 函數(shù)執(zhí)行 RIA 前端。

BPEL 流程管理器 API 后端。BPELService 類簡(jiǎn)化了 RIA 前端與 BPEL 流程管理器 API 中的流程活動(dòng)監(jiān)控功能之間的交互。如圖 2 所示以及隨后的表中的描述,BPELService 將 BPEL 流程管理器 API 中的五個(gè)接口用于流程、流程實(shí)例和任務(wù),以實(shí)現(xiàn)管理和監(jiān)控支持工作流的流程活動(dòng)。

圖 2

圖 2
UI 到 BPELService 功能的映射

接口

 

使 用戶能夠...

 

IDeliveryService

 

從 BPEL 流程域上部署的流程中調(diào)用實(shí)例

 

IBPELProcessHandle

 

瀏覽 BPEL 流程域上部署的 BPEL 流程

 

IInstanceHandle

 

對(duì) 活動(dòng)實(shí)例執(zhí)行操作

 

ITask

 

與 流程域中已經(jīng)實(shí)例化的任務(wù)交互

 

IWorklistService 搜索 并完成已經(jīng)從流程域中實(shí)例化的任務(wù)

 

您已經(jīng)了解了 RIA 和 BPELService 的基本組件,下面將介紹它們?nèi)绾螀f(xié)同提供豐富的最終用戶體驗(yàn)。

運(yùn)行新帳戶流程

如前所述,首先向客戶顯示工作流面板中的輸入屏幕以輸入 SSN。當(dāng)用戶單擊 Submit 時(shí),將使用 ActionScript 創(chuàng)建一個(gè)“新帳戶應(yīng)用程序”XML 文檔,并通過 Flex 的遠(yuǎn)程對(duì)象體系結(jié)構(gòu)將其傳遞給 BPELService 服務(wù)器端 Java 類。(這使 Flex 能夠直接與 BPELService 等 Java 對(duì)象進(jìn)行通信。)Java 組件使用 IDeliveryService 接口的實(shí)例初始化 BPEL 流程。隨后,如下所示,initiateProcess Java 方法將新創(chuàng)建的業(yè)務(wù)流程實(shí)例的實(shí)例引用 ID 返回給 Flex 客戶端。隨后的操作中使用此引用 ID 將相應(yīng)的業(yè)務(wù)流程實(shí)例作為目標(biāo)。

/**
* This function initiates an instance of a BPEL PM process based on the
* process name.The function sets the function id and the reference id for
* future use.
*
* @param xmlRequest
*            is the initiating request message for the process
* @param strBusinessProcess
*            the business process name
* @return the initiating response message for the process
*/
public String initiateProcess(Document xmlRequest, String strBusinessProcess) {
System.out.println("Initiate" + strBusinessProcess);
/*
* This interface allows users to invoke instances from processes
* deployed on a BPEL process domain.
*/
IDeliveryService deliveryService = getDeliveryService();
/*
* Construct the normalized message and send to Oracle BPEL process
* manager
*/
NormalizedMessage nm = new NormalizedMessage();
nm.addPart(PAYLOAD, xmlRequest.getDocumentElement());
NormalizedMessage responseNm = null;
try {
responseNm = deliveryService.request(strBusinessProcess, PROCESS,
nm);
} catch (Exception e){
e.printStackTrace();
throw new RuntimeException("Could not initialize process.");
}
Map payload = responseNm.getPayload();
Document xmlResponse = getXMLDoc(XMLHelper
.elementToString((Element) payload.get(PAYLOAD)));
/*
* Sets the Instance reference ID for interagating active BPEL
* instances.
*/
setInstanceReferenceId(strBusinessProcess, xmlResponse);
return XMLHelper.elementToString(xmlResponse.getDocumentElement());
}
啟用工作流。 如圖 3 所示,通過 BPEL 流程從外部系統(tǒng)檢索客戶數(shù)據(jù)并將其顯示在工作流面板中。然后,用戶驗(yàn)證數(shù)據(jù),輸入存款額,之后單擊 OK。

圖 3

圖 3
驗(yàn)證客戶數(shù)據(jù)和輸入存款額

工作流功能基于 BPEL 流程管理器提供的 ITask 和 IWorklistService 接口。RIA 將 IWorklistService 中的任務(wù)與完成給定任務(wù)所需的工作流屏幕相關(guān)聯(lián)。當(dāng)發(fā)生相應(yīng)的表單驗(yàn)證時(shí),用戶界面對(duì) completeTask 方法進(jìn)行遠(yuǎn)程對(duì)象調(diào)用(如下所示),以將 UI 中捕獲的數(shù)據(jù)發(fā)送至 BPEL 流程進(jìn)行進(jìn)一步的處理。

/**
* This function gets the use input from workflow zone, relates it to a task
* and completes the task.The function uses instance reference id for
* identifying process instance.
*/
public String completeTask(String strInstanceReferenceID,
String strActivityLabel, Document payload) {
System.out.println("completeTask-" + strInstanceReferenceID + "-"
+ strActivityLabel);
String strStatus = "OK";
try {
IWorklistService worklist = getWorklist();
// get task reference
ITask task = getTask(strInstanceReferenceID, strActivityLabel);
// set task payload
task.setAttachment(payload.getDocumentElement());
worklist.completeTask(task);
} catch (Exception e){
e.printStackTrace();
strStatus = ERROR_STRING;
}
return strStatus;
}
以上代碼將任務(wù)特定的數(shù)據(jù)置于 ITask 接口提供的任務(wù)附件中。該接口不但將相關(guān)的數(shù)據(jù)發(fā)送回 BPEL 流程,而且還將該數(shù)據(jù)置于 BPEL 流程審計(jì)線索中。

下面,我將介紹 RIA 應(yīng)用程序的另一個(gè)重要方面:流程監(jiān)控。

監(jiān)控流程活動(dòng)

以上介紹的前兩個(gè)步驟(初始化流程并啟用工作流)中,流程狀態(tài)通過 IProcessHandleIInstanceHandle API 接口以可視化方式進(jìn)行了更新。

Oracle BPEL 控制臺(tái)提供了一個(gè)基于 Web 的界面,用于部署、管理和調(diào)試 BPEL 流程。它是一個(gè)使用 JSP 頁(yè)面和 servlet(調(diào)用 BPEL 流程管理器 API)設(shè)計(jì)的管理工具。因此,您可以輕松地使用 API 開發(fā)您自己的 RIA 控制臺(tái),以提供一個(gè)業(yè)務(wù)級(jí)別的流程監(jiān)控界面。

該控制臺(tái)為特定的流程實(shí)例提供了可視反饋,甚至還提供了指向與流程中給定步驟關(guān)聯(lián)的審計(jì)線索數(shù)據(jù)的鏈接。而 RIA 控制臺(tái)的主要優(yōu)勢(shì)在于它能夠執(zhí)行實(shí)際分析與計(jì)劃分析。該控制臺(tái)顯示流程在其執(zhí)行過程中可能采取的所有可能的步驟;它還顯示在執(zhí)行過程中實(shí)際采用的路徑。用戶可以單擊任何流程節(jié)點(diǎn)來檢索 BPEL 有效荷載,并在對(duì)話框中顯示該有效荷載信息。

由于提供了以可視化方式描繪的理想與實(shí)際流程路徑以及在有效荷載級(jí)別進(jìn)行下鉆這一功能,最終用戶可以自行分析流程并標(biāo)識(shí)故障點(diǎn),而無需 IT 人員的參與。圖 4 描繪了實(shí)際與理想流程路徑分析的示例;“實(shí)際”路徑用綠色標(biāo)記。

圖 4

圖 4
實(shí)際與理想的流程路徑分析

下面,我們將介紹如何顯示流程以實(shí)現(xiàn)此分析,以及如何檢索審計(jì)線索數(shù)據(jù)并在 RIA 應(yīng)用程序中以可視化方式描繪它。

顯示流程

Flex BPEL 面板組件調(diào)用 IProcessHandle 接口來檢索整個(gè)業(yè)務(wù)模型的 XML 表示。BPEL 面板使用 IInstanceHandle 接口收集當(dāng)前實(shí)例審計(jì)線索的 XML 表示。隨后,BPEL 面板將比較并合并這兩個(gè) XML 表示,以創(chuàng)建一個(gè)可以描述整個(gè)模型以及所采用路徑的用戶界面。

Flex 尤其擅長(zhǎng)于通過它的原生 XML 功能執(zhí)行此類操作。Flex 可以使用 Flex repeater 控件與 ActionScript 的組合輕松地合并兩個(gè) XML 表示。組合使用時(shí),它們能夠?qū)?XML 轉(zhuǎn)換為數(shù)組,然后利用固有的數(shù)組處理功能簡(jiǎn)化 XML 的合并。

由于流程模型 XML 包含所有可能的節(jié)點(diǎn),因此它實(shí)際上充當(dāng)了 BPEL 面板的基礎(chǔ)。在流程模型的每個(gè)步驟中,都將比較流程模型 ID 與審計(jì)線索模型 ID。當(dāng)流程與審計(jì)的 ID 匹配時(shí),該節(jié)點(diǎn)的結(jié)果將從審計(jì)模型復(fù)制到流程模型。確定采用哪個(gè)路徑與查詢模型中哪些節(jié)點(diǎn)具有與其關(guān)聯(lián)的實(shí)例數(shù)據(jù)一樣簡(jiǎn)單。

以下代碼片段顯示了 getProcessModelgetInstanceAuditTrail 方法。

getProcessModel 方法

/**
* This function gets the debugger XML model of a given BPEL process.
*
* The function returns the xml model.
*
*
* @param strProcessID
*            the business process name.
* @return the xml process model.
*/
public String getProcessModel(String strProcessID) {
System.out.println("getProcessModel - " + strProcessID);
String strProcessModel = "";
try {
IBPELProcessHandle process = getLocator().lookupProcess(
strProcessID);
// Returns the debugger XML model of this BPEL process.
strProcessModel = process.getProcessModel();
} catch (Exception e){
e.printStackTrace();
strProcessModel = ERROR_STRING;
}
return strProcessModel;
}
getInstanceAuditTrail 方法
/**
* This function gets the XML audit trail of a given BPEL process.
*
* The function returns the xml model.
*
*
* @param strProcessID
*            the business process name.
* @return the xml process model.
*/
public String getInstanceAuditTrail(String strInstanceReferenceID) {
System.out.println("getInstanceAuditTrail - " + strInstanceReferenceID);
String strResponse = "";
try {
IInstanceHandle instance = getInstance(strInstanceReferenceID);
// Returns the XML representation of the audit trail of this
// instance.
strResponse = instance.getAuditTrail();
} catch (Exception e){
e.printStackTrace();
strResponse = ERROR_STRING;
}
return strResponse;
}
查看審計(jì)線索數(shù)據(jù)

審計(jì)線索數(shù)據(jù)可用于已經(jīng)執(zhí)行的每個(gè)流程節(jié)點(diǎn)。該功能類似于 BPEL 控制臺(tái)中相應(yīng)的功能。通過 Flex 用戶界面,可以訪問在用戶界面中選擇的流程節(jié)點(diǎn)的詳細(xì)信息數(shù)據(jù)(請(qǐng)參見圖 5)。

圖 5

圖 5
查看有效載荷信息

可以使用以下 ActionScript 2.0 代碼提取審計(jì)線索數(shù)據(jù):

bpelObject.bpelDetails = eventData.event.details.data;
Flex 界面通過跟蹤審計(jì)線索中的活動(dòng)來輪詢當(dāng)前業(yè)務(wù)流程狀態(tài)的更改,從而以可視化方式描繪業(yè)務(wù)流程中哪個(gè)步驟已經(jīng)掛起。檢測(cè)到更改時(shí),F(xiàn)lex 應(yīng)用程序?qū)⑹褂眠h(yuǎn)程調(diào)用請(qǐng)求一個(gè)新的當(dāng)前實(shí)例跟蹤來檢索審計(jì)線索。隨后,使用此實(shí)例跟蹤在與每個(gè) BPEL 流程用戶任務(wù)關(guān)聯(lián)的輸入屏幕上顯示數(shù)據(jù)。Flex 客戶端輸入屏幕使用活動(dòng)關(guān)聯(lián) ID 與相應(yīng)的 BPEL 流程步驟關(guān)聯(lián)。

結(jié)論

業(yè)務(wù)流程的價(jià)值在于它能夠提供優(yōu)秀的流程性能可視化描繪并支持任務(wù)集成。從美學(xué)角度而言,本文描述的應(yīng)用程序?qū)τ谧罱K用戶極具吸引力。

正如我所演示的,RIA 可以提供一個(gè)松散耦合的表示層方法來提交新的 SOA 應(yīng)用程序。通過組合 RIA 前端與 SOA 后端,企業(yè)可以降低互聯(lián)網(wǎng)應(yīng)用程序的管理和部署成本。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多