Author |
Message
|
john01 |
Posted: Tue Dec 28, 2010 7:27 am Post subject: problem with an user defined node from a subflow |
|
|
Novice
Joined: 16 Jun 2010 Posts: 21 Location: PT
|
Hi,
I'm using the WMB v7.0.0.2.
I have a user defined node from a subflow that has a MQ input node linked to a output node.
However, when I drag and drop my UDN into a flow the toolkit doesn't reconize that flow is now "runnable".
I've tried clean project but the problem mantains.
Any suitable suggestion?
Btw, I've found a workaround with a combination of drag, drop and delete with other nodes and worked. But this is not a suitable way...
Thanks.
Last edited by john01 on Wed Dec 29, 2010 8:45 am; edited 1 time in total |
|
Back to top |
|
 |
lancelotlinc |
Posted: Tue Dec 28, 2010 10:00 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
Could I ask you a couple of questions, John?
1. What is the UDN doing?
2. What functions have you used in the UDN? (ie. are you compiling the UDN with third party libraries?)
3. What advantage are you obtaining by using a UDN rather than a Java Compute Node (JCN)?
4. If you do not include your UDN in the subflow, and put a JCN in its place, do you get the same or different behaviour from the toolkit? _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
john01 |
Posted: Tue Dec 28, 2010 12:31 pm Post subject: |
|
|
Novice
Joined: 16 Jun 2010 Posts: 21 Location: PT
|
First of all, thanks for your reply lancelotlinc.
Second, my apologies if I didn't understand some questions meaning.
lancelotlinc wrote: |
1. What is the UDN doing?
|
For now is just a POC. Later will be like a generic initializer. I would like to promote the MQ name and then read some settings from DB.
As I've said, in this POC I have just put a MQ input node and a output node.
lancelotlinc wrote: |
2. What functions have you used in the UDN? (ie. are you compiling the UDN with third party libraries?)
|
I've used the toolkit wizards and I haven't added any kind os external libraries.
lancelotlinc wrote: |
3. What advantage are you obtaining by using a UDN rather than a Java Compute Node (JCN)?
|
Mainly because is more simple and reliable to construct what I want. And If you are talking about a Java user-defined input node, that's not so trivial to implement than a subflow as a UDN.
lancelotlinc wrote: |
4. If you do not include your UDN in the subflow, and put a JCN in its place, do you get the same or different behaviour from the toolkit? |
As far as I know the JavaCompute node supported by toolkit palette doesn't work as a input node. Maybe with Java user-defined input node approach, right? |
|
Back to top |
|
 |
Vitor |
Posted: Tue Dec 28, 2010 12:38 pm Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
IMHO there are 2 distinct topics here:
1) Why doesn't your flow show as "runnable" with your UDN?
WMB clearly doesn't believe your UDN has a valid input method (top level "runnable" flows must have a means by which data can enter). If you believe that this is not the case, review your UDN's coding & configuration.
2) Why use a UDN?
Well this splits down a bit as well. Sometimes you talk about a subflow, sometimes you talk about a UDN. These are 2 different constructs. If you have a subflow that reads a DB for good & sufficient reason so be it. If you have a UDN that's reading a DB, why bother? What does the UDN do that one of the built-in nodes does not?
Also where does "promoting the MQ name" fit into this? Does this subflow / UDN read a queue as well?
I suppose it summarises as "what concept are you trying to prove?". Better information, better advice. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mqjeff |
Posted: Tue Dec 28, 2010 1:01 pm Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Vitor wrote: |
2) Why use a UDN?
Well this splits down a bit as well. Sometimes you talk about a subflow, sometimes you talk about a UDN. |
Except in v7, one can compile a Subflow *into* a UDN. So the two topics can collapse again. |
|
Back to top |
|
 |
