Strange behaviour when using fork
bungrudi Mar 5, 2008 12:50 AMHello,
I have a flow that basically does the following:
AO -> RO#1 -> ... -> HBS -> REV_ADM -> REV#1 -> ... -> REV#3 ->
-> COM_ADM -> COM#1 -> ... ->COM#3 ->
(continued)
join1 -> dropped
on each node, it should be checked whether any user is currently assigned to it. if yes, create a task and assign. if not, continue execution.
my idea to this is to make each task-node "create-task=false", assign an "enter-node" handler that checks whether any user is assigned to the node, and then create task/continue execution.
This solution works fine when the execution path is straightforward (no forking and async execution involved).
but when "fork" come into play, the behaviour is far from what i expected.
the debug print (from my own code, to simplify the printout) is like the following:
http://www.2shared.com/file/2939237/171d5892/stdout_jbpm.html
as you can see after HBS node it hits the fork node, and it started to execute in a way beyond my comprehension.
yet more strange behaviour is that when the execution is stopped in HBS for a while (created a task and waited for the task to be completed), the printout is far shorter, but still far from what i expected and still beyond my comprehension:
Token(/)264445391 calc auth level Token(/)264445391 review RO #1 Token(/)264445391 review RO #2 Token(/)264445391 review SRM Token(/)264445391 review GAM Token(/)264445391 review BM Token(/)264445391 review HOBS Token(/)264445391 review HA Token(/)264445391 review HR Token(/)264445391 review HBS Token(/to.pick compliances)264625293 pick compliances Token(/to.pick compliances)264625293 compliance #1 Token(/to.pick compliances)264625293 compliance #2 Token(/to.pick compliances)264625293 compliance #3 Token(/to.pick compliances)264625293 compliance #3 Token(/to.pick compliances)264625293 compliance #2 Token(/to.pick compliances)264625293 compliance #3 Token(/to.pick compliances)264625293 compliance #3 Token(/to.pick compliances)264625293 compliance #1 Token(/to.pick compliances)264625293 compliance #2 Token(/to.pick compliances)264625293 compliance #3 Token(/to.pick compliances)264625293 compliance #3 Token(/to.pick compliances)264625293 compliance #2 Token(/to.pick compliances)264625293 compliance #3 Token(/to.pick compliances)264625293 compliance #3 Token(/to.pick reviewer)264625334 pick reviewer Token(/to.pick reviewer)264625334 reviewer #1 Token(/to.pick reviewer)264625334 reviewer #2 Token(/to.pick reviewer)264625334 reviewer #3 Token(/to.pick reviewer)264625334 reviewer #3 Token(/to.pick reviewer)264625334 reviewer #2 Token(/to.pick reviewer)264625334 reviewer #3 Token(/to.pick reviewer)264625334 reviewer #3 Token(/to.pick reviewer)264625334 reviewer #1 Token(/to.pick reviewer)264625334 reviewer #2 Token(/to.pick reviewer)264625334 reviewer #3 Token(/to.pick reviewer)264625334 reviewer #3 Token(/to.pick reviewer)264625334 reviewer #2 Token(/to.pick reviewer)264625334 reviewer #3 Token(/to.pick reviewer)264625334 reviewer #3
i'm expecting that after "review HBS", it should be like
Token(/to.pick compliances)264625293 pick compliances
Token(/to.pick compliances)264625293 compliance #1
Token(/to.pick compliances)264625293 compliance #2
Token(/to.pick compliances)264625293 compliance #3
Token(/to.pick reviewer)264625334 pick reviewer
Token(/to.pick reviewer)264625334 reviewer #1
Token(/to.pick reviewer)264625334 reviewer #2
Token(/to.pick reviewer)264625334 reviewer #3
and then join and finish.
did i do something wrong? is ctx.getNode().leave(ctx) is the wrong way to continue execution? or continuing execution from inside an action handler is not a supported way at all?
the unit test can be downloaded from
http://www.2shared.com/file/2939148/caa56d9d/fork_test.html
anyone has any insight???
regards,
rudi