SoapDataSource
The SoapDataSource
is used to send an XML document as a SOAP message to some web service. When the answer is received, an iterator XPath expression is used to define the elements in the body of the message over which the SoapDataSource
loops. For each of these elements multiple XPath expressions are evaluated to extract the data fields.
Configuration
Name | Type, usage constraints, defaults | Description |
---|---|---|
service | required: paraVal default: none type: SoapConnectionPool | Defines the web service to use. |
body | optional: paraList default: none type: list of strings | Defines the body of the SOAP request which is sent to the web service. The strings of the list are concatenated and parsed into an XML document which is appended to the SOAP message's body. |
soapAction | optional: paraVal default: unused type: string | Specifies the value of the SOAPAction header. |
iterator | optional: paraVal default: //return type: xpath | Defines the nodes in the SOAP body over which the SoapDataSource iterates. The current node in the XPath expression is the SOAP message's body.The default value //return can be used for JAX-WS services which name their return element return . |
data | required: paraMap default: none type: string/xpath | Defines the event's data fields using XPath queries. The current node in the XPath queries is the node the iterator expression points to. |
xpathNamespaces | optional: paraMap default: none type: string/string (uri) | Register namespace prefixes to the specified URIs. Those prefixes are used to parse the XPath expressions. The URIs specified have to match the URIs in the XML document. |
Example
<dataSource type="SoapDataSource">
<dp:paraVal name="service" value="${inst.soapService}" />
<dp:paraVal name="soapAction" value="queryPerson" />
<dp:paraList name="body">
<value><![CDATA[
<msgns:queryPerson xmlns:msgns="http://www.adnovum.ch/nevisdp/testWs">
<person>
<email>*@adnovum.ch</email>
</person>
</msgns:queryPerson>]]>
</value>
</dp:paraList>
<dp:paraVal name="iterator" value="//return" />
<dp:paraMap name="data">
<value name="id" value="./id/text()" />
<value name="firstname" value="./firstName/text()" />
<value name="lastname" value="./lastName/text()" />
<value name="email" value="./email/text()" />
</dp:paraMap>
</dataSource>
With namespaces for XPath expressions
<dataSource type="SoapDataSource">
<dp:paraVal name="service" value="${inst.soapService}" />
<dp:paraVal name="soapAction" value="queryPerson" />
<dp:paraList name="body">
<value><![CDATA[
<msgns:queryPerson xmlns:msgns="http://www.adnovum.ch/nevisdp/test" />
]]>
</value>
</dp:paraList>
<dp:paraMap name="xpathNamespaces">
<value name="ns" value="http://some/uri/to/something" />
</dp:paraMap>
<dp:paraVal name="iterator" value="//ns:loginId" />
<dp:paraMap name="data">
<value name="id" value="./text()" />
</dp:paraMap>
</dataSource>