1.声明变量,设置变量值(解析XML格式消息,IBM推荐使用XMLNSC,而不推荐使用XML,如果对传入的消息不知道是何种格式,则要用BLOB进行解析,最大限度进行容错处理)。
DECLARE JMS_DATE CHAR;
SET JMS_DATE=CURRENT_TIMESTAMP;
SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Version = DATASPEC_TIPS_VER;
2.引用其他包下的函数(注:其他包里面的变量,即使声明为shared,也无法被其他esql引用(即咨询过IBM专家,但是试验后不可以),如果想引用,可以定义成函数,把相应的变量作为返回值,传递到相应的esql文件中,即可达到引用的目的)
SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Encoding = TIPS_XML_ENCODING();
ESQL文件首部必须使用PATH关键字来指出引用的文件:
path esql.common,esql.action.ctais.g1;(如esql.common中common为一个文件夹,则引用其下面的所有esql文件)
3.引用传入消息流中参数变量
DECLARE ENVIROMENTXMLT msg REFERENCE TO
Enviroment.Variables.XMLTmsg.XMLNSC; --技术体信息
DECLARE ENVIROMENTXMLDmsg REFERENCE TO
Enviroment.Variables.XMLDmsg.XMLNSC; --业务体信息
4.删除环境变量中的某一节点的解析节点
DELETE FIELD Enviroment.Variables.XMLTmsg;
DELETE FIELD Enviroment.Variables.XMLDmsg;
5.消息流中,同时指定多个目的队列的方式(看似同时指定并发送,但是其运行时串行的,而且无法确定其顺序,但是可保证其全部发送)
方法一:
SET OutputLocalEnviroment.Destination.MQDestinationList.DestinationDate[1].queueName = 指定队列名1;
SET OutputLocalEnviroment.Destination.MQDestinationList.DestinationDate[2].queueName = 指定队列名2;
SET OutputLocalEnviroment.Destination.MQDestinationList.DestinationDate[3].queueName = 指定队列名3;
(注:一定要把返回值设置为true,否则可能只发送第一个之后,后续无法指定并发送消息)
方法二:
IF EXISTS(OutputRoot.XMLNSC.MSG.MsgHeader[]) THEN --------进行逻辑判断
PROPAGATE TO TERMINAL ‘out1‘;
PROPAGATE TO TERMINAL ‘out2‘;
ELSE
PROPAGATE TO TERMINAL ‘out3‘;
PROPAGATE TO TERMINAL ‘out4‘;
RETURN FALSE;
(注:一定要把返回值设置为FALSE,否则可能只发送第一个之后,后续无法指定并发送消息)