--超時需要特殊處理
--SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = 'NO';
--獲取最後一個RecoverableException
DECLARE ref REFERENCE TO InputExceptionList.*[1];
DECLARE tmp REFERENCE TO InputExceptionList.*[1];
DECLARE errMsg CHARACTER 'ExceptionList {';
DECLARE I INTEGER;
WHILE ENDSWITH(FIELDNAME(ref),'Exception') AND ENDSWITH(FIELDNAME(tmp),'Exception') DO
SET errMsg = errMsg || '[Catalog=' || COALESCE(ref.Catalog,'') || ',Label=' || COALESCE(ref.Label,'') || ',Number=' || CAST(ref.Number AS CHARACTER) || ',Text=' || COALESCE(ref.Text,'');
FOR errorText AS ref.Insert[] DO
IF LENGTH(errorText.Text) >= 256 THEN
SET errMsg = errMsg || ',Insert=' || SUBSTRING(errorText.Text FROM 1 FOR 256);
ELSE
SET errMsg = errMsg || ',Insert=' || errorText.Text;
END IF;
END FOR;
SET errMsg = errMsg || ']';
MOVE tmp LASTCHILD;
IF ENDSWITH(FIELDNAME(tmp),'Exception') THEN
SET ref = tmp;
END IF;
END WHILE;
SET errMsg = errMsg || '}';
If ref.Number IS NULL THEN
SET Environment.Variables.RequestHeader.RetCode = '9999';
SET Environment.Variables.RequestHeader.RetMsg = 'Unknow Exception';
ELSE
SET Environment.Variables.RequestHeader.RetCode = CAST(ref.Number AS CHARACTER);
SET Environment.Variables.RequestHeader.RetMsg = ref.Text;
END IF;
SET Environment.Variables.RequestHeader.ExceptionName = FIELDNAME(ref);
SET Environment.Variables.RequestHeader.errClass = ref.Catalog;
SET Environment.Variables.RequestHeader.Desc = errMsg;
/**
DECLARE ref_new REFERENCE TO InputExceptionList.*[1];
WHILE FIELDNAME(ref) = 'RecoverableException' and POSITION('Exception' IN FIELDNAME(ref_new)) > 0 DO
--MOVE ref LASTCHILD;
MOVE ref_new LASTCHILD;
IF POSITION('Exception' IN FIELDNAME(ref_new)) > 0 THEN
SET ref = ref_new;
END IF;
END WHILE;
DECLARE errMsg CHAR FIELDNAME(ref.*[<]);
SET errMsg = ref.{errMsg}.*[<].Text;
IF errMsg IS NULL THEN
SET errMsg = ref.[<].Text;
END IF;
--設置異常狀態
SET Environment.Variables.RequestHeader.RetCode = CAST(ref.Number AS CHARACTER);
SET Environment.Variables.RequestHeader.RetMsg = trim(ref.Text)||','||trim(errMsg);
If ref.Number = NULL then
SET Environment.Variables.RequestHeader.RetCode = '9999';
END IF;
*/
RETURN TRUE;
END;
CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER;
SET J = CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
Message Flow for ESB 10
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Message Flow for ESB 5
--附屬產品 FOR prod AS source.siebel:OrderItem[] DO SET J=J+1; SET u
aa815672797
2020-06-15 18:37:17
Message Flow for ESB 9
>>>>>>>>>>Exception_receiver--CreateErrInfo/** 異常樣例RecoverableException Fil
aa815672797
2020-06-15 18:37:17
Message Flow for ESB 3
>>>>>>>CRM_Order_Sync--Order Sync Routing LabelNameCREATE DATABASE MODULE C
aa815672797
2020-06-15 18:37:17
Message Flow for ESB 4
aa815672797
2020-02-25 01:11:11
Message Flow for ESB 11
aa815672797
2020-02-25 01:11:01
Message Flow for ESB 7
aa815672797
2020-02-25 01:11:01
Message Flow for ESB 12
aa815672797
2020-02-25 01:11:01
Message Flow for ESB 1
aa815672797
2020-02-25 01:11:01
Message Flow for ESB 2
aa815672797
2020-02-25 01:11:01