SSE 网络频繁使用中央 Web 服务信息库;合作伙伴使用 Web 服务检查语言 (WSIL) 发现可用服务。服务提供商可以通过选择相应的 WSDL 文件重用现有的 Web 服务(由网络中的其他提供商提供)。可以在 Oracle BPEL Designer 工具配置文件 UDDIProviderList.xml 中添加 WS-Inspection URL http://services.eoportal.org/inspection.wsil 来完成此任务,如下所示。
<provider>
<description>ESA SSE Portal</description>
<type>wsil</type>
<inquiryURL>
http://services.eoportal.org/inspection.wsil
</inquiryURL>
</provider>
位于服务提供商处的 Oracle BPEL Designer 连接到 SSE 服务器并使用 WS-Inspection 协议发现可用服务及其 WSDL 文件。连接到 WS-Inspection 服务器后,将显示所有可用服务列表,如图 2 中所示。
图 2 可用 SSE 服务列表
对于每个服务,将提供相应的 WSDL 文件和简短的文字描述。可以通过选择 WSDL 文件为该服务添加一个合作伙伴链接。构建流程流后,可以使用 BPEL 控制台将其部署在 SSE 门户上。(在它的下个版本中,SSE 将实现 UDDI 注册表与 Oracle BPEL 的集成。注册新服务时,还将在此 UDDI 注册表中自动注册该服务。该集成将简化使用外部工具的服务发现,目前仅当这些工具支持 WS-Inspection 时才能发现服务。)
尽管您不必建立服务信息库即可构建 SOA 并获得它的众多好处,但从长远来看,信息库是不可或缺的。如果服务的作用域只是一个项目,则架构师不用信息库也能处理。但大多数企业都拥有各种服务和合作伙伴,并且这些服务和合作伙伴的大部分都在不断变化。
提供自助式监视。在多方参与业务流程的协作网络中,对业务流程执行情况的监视非常关键,因此可以将围绕业务流程的关键性能指标与服务级协议相联系。(例如,加入网络的关键要求之一可能是确认两小时内的报价请求。)监视业务流程可以更好地获知特定业务流程实例执行的时间、出现延迟的原因以及如何为未来事务修复此问题。
应向合作伙伴和最终用户提供该级别的诊断。通过创建自助式环境,合作伙伴和最终用户可以跟踪他们的单个流程,从而减轻中央监视框架检测到的问题。
可以使用 Oracle BPEL 控制台监视和调试业务流程(参见图 3)。ESA 和服务提供商利用 BPEL 控制台跟踪正在运行和已经完成的 BPEL 流程实例数量、流程实例的平均持续时间(从而细分流程中消耗的时间)以及文本格式的流程实例审计线索,从而使合作伙伴可以查看中间结果。
图 3 使用 Oracle BPEL 控制台监视业务流程
此外,订购了特定服务的最终用户可以跟踪其订单的状态。可以使用 Oracle BPEL 流程管理器 API 在 BPEL 控制台的外部显示该信息。建议服务提供商在他们的 BPEL 流程中使用有意义的作用域名称;在运行时,门户使用 IInstanceHandle.getStatus() API 提取当前 BPEL“作用域”的名称向最终用户显示该进度的信息。
作用域 按层次结构组织,一个复杂的业务流程可以分为几个作用域。它们为活动提供了行为上下文。通过在 BPEL 流程中使用有意义的作用域名称,合作伙伴可以跟踪“短期”和“长期”业务流程的状态。
例如以下 getOrderSubstatus 方法的实现。该方法使 ESS 合作伙伴可以使用在 bpel 文件中执行的作用域的名称获取 BPEL 流程实例的当前状态。
* call the Oracle BPEL API to get current status of the workflow instance, corresponding to
* the ordered supplied at the input
* @param ordered The order identified
* @param workflowId The workflow name (or Id) that is processing the order stage.
* Normally, there are two stages of an order:send(process)rfq and send(process) order
* @param domain The domain that the order workflow belongs to
* @param password The password used to login to the workflow domain
* @return the current status of the workflow instance – particularly, it is the name of the current
* active scope in the workflow BPEL file.
* @throws RemoteException
* @throws WorkflowException
*/
public String getOrderSubstatus(String ordered, String workflowId, String domain, String password)
throws RemoteException, WorkflowException
{
if(ml.isDebugEnabled()) ml.debug("Enter getOrderSubstatus(ordered = " + ordered
+ ", workflowId = " + workflowId + ", domain = " + domain + ", password = " + password);
String status = "";
try {
Locator locator = new Locator(domain, password);
IinstanceHandle instance = locator.lookupInstance(ordered + "_" + workflowId);
if( instance.isComplete() ) status = "Completed";
else status = instance.getStatus();
return status;
} catch (com.oracle.bpel.client.ServerException e) {
// TODO Auto-generated catch block
ml.error(e.getMessage());
if(ml.isDebugEnabled()) e.printStackTrace();
throw new WorkflowException("1016", e.getCause());
}
}
结论
ESA 在构建其整个协作网络时始终没忘其灵活性。接口关系的灵活定义简化了网络的采用并促进了网络的发展。BPEL 域的采用提供一个独立的工作区,从而为服务提供商提供了广泛的灵活性;服务提供商可以修改他们的业务流程且不会影响网络的稳定性。BPEL 作用域已经使 ESA 可以从细节上跟踪即时流程的状态。该网络还可代表服务供应提供商自动生成 BPEL 流程流。所有这些因素渐渐地使该网络更易于合作伙伴使用,并最大限度地降低了合作伙伴的前期投资。
但还有一些网络设计领域本文并未涉及,如分布式事务管理、安全性以及贸易合作伙伴管理。随着 B2B 网络规模的扩大,BPEL 可以在编排专用流程方面处于领先地位。例如,Oracle 集成 B2B 产品(可以与 Oracle BPEL 流程管理器交互操作)解决了公共流程编排、握手协议支持(RosettaNet、ebXML、EDI、HIPAA)、消息格式处理(MIME、SMIME、AS2、XMLDSig)和贸易合作伙伴管理(认可、服务级协议、合作伙伴协议)。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
SAP收购CallidusCloud 与Salesforce竞争
一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]
-
API设计如龙生九子 各不相同
IT咨询管理公司CA Technologies对API产业做了个问卷调查,问卷内容涉及API设计风格以及管理部署的新动向。调查结果表明,JSON与XML可谓两分天下。
-
保险公司如何能从BPEL中获益
对于保险业整合不同系统是一件寻常的工作。但保险公司经常会面临监管条例改变和应对不同的顾客需求。为了解决这些系统问题,软件专家正在使用一种强大的工具——BPEL。
-
从头开始实现领域驱动设计
领域描述业务;它是驱动企业的概念和逻辑的集合。如果遵循领域驱动设计(DDD)这一本质,那么领域就是应用程序中最重要的组成部分。