Passing repetitive elements from SOAP request to ISD stage
Posted: Thu Nov 28, 2013 12:49 pm
Hi All,
In My current project we are calling the web service methods from Datastage which are implemented in JAVA.But before calling the webservice method i need to standardize the data which is coming as part of the SOAP request and then need to pass the standardized data to the web service method to load the data to tables.More over i need to implement this entire process in Real time. So we have used service director to make the job run on 24 X 7 basis.
My job structure is as follows:
ISD Input Stage(To read values in the request)----- > Standardize stage(Applying standardize rules)-----> trnasformr(filtering out necessary columns) ---- > xml output stage(Converting back to XML to call Web service method) ----- > webservice transformer(to call the java web methods) ----- > ISD Output stage(Sending response back)
I added this job to the service director and taken out the WSDL. and the WSDL is as follows.I used the SOAP over HTTP service while adding the job in Service Director.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://PIMServ1.PIM1.isd.ibm.com/soapoverhttp/">
<soapenv:Header/>
<soapenv:Body>
<soap:Dept>
<deptID>?</deptID>
<employeeID>?</employeeID>
<employeeStatus>?</employeeStatus>
<employeeName>?</employeeName>
<identifier>?</identifier>
<telnumber>?</telnumber>
<email>?</email>
</soap:Dept>
</soapenv:Body>
</soapenv:Envelope>
If i pass the data with out repetitive elements then the job is working fine. But as per my requirement a single employee may have multiple phone numbers and email ids. I need to design a job in such a way that it should handle multiple emails and phone numbers as below.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://PIMServ1.PIM1.isd.ibm.com/soapoverhttp/">
<soapenv:Header/>
<soapenv:Body>
<soap:Dept>
<deptID>?</deptID>
<employeeID>?</employeeID>
<employeeStatus>?</employeeStatus>
<employeeName>?</employeeName>
<identifier>?</identifier>
<telnumber>?</telnumber>
<telnumber>?</telnumber>
<telnumber>?</telnumber>
<email>?</email>
<email>?</email>
<email>?</email>
</soap:Dept>
</soapenv:Body>
</soapenv:Envelope>
I tried with accept array option which is available in service director while adding the job but it is not working properly to my requirement. if i pass 3 email ids as part of the request,ISD stage is taking the last entered email id and preparing the single record with all the other columns to process. but in my case if i pass 3 email ids the source request has to convert into 3 records first and on those 3 records i will apply standardize rules and then after i will prepare an XML with all the 3 records to call webservice methos to load the data.
Can anybody suggest me how to achieve it? do i need to change the job design or are there any options available in Service Director to solve this.
Thanks !
In My current project we are calling the web service methods from Datastage which are implemented in JAVA.But before calling the webservice method i need to standardize the data which is coming as part of the SOAP request and then need to pass the standardized data to the web service method to load the data to tables.More over i need to implement this entire process in Real time. So we have used service director to make the job run on 24 X 7 basis.
My job structure is as follows:
ISD Input Stage(To read values in the request)----- > Standardize stage(Applying standardize rules)-----> trnasformr(filtering out necessary columns) ---- > xml output stage(Converting back to XML to call Web service method) ----- > webservice transformer(to call the java web methods) ----- > ISD Output stage(Sending response back)
I added this job to the service director and taken out the WSDL. and the WSDL is as follows.I used the SOAP over HTTP service while adding the job in Service Director.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://PIMServ1.PIM1.isd.ibm.com/soapoverhttp/">
<soapenv:Header/>
<soapenv:Body>
<soap:Dept>
<deptID>?</deptID>
<employeeID>?</employeeID>
<employeeStatus>?</employeeStatus>
<employeeName>?</employeeName>
<identifier>?</identifier>
<telnumber>?</telnumber>
<email>?</email>
</soap:Dept>
</soapenv:Body>
</soapenv:Envelope>
If i pass the data with out repetitive elements then the job is working fine. But as per my requirement a single employee may have multiple phone numbers and email ids. I need to design a job in such a way that it should handle multiple emails and phone numbers as below.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://PIMServ1.PIM1.isd.ibm.com/soapoverhttp/">
<soapenv:Header/>
<soapenv:Body>
<soap:Dept>
<deptID>?</deptID>
<employeeID>?</employeeID>
<employeeStatus>?</employeeStatus>
<employeeName>?</employeeName>
<identifier>?</identifier>
<telnumber>?</telnumber>
<telnumber>?</telnumber>
<telnumber>?</telnumber>
<email>?</email>
<email>?</email>
<email>?</email>
</soap:Dept>
</soapenv:Body>
</soapenv:Envelope>
I tried with accept array option which is available in service director while adding the job but it is not working properly to my requirement. if i pass 3 email ids as part of the request,ISD stage is taking the last entered email id and preparing the single record with all the other columns to process. but in my case if i pass 3 email ids the source request has to convert into 3 records first and on those 3 records i will apply standardize rules and then after i will prepare an XML with all the 3 records to call webservice methos to load the data.
Can anybody suggest me how to achieve it? do i need to change the job design or are there any options available in Service Director to solve this.
Thanks !