天天看點

IBM WMB 使用方法

第一部分; webservice 調用 webservice
           

注意:webservice一般傳來的是字元串(具體情況要看DEBUG中的資料數值)

一般隊列傳過來的xml消息不需要轉化成邏輯樹(ROW格式)

BROKER SCHEMA gen

CREATE COMPUTE MODULE funMain_Request_Response_CALL_HIS_ZZYY

CREATE FUNCTION Main() RETURNS BOOLEAN

BEGIN

–将MsgId指派給CorrelId,Environment邏輯樹主要用于存儲配置資訊

SET Environment.MQMD.CorrelId=InputRoot.MQMD.MsgId;

SET Environment.Encoding = InputRoot.Properties.Encoding;

SET Environment.CodedCharSetId = InputRoot.Properties.CodedCharSetId;

–命名空間在與差別相同的結構

DECLARE ws NAMESPACE ‘http://provide.ws.hosws.greatsoft.net/‘;

DECLARE ns NAMESPACE ‘http://his_zzyy‘;

–獲得message邏輯樹中InputRoot.XMLNSC.ns:funMain.input中的節點的值為傳入隊列或者傳入webservice的多有資料

DECLARE inputString CHAR InputRoot.XMLNSC.ns:funMain.input;

–将輸入string轉成XML邏輯樹才能指定節點指派,不然就是整體一個字元串怎麼指定位元組

–具體順序是 傳進來的是inputString(CHAR)然後轉換成subBitStream(BLOB)最後轉化成myRow(ROW)如下:

DECLARE subBitStream BLOB;

DECLARE myRow ROW;

SET subBitStream = CAST(inputString as BLOB CCSID 1208);

CREATE LASTCHILD OF myRow DOMAIN (‘XMLNSC’)

PARSE(subBitStream,Environment.Encoding,Environment.CodedCharSetId);

–通過Fid來判斷服務并調用相應的webservice

declare who char myRow.XMLNSC.ESBEntry.MessageHeader.Fid;

–并且把調用的webservice所需的字元串指派

DECLARE wholeMsgChar CHAR myRow.XMLNSC.ESBEntry.MsgInfo.Msg;

IF who = ‘MS02004’ THEN

SET OutputRoot.XMLNSC.ws:QueryPatientInfoXML.ws:strxml = wholeMsgChar;

ELSEIF who = ‘MS02005’ THEN

SET OutputRoot.XMLNSC.ws:GetDeptListXML.ws:strxml = wholeMsgChar;

ELSEIF who = ‘MS02006’ THEN

SET OutputRoot.XMLNSC.ws:GetDoctorListXML.ws:strxml = wholeMsgChar;

ELSEIF who = ‘BS10035’ THEN

SET OutputRoot.XMLNSC.ws:ReserveXML.ws:strxml = wholeMsgChar;

ELSEIF who = ‘BS10038’ THEN

SET OutputRoot.XMLNSC.ws:GetTicketListXML.ws:strxml = wholeMsgChar;

ELSEIF who = ‘BS10036’ THEN

SET OutputRoot.XMLNSC.ws:CancelReserveXML.ws:strxml = wholeMsgChar;

ELSEIF who = ‘BS10037’ THEN

SET OutputRoot.XMLNSC.ws:GetReserveHistoryXML.ws:strxml = wholeMsgChar;

END IF;

–結束并輸出到out節點(終端)

PROPAGATE TO TERMINAL ‘out’;

RETURN FALSE;

END;

END MODULE;

繼續閱讀