Thursday, 17 May 2018

IBM Integration Bus - BIP3113E and BIP2230E and BIP4240E

So this has been annoying me for 1/2 day ….

I was trying/failing to create an Integration Service in IBM Integration Bus 10 that consumes a Decision Service from IBM Operational Decision Manager, via SOAP / WSDL.

I'd previously generated the Decision Service, and deployed it to an instance of ODM ( aka Business Rules ) on the IBM Cloud: -


Having grabbed the WSDL from the Decision Service itself: -


I created a new Integration Service in IIB ( using the Toolkit on a Windows VM ), from the WSDL ( via a URL ), and deployed my Service to an Integration Node ( again via the Toolkit ).

This then gave me another WSDL URL: -


for the actual flow running in the Integration Service on the Integration Server.

I plopped this into SoapUI, created a new SOAP project, and attempted to hit my Integration Service: -


For reference, this is what it says ….

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>soapenv:Server</faultcode>
         <faultstring>BIP3113E: Exception detected in message flow gen.ODMRulesOK.SOAP Input (integration node TESTNODE_Dave)</faultstring>
         <detail>
            <Text>BIP2230E: Error detected whilst processing a message in node 'gen.ODMRulesOK.Route To Label'. 
The integration node detected an error whilst processing a message in node 'gen.ODMRulesOK.Route To Label'. An exception has been thrown to cut short the processing of the message. 
See the following messages for details of the error. : F:\build\S1000_slot1\S1000_P\src\DataFlowEngine\BasicNodes\ImbRouterNode.cpp: 315: ImbRouterNode::evaluate: ComIbmRouteToLabelNode: gen/ODMRulesOK#FCMComposite_1_2
BIP4240E: RouteToLabel node ''gen.ODMRulesOK.Route To Label'' unable to locate Label node ''HelloWorld''. 
A RouteToLabel node received a message that contains a label, but no Label node has this label. 
Possible causes of this error are as follows: (a) The input message is not as expected. (b) The logic of the message flow, which does not calculate a valid Label node name for all valid input messages. (c) Errors in deployment. Check that the input message is as expected. Then check the logic of the message flow, to ensure that in all cases the calculated Label node names are correct. Finally ensure that the message flow, and any nested message flows have been saved. Redeploy the new configuration to the broker, using the complete configuration option. If the problem persists, contact your IBM Support Center. : F:\build\S1000_slot1\S1000_P\src\DataFlowEngine\BasicNodes\ImbRouterNode.cpp: 291: ImbRouterNode::evaluate: ComIbmRouteToLabelNode: gen/ODMRulesOK#FCMComposite_1_2</Text>
         </detail>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>

After much faffing about, I poked about within the generated Message Flow: -


Can you see what I did there ?

So the Input is NOT wired to the Output ( or, indeed, to ANYTHING )

So I tried wiring the Input to the Output: -


but those clever IIB folks have thought about that: -



So I tried again - using the error message as inspiration ( by adding a Route To Label node ): -


and redeployed my flow.

At which point it just works :-) 


So … the moral of the story - CONNECT YOUR DARN NODES, HAY

2 comments:

kpc said...

Thank you sir!!! finally got the WSDL to work

Dave Hay said...

Hey @kpc

Thanks for the comment, glad you made it work :-)

Cheers, Dave

Note to self - use kubectl to query images in a pod or deployment

In both cases, we use JSON ... For a deployment, we can do this: - kubectl get deployment foobar --namespace snafu --output jsonpath="{...