Hello, fml2!
I am on a journey to try and understand what the heck is going on in this engine so that I can feel like, when I put a bunch of tasks on a page and join them together, that I can anticipate what might actually happen. The entire thread thing and lack of any associated information is kind of blowing my mind. There does not seem to be any concise description of when a new “thread” is started, when it goes away, what is happening in the pipeline when there are multiple threads, or what happens if you don’t enable parallel execution on a step and it finds itself being called from multiple threads. Does this parallel thing only apply when multiple threads are calling the step at the same time? The way that time affects these processes is unclear to me.
Does a receive task always create a new thread? What kinds of things cause that new thread to go away? Any synchronized join? I’m thinking, “not necessarily”. It sounds like receive tasks are potential mayhem factories. Are they?
Say I have a process that goes Start-> AND → X, Receive → AND → X, … and I fire 30 messages at the receive, then I assume that I would get 30 threads going, and they would each hit X because the transition from Start is always true. What technique could I possibly use at some point downstream to guarantee that I’m at exactly one thread? If I AND in something that only occurs once, do all of those 30 threads all essentially terminate at that join? If they do and I get some more messages after that, do they each sail through that join on their own threads because the join has been satisfied once? Do I need to include some mechanism to turn off the flow of data from that receive event when I no longer should be accepting it? What would that look like?
And why to I get build errors when I have a synchronized OR in a loop? I don’t doubt that the builder is correct. I just have no real idea why this is a problem due to my ignorance. Understanding that might also help me understand what’s happening with these threads.
Now, since I don’t know what I’m talking about, any of the above assertions may be false. But I can find no documentation that either supports or refutes any of them. So there’s my straw man. Someone please burn it for me.
If I don’t get any action on this, I may re-post with a different subject that’s more titillating…
Jason
#webMethods-BPMS#webMethods#BPM