Hi All,
I am facing a wierd problem with a flow service that essentially does the following:
send a MQ message (JMS Adapter)
Create a JMS criteria to receive a message
Sleep for 10 sec
Recieve a message based on the criteria
The code when executed leads to a null message received in step 4. When I execute the same code in trace mode it executes fine.
Initially I thought that it may be happeining because of the long running nature of the transaction so I increased the sleep time to a big number. Even that didnt work.
The issue was with the configuration of JMS Adapter. It was set for LOCAL_TRANSACTION - what that means is that after every send & receive the caller has to commit (for request-response model). So when the service was executed the request message never went out. I have set it to NO_TRANSACTION now which is equivalent to autoCommit.
Now the big question is : why did it work in TRACE mode? In my opinion its a bug in webMethods - its commiting after the send/receive in the trace mode or in other words although the configuration is LOCAL_TRANSACTION its behaving as if its a NO_TRANSACTION.
I am not sure whether webMethods consider it as a BUG or FEATURE - but it wasted a lot of my time.
In trace mode or step mode the individual flow steps are executed by a round trip to the Integration Server. This means that essentially the service “ends” every flow step.
So the IS is adhering to the LOCAL_TRANSACTION upon the roundtrip finishing, which in the case of trace is the single flow operation…
If it’s any consolation I’ve had a similar strangeness, although actually a bug where in step mode a list mapped to a single element for a service input disappeared, but a “run” worked fine…
Another time it was SAP not having enough time to return a result for part of an RFC call when run, though trace/step gave it enough time to return ok…
One of those things like you said: a bug or a feature… Ideally the step/trace will behave exactly the same as run, but under the covers it’s all done via service calls that the developer makes…