Vitor |
Posted: Tue Dec 28, 2010 1:22 pm Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mqjeff wrote: |
Vitor wrote: |
2) Why use a UDN?
Well this splits down a bit as well. Sometimes you talk about a subflow, sometimes you talk about a UDN. |
Except in v7, one can compile a Subflow *into* a UDN. So the two topics can collapse again. |
Ah!
This explains a lot, and justifies my signature once more.
(Too busy reading up on SVN to go through the WMBv7 docs in any detail) _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
john01 |
Posted: Tue Dec 28, 2010 1:37 pm Post subject: |
|
|
Novice
Joined: 16 Jun 2010 Posts: 21 Location: PT
|
Vitor wrote: |
IMHO there are 2 distinct topics here:
1) Why doesn't your flow show as "runnable" with your UDN?
WMB clearly doesn't believe your UDN has a valid input method (top level "runnable" flows must have a means by which data can enter). If you believe that this is not the case, review your UDN's coding & configuration.
|
It doesn't appear "runnable" at first attemp. But if I did this kind of combination it works: put a dummy MQ input > save > put my UDN > save > delete the dummy MQ input > save. I've already deployed using this workaround and works fine.
But doing this type of combination steps is not suitable/ pretty.
Vitor wrote: |
2) Why use a UDN?
Well this splits down a bit as well. Sometimes you talk about a subflow, sometimes you talk about a UDN. These are 2 different constructs. If you have a subflow that reads a DB for good & sufficient reason so be it. If you have a UDN that's reading a DB, why bother? What does the UDN do that one of the built-in nodes does not?
Also where does "promoting the MQ name" fit into this? Does this subflow / UDN read a queue as well?
I suppose it summarises as "what concept are you trying to prove?". Better information, better advice. |
Why this POC?
I want to distribute my 'starter' subflow to another developer team. I've supposed that make my UDN from a subflow was the simplest way to distribute my code ensuring the integrity of it!
http://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/index.jsp?topic=/com.ibm.etools.mft.doc/bs37330_.htm
http://mqseries.net/phpBB2/viewtopic.php?p=271493
I've already implemented a simple 'starter' subflow, and a new flow always appears "runnable" when I d&d my subflow into it.
My subflow has the "MQ name" promoted. |
|
Back to top |
|
 |
Vitor |
Posted: Tue Dec 28, 2010 1:40 pm Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
Given my extensive knowledge of this subject (!) it sounds like a bug in the tooling to me. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
john01 |
Posted: Tue Dec 28, 2010 1:41 pm Post subject: |
|
|
Novice
Joined: 16 Jun 2010 Posts: 21 Location: PT
|
Vitor wrote: |
mqjeff wrote: |
Vitor wrote: |
2) Why use a UDN?
Well this splits down a bit as well. Sometimes you talk about a subflow, sometimes you talk about a UDN. |
Except in v7, one can compile a Subflow *into* a UDN. So the two topics can collapse again. |
Ah!
This explains a lot, and justifies my signature once more.
(Too busy reading up on SVN to go through the WMBv7 docs in any detail) |
I've noticed that
No problem! |
|
Back to top |
|
 |
