Author |
Message
|
Dave Ziegler |
Posted: Fri Nov 14, 2014 10:16 am Post subject: SOAP Integration Design Question |
|
|
Centurion
Joined: 15 Apr 2014 Posts: 118
|
I have a design question I'd like to run past you guys and gals. I need to tie into a third party via their SOAP services. They provide N methods, and each method is implemented at their end as a distinct web service complete with WSDL and associated XSDs. Each of the N methods is implemented in essentially the same manner, and the only real variance is with the payload section of the web service operation. So the situation looks something like this (grossly oversimplified and walking the message tree vs. using references for the sake of clarity):
Code: |
DECLARE ns NAMESPACE 'http://OperationNameServiceRequest';
DECLARE ns2 NAMESPACE 'http://OperationNameServiceRequest/Payload';
SET OutputRoot.SOAP.Body.ns:OperationNameServiceRequest.ns:MessageId = UUIDASCHAR;
SET OutputRoot.SOAP.Body.ns:OperationNameServiceRequest.ns:Service.ns:Parameters.ns:MethodId = 'OperationName';
SET OutputRoot.SOAP.Body.ns:OperationNameServiceRequest.ns:Service.ns:Parameters.ns:RequestId = UUIDASCHAR;
SET OutputRoot.SOAP.Body.ns:OperationNameServiceRequest.ns:Service.ns:Security.ns:Basic.ns:Username = 'myusername';
SET OutputRoot.SOAP.Body.ns:OperationNameServiceRequest.ns:Service.ns:Security.ns:Basic.ns:Password = 'mypassword';
SET OutputRoot.SOAP.Body.ns:OperationNameServiceRequest.ns:Service.ns:Payload.ns2:OperationNameData.ns2:Name = 'Dave';
SET OutputRoot.SOAP.Body.ns:OperationNameServiceRequest.ns:Service.ns:Payload.ns2:OperationNameData.ns2:SSN = '123456789';
|
(Note the use of OperationName in the namespaces, message structure, and parameter value MethodId.)
I have a POC working, but I would like to find a way to template-ify this somehow. Right now, I have only implemented 3 flows so I have something to work with. I've tried a few things with the namespaces and swapping them out for {vars}, but that only solves part of the problem. If I have to implement 100 service methods, I don't really want 100 distinct message flows each with an ESQL compute node setting all the same values (do I?). Am I correct in thinking there is a way to template this code and swap out the operation name references? Can I create a generic flow using Gateway mode or something?
I'm not looking for someone to code this for me, but a few pointers would be helpful. Thanks!
[Disclaimer: I will be attending WM675 early next year.] |
|
Back to top |
|
 |
fjb_saper |
Posted: Fri Nov 14, 2014 10:32 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
keeping ns1 and ns2 variables will help.
Setting the SOAP request node to GATEWAY mode is the way to go.
Just be aware that with the gateway mode you loose the validation.
Now you may also need to dynamically override the endpoint for the SOAP request.
Looking at the high # of variations you may want to stick the values for ns and ns2 as well as the corresponding endpoint and operation name into a DB with some identifier as to allow you to determine which is which... and retrieve or cache at runtime.
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
Dave Ziegler |
Posted: Fri Nov 14, 2014 10:41 am Post subject: |
|
|
Centurion
Joined: 15 Apr 2014 Posts: 118
|
What if I don't want to lose validation? |
|
Back to top |
|
 |
fjb_saper |
Posted: Fri Nov 14, 2014 12:44 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Dave Ziegler wrote: |
What if I don't want to lose validation? |
You can add validation nodes to the flow. _________________ MQ & Broker admin |
|
Back to top |
|
 |
Dave Ziegler |
Posted: Fri Nov 14, 2014 12:47 pm Post subject: |
|
|
Centurion
Joined: 15 Apr 2014 Posts: 118
|
fjb_saper wrote: |
Dave Ziegler wrote: |
What if I don't want to lose validation? |
You can add validation nodes to the flow. |
Node(s) pural? Or one node and pull off some sort of hijinx to make it generic? Otherwise, now I have 1 flow with 100 Validation nodes configured for each of my WSDLs. |
|
Back to top |
|
 |
fjb_saper |
Posted: Fri Nov 14, 2014 12:49 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Dave Ziegler wrote: |
fjb_saper wrote: |
Dave Ziegler wrote: |
What if I don't want to lose validation? |
You can add validation nodes to the flow. |
Node(s) pural? Or one node and pull off some sort of hijinx to make it generic? Otherwise, now I have 1 flow with 100 Validation nodes configured for each of my WSDLs. |
Plural as in one before the SOAP Request and one after.
You still need 100+ messages in your message model... _________________ MQ & Broker admin |
|
Back to top |
|
 |
Dave Ziegler |
Posted: Fri Nov 14, 2014 12:50 pm Post subject: |
|
|
Centurion
Joined: 15 Apr 2014 Posts: 118
|
fjb_saper wrote: |
Dave Ziegler wrote: |
fjb_saper wrote: |
Dave Ziegler wrote: |
What if I don't want to lose validation? |
You can add validation nodes to the flow. |
Node(s) pural? Or one node and pull off some sort of hijinx to make it generic? Otherwise, now I have 1 flow with 100 Validation nodes configured for each of my WSDLs. |
Plural as in one before the SOAP Request and one after.
You still need 100+ messages in your message model... |
I have 100+ very complex WSDLs from a third party. Are you suggesting I somehow smash them all together into an uber-model? I'm not sure I am following your line of thinking. |
|
Back to top |
|
 |
fjb_saper |
Posted: Fri Nov 14, 2014 12:54 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Well it depends if you have your xsds separate from the wsdls.
The easiest way to populate your message model would probably be to import the 100 WSDLs. I'd have to look it up but I believe there is an mqsi program to import them. So it would not all be by hand... _________________ MQ & Broker admin
Last edited by fjb_saper on Fri Nov 14, 2014 12:56 pm; edited 1 time in total |
|
Back to top |
|
 |
Dave Ziegler |
Posted: Fri Nov 14, 2014 12:55 pm Post subject: |
|
|
Centurion
Joined: 15 Apr 2014 Posts: 118
|
fjb_saper wrote: |
Well it depends if you have your xsds separate from the wsdls.
The easiest way to populate your message model would probably be to import the 100 WSDLs |
The schemas are in separate files from the WSDLs, and so far I've imported about 11 of them. You said it depends, so what now? |
|
Back to top |
|
 |
|