Author |
Message
|
humanRebody |
Posted: Fri Feb 05, 2010 2:08 am Post subject: Message propagation issue. Please help. |
|
|
Novice
Joined: 05 Feb 2010 Posts: 15
|
Hi all,
Recently I developed a simple workflow which just propagate a message from 1 MQInput node to 2 MQOutput node. I have try the tutorial from IBM but still not success.
Code: |
SET OutputRoot = InputRoot;
PROPAGATE;
SET OutputRoot = InputRoot;
PROPAGATE TO TERMINAL 'out1';
SET OutputRoot = InputRoot;
|
Is there anything else I need to configure.
And the flow is so simple that 1 MQInput --> compute node --> 2 MQOutput.
Please advise.
Thanks,
Thomas[/code] |
|
Back to top |
|
 |
WMBDEV1 |
Posted: Fri Feb 05, 2010 3:15 am Post subject: Re: Message propagation issue. Please help. |
|
|
Sentinel
Joined: 05 Mar 2009 Posts: 888 Location: UK
|
Can you elaborate on:
humanRebody wrote: |
still not success.
|
What happens? You get 0 messages? 1 message? deploy error?
I've no idea what your problem is at the moment! |
|
Back to top |
|
 |
nathanw |
Posted: Fri Feb 05, 2010 3:16 am Post subject: |
|
|
 Knight
Joined: 14 Jul 2004 Posts: 550
|
I am assuming you added the compute node and the Propogate portion because you are looking at learning more about it.
If the purpose of the flow was just to move the message from 1 queue to another then just connect the MQInput direct to the MQouput _________________ Who is General Failure and why is he reading my hard drive?
Artificial Intelligence stands no chance against Natural Stupidity.
Only the User Trace Speaks The Truth  |
|
Back to top |
|
 |
smdavies99 |
Posted: Fri Feb 05, 2010 3:23 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
You take the easy way out...
Just wire the out terminal of your MQInput node to the 'in' terminal of the two MQOutput Nodes.
That's the way it was done before the ESQL Propagate verb was introduced. _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
mlafleur |
Posted: Fri Feb 05, 2010 6:06 am Post subject: |
|
|
Acolyte
Joined: 19 Feb 2004 Posts: 73
|
Here's a hint for you.
PROPAGATE DELETE NONE; |
|
Back to top |
|
 |
humanRebody |
Posted: Fri Feb 05, 2010 8:55 am Post subject: |
|
|
Novice
Joined: 05 Feb 2010 Posts: 15
|
I am glad that there were so many replies/help here.
Ok, Firstly I have a reference with the below IBM tutorial.
http://publib.boulder.ibm.com/infocenter/wmbhelp/v6r0m0/index.jsp?topic=/com.ibm.etools.mft.doc/ac12370_.htm
My whole code is as following:
Code: |
CREATE COMPUTE MODULE Marshalling_Compute
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
CALL CopyEntireMessage();
RETURN FALSE;
END;
CREATE PROCEDURE CopyEntireMessage()
BEGIN
SET OutputRoot = InputRoot;
PROPAGATE DELETE NONE;
SET OutputRoot = InputRoot;
PROPAGATE TO TERMINAL 'out1';
END;
CREATE PROCEDURE CopyMessageHeaders()
BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER;
SET J = CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
END MODULE;
|
Actually I read some documents which indicates calling method CopyMessageHeaders() is necessary. However, it cannot solve the problem.
Also please find the ExceptionList below:
ExceptionList
RecoverableException
File = /build/S600_P/src/DataFlowEngine/ImbDataFlowNode.cpp
Line = 616
Function = ImbDataFlowNode::createExceptionList
Type = ComIbmMQInputNode
Name = Marshalling#FCMComposite_1_1
Label = Marshalling.MQInput
Catalog = BIPv600
Severity = 3
Number = 2230
Text = Node throwing exception
RecoverableException
File = /build/S600_P/src/DataFlowEngine/ImbComputeNode.cpp
Line = 464
Function = ImbComputeNode::evaluate
Type = ComIbmComputeNode
Name = Marshalling#FCMComposite_1_2
Label = Marshalling.Compute
Catalog = BIPv600
Severity = 3
Number = 2230
Text = Caught exception and rethrowing
RecoverableException
File = /build/S600_P/src/DataFlowEngine/ImbRdl/ImbRdlStatementGroup.cpp
Line = 589
Function = SqlStatementGroup::execute
Type = ComIbmComputeNode
Name = Marshalling#FCMComposite_1_2
Label = Marshalling.Compute
Catalog = BIPv600
Severity = 3
Number = 2488
Text = Error detected, rethrowing
Insert
Insert
Insert
RecoverableException
File = /build/S600_P/src/DataFlowEngine/ImbRdl/ImbRdlRoutine.cpp
Line = 548
Function = SqlRoutine::invoke
Type = ComIbmComputeNode
Name = Marshalling#FCMComposite_1_2
Label = Marshalling.Compute
Catalog = BIPv600
Severity = 3
Number = 2934
Text = Error occured in procedure
Insert
RecoverableException
Beside, I have captured the flow and please comment:
[img]http://picasaweb.google.com.tw/thomaslmw/ForWork?feat=directlink#5434802241078685746[/img]
Thanks for your great help!
Regards,
Thomas |
|
Back to top |
|
 |
