How to use enrich with foreach/iterate to modify SOAP request body?
I want to add multiple tags to SOAP request body from JSON input array.
It should be added under the ActionProperties tag, so I tried to use the enrich mediator with foreach as follows :
<payloadFactory media-type="xml">
<format>
<soapenv:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<Security xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext">
<hd:UsernameToken xmlns:hd="http://schemas.xmlsoap.org/ws/2002/12/secext">
<hd:Username>$1</hd:Username>
<hd:Password>$2</hd:Password>
</hd:UsernameToken>
</Security>
</soapenv:Header>
<soapenv:Body>
<p857:ExecuteChangesRequest refresh="1" xmlns:p857="http://www.filenet.com/ns/fnce/2006/11/ws/schema">
<p857:ChangeRequest id="1" updateSequenceNumber="0">
<p857:TargetSpecification classId="ObjectStore" objectId="$3" serializationDuplicate="0"/>
<p857:Action autoUniqueContainmentName="1" classId="$4" defineSecurityParentage="0" xsi:type="p857:CreateAction"/>
<p857:Action autoClassify="0" checkinMinorVersion="0" xsi:type="p857:CheckinAction"/>
<p857:ActionProperties>
<p857:Property propertyId="DocumentTitle" settable="0" xsi:type="p857:SingletonString">
<p857:Value>$5</p857:Value>
</p857:Property>
<p857:Property propertyId="ContentElements" settable="0" xsi:type="p857:ListOfObject">
<p857:Value accessAllowed="0" classId="ContentTransfer" dependentAction="Insert" newIndex="0" originalIndex="0" serializationDuplicate="0" updateSequenceNumber="0">
<p857:Property propertyId="ContentType" settable="0" xsi:type="p857:SingletonString">
<p857:Value>$7</p857:Value>
</p857:Property>
<p857:Property propertyId="RetrievalName" settable="0" xsi:type="p857:SingletonString">
<p857:Value>$5</p857:Value>
</p857:Property>
<p857:Property propertyId="Content" settable="0" xsi:type="p857:ContentData">
<p857:Value xsi:type="p857:InlineContent">
<p857:Binary>$6</p857:Binary>
</p857:Value>
</p857:Property>
</p857:Value>
</p857:Property>
</p857:ActionProperties>
<p857:RefreshFilter levelDependents="0" maxElements="0" maxRecursion="0">
<p857:ExcludeProperties>DateCreated</p857:ExcludeProperties>
<p857:ExcludeProperties>DateLastModified</p857:ExcludeProperties>
</p857:RefreshFilter>
</p857:ChangeRequest>
</p857:ExecuteChangesRequest>
</soapenv:Body>
</soapenv:Envelope>
</format>
<args>
<arg evaluator="xml" expression="get-property('Username')"/>
<arg evaluator="xml" expression="get-property('Password')"/>
<arg evaluator="xml" expression="get-property('ObjectStore')"/>
<arg evaluator="xml" expression="get-property('DocumentClass')"/>
<arg evaluator="xml" expression="get-property('FileName')"/>
<arg evaluator="xml" expression="get-property('FileData')"/>
<arg evaluator="xml" expression="get-property('ContentType')"/>
</args>
</payloadFactory>
<foreach expression="//propertiesList">
<target>
<sequence>
<enrich>
<source clone="true" type="inline">
<p857:Property propertyId="$1" settable="0"
xmlns:p857="http://www.filenet.com/ns/fnce/2006/11/ws/schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="p857:SingletonString">
<p857:Value>$2</p857:Value>
</p857:Property>
<args>
<arg evaluator="xml" expression="//name"/>
<arg evaluator="xml" expression="//value"/>
</args>
</source>
<target action="child" xmlns:p857="http://www.filenet.com/ns/fnce/2006/11/ws/schema"
xpath="//p857:ExecuteChangesRequest/p857:ChangeRequest/p857:ActionProperties"/>
</enrich>
</sequence>
</target>
</foreach>
but nothing gets inserted into the SOAP request. While if I try to enrich a single tag it works fine as follows:
<enrich>
<source clone="true" type="inline">
<p857:Property propertyId="isArchived" settable="0"
xmlns:p857="http://www.filenet.com/ns/fnce/2006/11/ws/schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="p857:SingletonString">
<p857:Value>1</p857:Value>
</p857:Property>
</source>
<target action="child" xmlns:p857="http://www.filenet.com/ns/fnce/2006/11/ws/schema"
xpath="//p857:ExecuteChangesRequest/p857:ChangeRequest/p857:ActionProperties"/>
</enrich>
How can I accomplish that?
Comments
Post a Comment