在WebSphere和DB2中使用标准数据格式
2010-09-27 08:16:33 来源:WEB开发网XSLTranformation1 的目标是将 MedicationSPL 接口(中介模块向其客户端公开的接口)转换为中介接口(即内部 Web 服务的接口)。在转换中使用了一个常规 XSLT 样式表。在请求路径中,使用 MedicationSPL 中提供的名称调用内部服务来获得 UUID。返回的值为 UUID。然后将 UUID(为进行演示已对其进行硬编码)插入到要在响应路径中使用的服务消息对象,以便调用 HL7 SPL 数据服务。
图 5. 中介流组件的响应路径
中介流组件的响应路径如图 5 所示。此流程的目标是使用从内部服务返回的数据形成 XQuery 并调用 HL7 服务(使用自定义代码中介元素执行此操作)。此自定义中介元素的目的是获取内部 Web 服务(存储于 SMO 中)返回的值,使用该值构建 XQuery,并将其传递到 HL7 Web 服务。清单 3 描述了自定义中介元素的实现。
清单 3. 自定义中介实现
public DataObject mediate(DataObject input1) {
System.out.println("In Response Mediation");
System.out.println("invoke service and extract response payload");
ServiceManager serviceManager = ServiceManager.INSTANCE;
BOFactory bofactory = (BOFactory) serviceManager
.locateService("com/ibm/websphere/bo/BOFactory");
System.out.println("Before Locating Service After Getting Object");
//(1) Building XPath while extracting the payload from the
// incoming SMO input1.getString("body/GetStringResponse/GetStringReturn")
String query = "XQUERY declare default element namespace "urn:hl7-org:v3";for
$doc in db2-fn:xmlcolumn('DB2INST1.HL7.DOCUMENT')/PORP_IN000001
where $doc/receiver/device/id/@root=""
+ input1.getString("body/GetStringResponse/GetStringReturn")
+ "" return $doc";
//(2) Creating Elements for HL7 Service and setting it's payload to the Built Xquery
DataObject runXquery = bofactory.createByElement(
"http://schemas.ibm.com/hl7/hl7/hl7.dadx", "runxquery");
runXquery.setString("query", query);
System.out.println("After Setting Object");
System.out.println("invoke HL7 service ");
//(3) invoking the webservice by locating the service providing the operation name
// and passing in the newly created DataObject as the input Parameters
Service myService = (Service) ServiceManager.INSTANCE
.locateService("theSoapPortTypePartner");
DataObject Hl7Response = (DataObject) myService.invoke("runxquery",
runXquery);
System.out.println("Getting returned from HL7");
DataObject Hl7ResponseOutPut = Hl7Response.getDataObject("queryresult");
// (4)Adjusting Return Values for Polocies External
DataObject message = bofactory.createByMessage(
"http://MedicationSPLModule/MedicationSPL",
"getSPLInfoResponseMsg");
DataObject myRes = bofactory.createByElement(
"http://MedicationSPLModule/MedicationSPL",
"getSPLInfoResponse");
myRes.setDataObject("SPLDocument", hl7ResponseOutPut);
System.out.println("2");
System.out.println(message);
message.setDataObject("getSPLInfoResult", myRes);
input1.setDataObject("body", message);
System.out.println("leaving Response");
return input1;
}
编缉推荐阅读以下文章
- 使用 WebSphere Process Server 修复流程
- 设置并置 WebSphere Application Server 负载均衡器和内容主机
- 利用 WebSphere Application Server 6.1 构建 SIP 集群应用环境及其性能调优
- WebSphere Process Server V6.0.2 集群,第 1 部分:了解拓扑
- 如何实现WebSphere Application Server 6集群环境下的定时服务
- 迁移集群环境中的 WebSphere Commerce
- WebSphere Process Server V6.0.2 集群,第 2 部分:安装和配置 WebSphere Process Server 集群
- Websphere MQ v6集群的负载均衡新功能
- 将 JUnit 插件集成到 WebSphere Studio 中
- 使用 IBM WebSphere MQ JMS 提供程序
更多精彩
赞助商链接