使用 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 中的值,因此我对命名空间使用了语法 *: 所以我不必声明soapenvcom

的命名空间变量