Vitor |
Posted: Fri Feb 05, 2010 9:14 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
Two points.
First - don't put your code in the supplied copy procedures. Put in in the Main where's it's supposed to be. Unlikely to be directly your problem but...
Second:
humanRebody wrote: |
Actually I read some documents which indicates calling method CopyMessageHeaders() is necessary. However, it cannot solve the problem. |
Why not? Why wouldn't the 2nd message need headers as well? Not putting user code in the copy procedures allows you to call them multiple times, as they were intended to be. From the link you posted:
Quote: |
ensure that you copy all required message headers to the output message buffer for each output message that you propagate |
You might also find a clue in the line immediately above that one.  _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mgk |
Posted: Fri Feb 05, 2010 9:38 am Post subject: |
|
|
 Padawan
Joined: 31 Jul 2003 Posts: 1642
|
For some reason the inserts seem to be missing in the ExceptionList you posted and they should tell you what the flow thinks the problem is so try looking in the EventLog to see if the message is shows correctly there. Also, just so you know, if you want the SAME message sent to two (or more) destinations you can simple wire the Out terminal on the Compute node multiple times to your target (different) output nodes and the flow will send the SAME message to each of the wired target nodes one after the other.
Kind regards, _________________ MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions. |
|
Back to top |
|
 |
smdavies99 |
Posted: Fri Feb 05, 2010 10:48 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
mgk wrote: |
For some reason the inserts seem to be missing in the ExceptionList you posted and they should tell you what the flow thinks the problem is so try looking in the EventLog to see if the message is shows correctly there. Also, just so you know, if you want the SAME message sent to two (or more) destinations you can simple wire the Out terminal on the Compute node multiple times to your target (different) output nodes and the flow will send the SAME message to each of the wired target nodes one after the other.
Kind regards, |
Exactly what I said above but it seems to have been ignored by the poster.
Sigh. _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
mgk |
Posted: Fri Feb 05, 2010 11:16 am Post subject: |
|
|
 Padawan
Joined: 31 Jul 2003 Posts: 1642
|
Quote: |
Exactly what I said above but it seems to have been ignored by the poster. |
And I missed it too
Kind Regards, _________________ MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions. |
|
Back to top |
|
 |
humanRebody |
Posted: Fri Feb 05, 2010 9:56 pm Post subject: |
|
|
Novice
Joined: 05 Feb 2010 Posts: 15
|
Oooo....Thx so much...why all you guys said it is not IMPOSSIBLE to archieve it. Really very simple.  |
|
Back to top |
|
 |
|