打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
oracle --构建富互联网应用程序以监控工作流和流程
构建富互联网应用程序以监控工作流和流程
作者:Doug Todd
通过扩展 Oracle BPEL 流程管理器 API 创建实时工作流和高级流程活动监控仪表板。
查看完整的“BPEL 指南”索引
本文相关下载:
Oracle BPEL 流程管理器
2005 年 11 月发表
为了提高运营效率,越来越多的企业正在将其关键业务流程进行自动化。但是,即使流程实现了自动化,也会因为以下两个重要原因而需要手动交互:使流程前进到下一步(工作流)以及为最终用户提供实时流程可见性(流程监控)。
来看一个开立新银行帐户的业务流程。首先,客户提供必需的详细信息(姓名、地址、SSN、起存额)以开立帐户。该流程启动后,客户将需要跟踪请求的状态并响应银行发出的任何其他查询。该流程需要工作流来实现客户参与,并需要流程监控以便客户可以跟踪请求状态。
Oracle BPEL 流程管理器简化了基本的工作流功能和流程活动监控。但同样重要的是,通过扩展其丰富的 API 接口以便与流程、实例和工作流交互,可以构建一个支持高级工作流和流程活动监控的富互联网应用程序 (RIA)。该高级工作流功能可以使用户和流程之间实现无延时的通信,而高级流程活动监控可以将实时流程状态信息传输给工作流,以便采取相应的操作。
“BPEL 指南”的这个部分中,我将介绍一个需要实时工作流和高级流程活动监控功能的简单业务情形。然后,您将了解基于 Macromedia Flash 的 RIA 的体系结构(它利用 BPEL 流程管理器 API 满足这些目标),然后了解 RIA 如何初始化流程并集成工作流。您还将学习到如何以可视化方式描绘可用的流程路径,以及当前实例实际采用的流程路径。(该功能对于回顾检查流程非常重要。)最后,还将向您简要介绍如何使用 API 接口跟踪审计线索。RIA 背景知识
RIA 融合了 Web 应用程序与传统的桌面应用程序,它通常是使用 JavaScript、Flash、Java Applet、XML 用户界面标记语言 (XUL)、可扩展应用程序标记语言 (XAML)、JavaServer Faces 以及 Swinglets 等“交互式”技术构建的,并经常使用异步 XML 和 JavaScript (AJAX) 方法。RIA 可以潜在地提高联机应用程序的可用性和效率,还有开发人员的生产效率。根据 Gartner Research,截止到 2010 年,至少 60% 的新应用程序开发项目将包含某种 RIA 技术。
本文的示例包含一个 BPEL 工作流界面和流程监控控制台,用于为最终用户提供一个统一的、功能丰富的仪表板。请注意,必须将该应用程序与 Oracle BPEL 控制台或真正的业务活动监控 (BAM) 加以区分;尽管存在某种程度的功能重叠,但 RIA 的目标用户群与后两个应用程序的目标用户群截然不同。BPEL 控制台更适合于调试、部署和维护流程实例的管理员和开发人员,而 BAM 适合于要度量关键性能指标 (KPI) 然后采取措施改进流程的流程所有者(管理人员、LOB 经理等)和 IT 经理。而本文描述的示例 RIA 应用程序是针对以下最终用户而设计的:要跟踪特定业务交互的状态并且不关心 KPI 或流程改进的客户、合作伙伴或供应商。示例流程
示例业务流程“新帐户请求”是一个多企业流程,用于为金融服务中介、其金融合作伙伴(保险公司及其财务顾问)、共同基金公司和结算所创建帐户。本文将着重介绍该流程的前两个步骤。 该流程接受客户的 SSN,然后从数据库中提取并显示客户信息(名称、地址)。 客户验证该数据、添加存款帐户,然后单击 Submit。
显而易见,客户将需要一个工作流界面来输入 SSN、验证姓名和地址并输入存款帐户。此外,他们需要能够以可视化方式监控请求的进度。
在下个部分中,我将概述有关构建此应用程序的开发方面的问题。稍后,您将看到新帐户业务流程如何使用此应用程序执行。构建应用程序
正如前面所介绍的,您将出于以下两个主要目的设计该应用程序: 提供一个丰富的统一用户界面,以便用户跟踪流程状态并在需要时提供输入(RIA 前端) 提供高级流程监控(BPEL 流程管理器 API 后端)
RIA 前端。RIA 用户界面是应用程序的“外观”;它运行并管理新帐户业务流程。该表示层是使用 Macromedia Flex 技术和 ActionScript 脚本语言构建的。它接受用户输入,并将其传递给 BPEL 流程。它还显示流程的当前状态。
下面的图 1 显示了新帐户业务流程的 RIA 前端。
图 1 新帐户流程的 RIA 前端
下面,我们将了解它的四个主要组件及其重要功能: 工作流栏: 工作流栏 (Workflow Bar) 使用户可以在业务级别查看新帐户流程中的工作流步骤。工作流栏中的每个步骤都在 BPEL 面板中进行了分解。 BPEL 面板:BPEL 面板 (BPEL Panel) 提供了新帐户流程中每个步骤的分解视图。该面板动态读取给定流程实例的流程模型和实例审计线索,以将可用的流程路径与当前实例实际采用的路径相结合。该面板还轮询审计线索以确定哪个操作已经挂起,并以可视化方式描述当前流程此时此刻所处的位置。可以单击以前执行的流程的任何节点以查看它们相应的有效载荷。该功能为操作和合规经理提供了对当前流程的过去、当前以及潜在的未来状态的实时可见性。 工作流表单:工作流表单 (Workflow Forms) 对应于新帐户 BPEL 流程中的工作流步骤。该 Flex“视图系列”与业务流程的审计线索通信,并更改视图系列表单以匹配 BPEL 流程的环境。 区域:区域 (Zones) 提供警报和反馈以帮助工作流和流程活动用户执行他们相应的作业(此处不予介绍)。
这些面板提供了卓越的可用性体验并与 BPEL API 交互。下面,我们将了解利用哪些后端 API 函数执行 RIA 前端。
BPEL 流程管理器 API 后端。BPELService 类简化了 RIA 前端与 BPEL 流程管理器 API 中的流程活动监控功能之间的交互。如图 2 所示以及随后的表中的描述,BPELService 将 BPEL 流程管理器 API 中的五个接口用于流程、流程实例和任务,以实现管理和监控支持工作流的流程活动。
图 2 UI 到 BPELService 功能的映射
接口
 
