一些企业将其 70% 的 IT 预算花在了维护和管理当前 IT 功能以及操作上。但矛盾的是,对于多数使用面向服务体系结构 (SOA) 的公司而言,管理 Web 服务的性能和可用性并非首要之事。因此,随着企业采用 Web 服务和 BPEL 来构建 SOA 基础架构,设计新的策略来降低应用程序管理成本变得愈加势在必行。
因为通常会将多个业务流程部署至生产环境,所以这对于 BPEL 实施而言尤其重要。随着生产环境中部署了越来越多的流程,有效管理变得日趋重要。每个已执行完毕的 BPEL 流程(无论成功与否)都存储在数据库中,在流程流的不同步骤间进行交换的每条 XML 消息也是如此。正如您可能预料到的,该流程将导致数据库大小呈几何级增长,进而导致出现性能瓶颈。
由于这些原因,在 BPEL 生产环境中,最为重要的是要能够
在不影响生产系统稳定性的情况下,存档已完成 BPEL 流程的信息
删除从数据库成功交付和解析的所有 XML 消息
删除陈旧的实例
重新运行失败的流程
在 BPEL 简明手册的这一部分中,您将了解到 BPEL 流程管理器的 API 和 Dehydration Store 是如何实行这些功能,以及如何存档和删除已完成 BPEL 流程实例的信息。您还将学习如何使用 PL/SQL 和 EJB 删除陈旧的实例、完成调用以及回调 XML 消息。最后,将介绍如何通过 BPELTest 实用程序返回失败的流程实例。
BPEL 流程管理器 API 和 Dehydration Store
Oracle BPEL 流程管理器控制台为管理、调试部署至 BPEL 服务器的流程提供了一个基于 Web 的友好界面。但是,在生产环境中,管理员需要对管理任务具有强有力的控制。通过针对 BPEL Dehydration Store 数据库的 PL/SQL 查询或 BPEL API,可以将这些管理任务中的多数进行自动化。但在创建操作项之前,了解 Dehydration Store 和 BPEL 流程管理器 API 的基础概念至关重要。
Dehydration Store 数据库用于存储流程状态数据,尤其是异步 BPEL 流程的数据。以下简要介绍了一些非常重要的表。
表 内容
CUBE_INSTANCE 实例元数据信息(创建日期、当前状态、流程 id)
CUBE_SCOPE 实例的范围数据
AUDIT_TRAIL 实例的审计跟踪信息。该信息可通过 BPEL 控制台查看
AUDIT_DETAILS 流程实例的详细审计信息
DLV_MESSAGE 回调消息元数据
DLV_MESSAGE_BIN 回调消息的有效负载
INVOKE_MESSAGE 调用消息元数据
INVOKE_MESSAGE_BIN 调用消息的有效负载
DLV_SUBSCRIPTION 实例的交付订阅
TASK 为实例创建的任务(即标题、任务接受人、状态、有效期)
表 1:BPEL Dehydration Store 中的重要表
数据库模式位于 $ORABPEL$integrationorabpelsystemdatabasescripts 目录下的 DDL 脚本 domain_oracle.dll 中。正确了解该模式后,管理员无需 BPEL 控制台就可直接针对该存储编写 SQL 查询。
除了此种 SQL 方法,管理员还可利用 BPEL 流程管理器 API。该 API 提供了一个详尽的类集,可用于在各种状态中查找、存档、删除实例,跨不同的域删除回调/调用消息,或查询特定域、流程或实例的状态。(API 文档位于 $ORABPEL$integrationorabpeldocsapidocsindex.html 中。)下表概述了一些相关性最强的类/接口以及相应的方法。
类/接口 方法
类 WhereConditionHelper 提供诸如 whereInstancesClosed()、whereInstancesStale() 和 whereInstancesOpen() 之类的方法,用于构造搜索相应实例的 where子句。
接口 IBPELDomainHandle 允许开发人员在处于运行中的 BPEL 流程域上执行操作。提供诸如archiveAllInstances ()、 deleteAllInstances()、deleteInstancesByProcessId()、deployProcess()、undeployPorcess()、 deleteAllHandledCallback() 以及 deleteAllHandledInvoke() 等方法。
接口 IinstanceHandle 允许用户在活动的实例上执行操作。提供诸如 isStale()、getStategetModifyDate() 以及 delete等方法。
类 Locator 允许用户搜索已在 Orabpel 流程域内部署并实例化的流程、实例以及活动。提供诸如 listInstances() 和 listActivities() 等方法,并可接受 where 子句作为参数。
表 2:用于执行管理任务的重要类
接下来,您将学习如何执行一些最重要的管理任务。
存档已完成的实例
如前所述,所有执行成功的流程实例均存储在 Dehydration Store 中。现在,在实例完成后,一个 BPEL 实例保存在了两个表中:cube_instance 和 cube_scope。前者存储实例头信息:域、创建日期、状态(已完成、运行中、陈旧、已取消)、优先级、标题等等。后者存储实例的状态(变量值等)。默认情况下,使用这两个表存储已完成的实例。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
SAP收购CallidusCloud 与Salesforce竞争
一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]
-
事件驱动框架和SOA在空军的应用
空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。
-
揭秘New Relic APM技术细节
New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响
-
仅凭SOA和云无法解决业务数据管理风险问题
SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。