第一部分; 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;