使 用户能够...
 
IDeliveryService
 
从 BPEL 流程域上部署的流程中调用实例
 
IBPELProcessHandle
 
浏览 BPEL 流程域上部署的 BPEL 流程
 
IInstanceHandle
 
对 活动实例执行操作
 
ITask
 
与 流程域中已经实例化的任务交互
 
IWorklistService 搜索 并完成已经从流程域中实例化的任务
 
您已经了解了 RIA 和 BPELService 的基本组件,下面将介绍它们如何协同提供丰富的最终用户体验。运行新帐户流程
如前所述,首先向客户显示工作流面板中的输入屏幕以输入 SSN。当用户单击 Submit 时,将使用 ActionScript 创建一个“新帐户应用程序”XML 文档,并通过 Flex 的远程对象体系结构将其传递给 BPELService 服务器端 Java 类。(这使 Flex 能够直接与 BPELService 等 Java 对象进行通信。)Java 组件使用 IDeliveryService 接口的实例初始化 BPEL 流程。随后,如下所示,initiateProcess Java 方法将新创建的业务流程实例的实例引用 ID 返回给 Flex 客户端。随后的操作中使用此引用 ID 将相应的业务流程实例作为目标。/*** 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 流程从外部系统检索客户数据并将其显示在工作流面板中。然后,用户验证数据,输入存款额,之后单击 OK。
图 3 验证客户数据和输入存款额
工作流功能基于 BPEL 流程管理器提供的 ITask 和 IWorklistService 接口。RIA 将 IWorklistService 中的任务与完成给定任务所需的工作流屏幕相关联。当发生相应的表单验证时,用户界面对 completeTask 方法进行远程对象调用(如下所示),以将 UI 中捕获的数据发送至 BPEL 流程进行进一步的处理。/*** 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 referenceITask task = getTask(strInstanceReferenceID, strActivityLabel);// set task payloadtask.setAttachment(payload.getDocumentElement());worklist.completeTask(task);} catch (Exception e){e.printStackTrace();strStatus = ERROR_STRING;}return strStatus;}以上代码将任务特定的数据置于 ITask 接口提供的任务附件中。该接口不但将相关的数据发送回 BPEL 流程,而且还将该数据置于 BPEL 流程审计线索中。
下面,我将介绍 RIA 应用程序的另一个重要方面:流程监控。监控流程活动
以上介绍的前两个步骤(初始化流程并启用工作流)中,流程状态通过 IProcessHandle 和 IInstanceHandle API 接口以可视化方式进行了更新。
Oracle BPEL 控制台提供了一个基于 Web 的界面,用于部署、管理和调试 BPEL 流程。它是一个使用 JSP 页面和 servlet(调用 BPEL 流程管理器 API)设计的管理工具。因此,您可以轻松地使用 API 开发您自己的 RIA 控制台,以提供一个业务级别的流程监控界面。
该控制台为特定的流程实例提供了可视反馈,甚至还提供了指向与流程中给定步骤关联的审计线索数据的链接。而 RIA 控制台的主要优势在于它能够执行实际分析与计划分析。该控制台显示流程在其执行过程中可能采取的所有可能的步骤;它还显示在执行过程中实际采用的路径。用户可以单击任何流程节点来检索 BPEL 有效荷载,并在对话框中显示该有效荷载信息。
由于提供了以可视化方式描绘的理想与实际流程路径以及在有效荷载级别进行下钻这一功能,最终用户可以自行分析流程并标识故障点,而无需 IT 人员的参与。图 4 描绘了实际与理想流程路径分析的示例;“实际”路径用绿色标记。
图 4 实际与理想的流程路径分析
下面,我们将介绍如何显示流程以实现此分析,以及如何检索审计线索数据并在 RIA 应用程序中以可视化方式描绘它。显示流程
Flex BPEL 面板组件调用 IProcessHandle 接口来检索整个业务模型的 XML 表示。BPEL 面板使用 IInstanceHandle 接口收集当前实例审计线索的 XML 表示。随后,BPEL 面板将比较并合并这两个 XML 表示,以创建一个可以描述整个模型以及所采用路径的用户界面。
Flex 尤其擅长于通过它的原生 XML 功能执行此类操作。Flex 可以使用 Flex repeater 控件与 ActionScript 的组合轻松地合并两个 XML 表示。组合使用时,它们能够将 XML 转换为数组,然后利用固有的数组处理功能简化 XML 的合并。
由于流程模型 XML 包含所有可能的节点,因此它实际上充当了 BPEL 面板的基础。在流程模型的每个步骤中,都将比较流程模型 ID 与审计线索模型 ID。当流程与审计的 ID 匹配时,该节点的结果将从审计模型复制到流程模型。确定采用哪个路径与查询模型中哪些节点具有与其关联的实例数据一样简单。
以下代码片段显示了 getProcessModel 和 getInstanceAuditTrail 方法。
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;}查看审计线索数据
审计线索数据可用于已经执行的每个流程节点。该功能类似于 BPEL 控制台中相应的功能。通过 Flex 用户界面,可以访问在用户界面中选择的流程节点的详细信息数据(请参见图 5)。
图 5 查看有效载荷信息
可以使用以下 ActionScript 2.0 代码提取审计线索数据:bpelObject.bpelDetails = eventData.event.details.data;Flex 界面通过跟踪审计线索中的活动来轮询当前业务流程状态的更改,从而以可视化方式描绘业务流程中哪个步骤已经挂起。检测到更改时,Flex 应用程序将使用远程调用请求一个新的当前实例跟踪来检索审计线索。随后,使用此实例跟踪在与每个 BPEL 流程用户任务关联的输入屏幕上显示数据。Flex 客户端输入屏幕使用活动关联 ID 与相应的 BPEL 流程步骤关联。结论
业务流程的价值在于它能够提供优秀的流程性能可视化描绘并支持任务集成。从美学角度而言,本文描述的应用程序对于最终用户极具吸引力。
正如我所演示的,RIA 可以提供一个松散耦合的表示层方法来提交新的 SOA 应用程序。通过组合 RIA 前端与 SOA 后端,企业可以降低互联网应用程序的管理和部署成本。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
BPEL 开发人员支持
富互联网应用系统(RIA)一览
Laszlo简介
Oracle 12.2新特性掌上手册 - 第七卷 Big Data and Data Warehousing
一个BPEL的例子
一张图看懂微服务架构路线
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服