使用 ESQL 丰富 soap 消息
Enrich soap message with ESQL
我正在创建一个简单的流,它通过 SOAP 接收消息,在 IIB 中,我使用 ESQL 处理消息。
这是我的 SOAP 消息:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://ComponentesTI">
<soapenv:Header/>
<soapenv:Body>
<com:PushMessageRequest>
<Message>
<SerializedContent>?</SerializedContent>
<HTTPAddress>?</HTTPAddress>
</Message>
<Identification>?</Identification>
</com:PushMessageRequest>
</soapenv:Body>
</soapenv:Envelope>
我需要通过使用 ESQL(使用 GUID)更改标识字段来复制此消息
类似的东西:
CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
DECLARE statement REFERENCE TO OutputRoot.XMLNSC;
DECLARE statement2 REFERENCE TO InputRoot.XMLNSC;
SET statement = statement2;
SET statement.PushMessageRequest.Identification = UUIDASCHAR;
您忘记在 ESQL 语法中使用 XML 命名空间。
CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
DECLARE statement REFERENCE TO OutputRoot.XMLNSC;
DECLARE statement2 REFERENCE TO InputRoot.XMLNSC;
SET statement = statement2;
DECLARE com NAMESPACE 'http://ComponentesTI';
SET statement.com:PushMessageRequest.Identification = UUIDASCHAR;
下面的代码片段考虑了 SOAP 信封。
复制所有内容,包括 Properties 文件夹和任何其他 Header 文件夹,然后更改标识字段。
SET OutputRoot = InputRoot;
SET OutputRoot.XMLNSC.*:Envelope.*:Body.*:PushMessageRequest.Message.Identification = UUIDASCHAR;
使用其他代码处理 Properties 文件夹和其他 headers 根据需要创建新的 XMLNSC 聚合。
CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
SET OutputRoot.XMLNSC.*:Envelope.*:Body.*:PushMessageRequest.Message.Identification = UUIDASCHAR;
另外,根据您使用的是 HTTPInput 还是 SOAPInput 节点,顶级聚合可能是 SOAP 而不是 XMLNSC。
最后,由于我们没有更改任何命名空间,而是覆盖了 Identification 中的值,因此我对命名空间使用了语法 *: 所以我不必声明soapenv 和 com
的命名空间变量
我正在创建一个简单的流,它通过 SOAP 接收消息,在 IIB 中,我使用 ESQL 处理消息。
这是我的 SOAP 消息:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://ComponentesTI">
<soapenv:Header/>
<soapenv:Body>
<com:PushMessageRequest>
<Message>
<SerializedContent>?</SerializedContent>
<HTTPAddress>?</HTTPAddress>
</Message>
<Identification>?</Identification>
</com:PushMessageRequest>
</soapenv:Body>
</soapenv:Envelope>
我需要通过使用 ESQL(使用 GUID)更改标识字段来复制此消息
类似的东西:
CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
DECLARE statement REFERENCE TO OutputRoot.XMLNSC;
DECLARE statement2 REFERENCE TO InputRoot.XMLNSC;
SET statement = statement2;
SET statement.PushMessageRequest.Identification = UUIDASCHAR;
您忘记在 ESQL 语法中使用 XML 命名空间。
CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
DECLARE statement REFERENCE TO OutputRoot.XMLNSC;
DECLARE statement2 REFERENCE TO InputRoot.XMLNSC;
SET statement = statement2;
DECLARE com NAMESPACE 'http://ComponentesTI';
SET statement.com:PushMessageRequest.Identification = UUIDASCHAR;
下面的代码片段考虑了 SOAP 信封。
复制所有内容,包括 Properties 文件夹和任何其他 Header 文件夹,然后更改标识字段。
SET OutputRoot = InputRoot;
SET OutputRoot.XMLNSC.*:Envelope.*:Body.*:PushMessageRequest.Message.Identification = UUIDASCHAR;
使用其他代码处理 Properties 文件夹和其他 headers 根据需要创建新的 XMLNSC 聚合。
CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
SET OutputRoot.XMLNSC.*:Envelope.*:Body.*:PushMessageRequest.Message.Identification = UUIDASCHAR;
另外,根据您使用的是 HTTPInput 还是 SOAPInput 节点,顶级聚合可能是 SOAP 而不是 XMLNSC。
最后,由于我们没有更改任何命名空间,而是覆盖了 Identification 中的值,因此我对命名空间使用了语法 *: 所以我不必声明soapenv 和 com
的命名空间变量