lancelotlinc |
Posted: Wed Dec 29, 2010 5:19 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
I call this the "Can't Touch This" paradigm.
What would be more useful to your team members, in my opinion, is a selection of template patterns to choose from.
Making yourself a god (little g) to other people is too self serving and creates a fallible dependency on you. We all want to feel important, but the age of closed source code has long since past.
"Join the movement." NFL Play 60 ESB commercial
We are "open source" now. Share the wealth. Don't hoard. Besides, some of your team mates might have some great insight to share with you and if you close the implementation where they can't see whats going on, then you limit your ability to learn from them.
Not to say that UDNs dont have a place. Just saying your motivation, as you've described it, is off-base.
I'm sure I'll hear from my friend Vitor.  _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
Vitor |
Posted: Wed Dec 29, 2010 5:40 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
lancelotlinc wrote: |
I'm sure I'll hear from my friend Vitor.  |
You want to start a poll "Should Vitor stop posting" I'll abide by the will of a simple majority.
lancelotlinc wrote: |
We are "open source" now. Share the wealth. Don't hoard. Besides, some of your team mates might have some great insight to share with you and if you close the implementation where they can't see whats going on, then you limit your ability to learn from them. |
Unless you are or work for a consultancy/software firm & wish to retain IP/copyright/etc, then a black box solution might be attractive.
lancelotlinc wrote: |
Making yourself a god (little g) to other people is too self serving and creates a fallible dependency on you. We all want to feel important, but the age of closed source code has long since past. |
Have you got the code for WMQ? Or WMB? Or all the commercial solutions you've developed & sold?
john01 wrote: |
I want to distribute my 'starter' subflow to another developer team. I've supposed that make my UDN from a subflow was the simplest way to distribute my code ensuring the integrity of it! |
I'd say it's a viable way to distribute code, even within team members with no IP issues. Ideal for common code like logging, error handling, the sorts for things I (and I imagine a good many others) have been using sub flows for for years. This (from my extensive research!!) just appears to be a packaging thing.
As to ensuring the integrity, I'm a great believer in control.
lancelotlinc wrote: |
"Join the movement." NFL Play 60 ESB commercial |
I have no comment, except that I find American Football incomprehensible.
lancelotlinc wrote: |
I call this the "Can't Touch This" paradigm. |
And a valuable strategy I've employed. There are always parts of the system you don't want touched. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
lancelotlinc |
Posted: Wed Dec 29, 2010 5:43 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
john01 wrote: |
As far as I know the JavaCompute node supported by toolkit palette doesn't work as a input node. Maybe with Java user-defined input node approach, right? |
I would try this pattern first, before going with the UDN:
[Input Node] -> JCN -> [Output Node]
Not sure why you want to read a database to find out initialization data each and every message? Does the data in the database change every time a new message arrives? Seems like a bottleneck to me. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
lancelotlinc |
Posted: Wed Dec 29, 2010 5:45 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
Vitor wrote: |
lancelotlinc wrote: |
I'm sure I'll hear from my friend Vitor.  |
You want to start a poll "Should Vitor stop posting" I'll abide by the will of a simple majority.
lancelotlinc wrote: |
We are "open source" now. Share the wealth. Don't hoard. Besides, some of your team mates might have some great insight to share with you and if you close the implementation where they can't see whats going on, then you limit your ability to learn from them. |
Unless you are or work for a consultancy/software firm & wish to retain IP/copyright/etc, then a black box solution might be attractive.
lancelotlinc wrote: |
Making yourself a god (little g) to other people is too self serving and creates a fallible dependency on you. We all want to feel important, but the age of closed source code has long since past. |
Have you got the code for WMQ? Or WMB? Or all the commercial solutions you've developed & sold?
john01 wrote: |
I want to distribute my 'starter' subflow to another developer team. I've supposed that make my UDN from a subflow was the simplest way to distribute my code ensuring the integrity of it! |
I'd say it's a viable way to distribute code, even within team members with no IP issues. Ideal for common code like logging, error handling, the sorts for things I (and I imagine a good many others) have been using sub flows for for years. This (from my extensive research!!) just appears to be a packaging thing.
As to ensuring the integrity, I'm a great believer in control.
lancelotlinc wrote: |
"Join the movement." NFL Play 60 ESB commercial |
I have no comment, except that I find American Football incomprehensible.
lancelotlinc wrote: |
I call this the "Can't Touch This" paradigm. |
And a valuable strategy I've employed. There are always parts of the system you don't want touched. |
I like your posts Vitor. Since this philosophical discussion is larger than the current OP topic, I'll start a discussion in General Discussion group. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
smdavies99 |
Posted: Wed Dec 29, 2010 6:17 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
lancelotlinc wrote: |
Not sure why you want to read a database to find out initialization data each and every message? Does the data in the database change every time a new message arrives? Seems like a bottleneck to me. |
If all the flows use this common UDN then this is a bottleneck and can (depending upon the message rate) have a very detremental affect on throughput.
This is a very common problem.
One solution is as follows:-
Read the data into shared Variables and do regular refreshed via timer nodes.
Use BEGIN ATOMIC ... END to restrict the read/update access to the variables.
One system I worked on implemented this and the throughput went from 20/sec to 34/sec. The DB in this case was a remote SQLServer system.
We were experiencing DB Locks. Once this was implemented, there were no more locks. _________________ 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 |
|
 |
lancelotlinc |
Posted: Wed Dec 29, 2010 6:25 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
smdavies99 wrote: |
lancelotlinc wrote: |
Not sure why you want to read a database to find out initialization data each and every message? Does the data in the database change every time a new message arrives? Seems like a bottleneck to me. |
If all the flows use this common UDN then this is a bottleneck and can (depending upon the message rate) have a very detremental affect on throughput.
This is a very common problem.
One solution is as follows:-
Read the data into shared Variables and do regular refreshed via timer nodes.
Use BEGIN ATOMIC ... END to restrict the read/update access to the variables.
One system I worked on implemented this and the throughput went from 20/sec to 34/sec. The DB in this case was a remote SQLServer system.
We were experiencing DB Locks. Once this was implemented, there were no more locks. |
That is sort of the solution I was walking towards. I was trying to get john to be more interactive in this discussion. As you discovered, caching the data can be a huge benefit.
I would have ended up using a Singleton with a daemon background thread doing the refreshes. Same solution as you, just using simple Java rather than a message flow. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
|