In this example, create a simple iFlow in HCI, expect an input with <Name> variable, then perform mapping step, and output “Hello <Name>” as result.
This is the test run using SOAPUI:
The URL consist of Runtime URL provided by your HCI tenant, and “/cxf/exp_test” is endpoint suffix that defined in SOAP sender channel.
I’m using “User Role” authorization in iFlow, so need to specify the username and password in SOAPUI.
Overview objects needed, as shown at eclipse project explorer:
iFlow EXP_TEST:
1) Sender send to Integration Process using SOAP adapter
2) Mapping MM_SayHello map to target structure and payload.
3) There are no Receiver defined. By default HCI processing when reach “End” step, will return all the way back to initial Sender/caller. In this case is simulate using SOAPUI tool, so SOAPUI will see the result.
Need to create WSDL file with embedded xml schema:
Right-click on project node –> New –> Other, then type WSDL to search and choose WSDL file. Create WSDL named “Greeting.wsdl” like below:
The Source view of WSDL:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.test.com/Greeting/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Greeting" targetNamespace="http://www.test.com/Greeting/">
<wsdl:types>
<xsd:schema targetNamespace="http://www.test.com/Greeting/">
<xsd:element name="SayHello">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="root" maxOccurs="1" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="in" maxOccurs="1" minOccurs="0" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SayHelloResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="root" maxOccurs="1" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="out" maxOccurs="1" minOccurs="0" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="SayHelloRequest">
<wsdl:part element="tns:SayHello" name="parameters"/>
</wsdl:message>
<wsdl:message name="SayHelloResponse">
<wsdl:part element="tns:SayHelloResponse" name="parameters"/>
</wsdl:message>
<wsdl:portType name="Greeting">
<wsdl:operation name="SayHello">
<wsdl:input message="tns:SayHelloRequest"/>
<wsdl:output message="tns:SayHelloResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="GreetingSOAP" type="tns:Greeting">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="SayHello">
<soap:operation soapAction="http://www.test.com/Greeting/SayHello"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="Greeting">
<wsdl:port binding="tns:GreetingSOAP" name="GreetingSOAP">
<soap:address location="http://www.example.org/"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Sender SOAP channel:
Adapter Specific tab:
Address: Use some meaningful word to represent part of url endpoint, for external to call to this HCI iflow.
Service Definition: Choose WSDL, then “Browse..” to select Greeting.wsdl that just created.
Authorization: Use “User Role”, need specific username and password then test run in SOAPUI. Other option is use certificate.
Mapping step MM_SayHello:
Create and choose the Source and Target element from the Greeting.wsdl
At Mapping definition step, map accordingly like how you would map if using SAP PI. However, still do not have “Display Queue” feature like in SAP PI. Lack of display queue will impose more difficulty to developer when need to troubleshoot complex mapping. Have to live with it or perform mapping using other alternative like XSLT or flexible scripting-based mapping using groovy script (comparable to Java Mapping in PI).
Finally, monitor the message processed in HCI:
Keep on learning!
I am creating a scenario, with multiple i/p records in SOAP 1.X sender side. Though I am only able to get response for 6 multiple records at a time. Beyond that flow fails.