I'm interested into implementing a clustered capable workflow system, and started reading the user tutorial of jBPM and also some of the source code to see how the thing works.
I need to support concurrent execution for the actions associated with parallel tokens into process instances (and also for tokens from different process instances). Having into account that I want to run inside a J2EE server, I'm observing the following facts:
1.-CommandExecutorThread is not the way to go for me, because it consumes the messages in a single thread, so, a Task with two simultaneous Tokens is not going to execute the two branches at the same time. I think that with this approach, different tasks are not running actions in parallel neither. The running thread is another problem to deploy it inside a J2EE application server.
2.-Using DbMessageService as MessageService implementation needs the messages to be consumed from a central point. This seems also a not J2EE friendly approach.
So, I think that the most natural way to implement it is to use a JMS message service, and so, implement MDBs to consume those messages and run the required actions, in a similar way CommandExecutorThread is working but only consuming the J2EE provided message.
This will probably be a good starting point to provide clustering capabilities, since the JMS component can be clustered, and we could consume the messages from different J2EE servers.
Do you think this is a right approach? Any comments about this?
I've also seen that there's a org.jbpm.msg.jms package that seems to be an effort to implement just this, a MessageService JMS implementation. But it seems it's under construction (as I can see some TODO comments in the code , and some methods remain unimplemented). I'm I right. Is this an effort to do what I'm trying to do?
Is somebody working into this? Where could I find more information about it?