I've spent some time trying to figure out how to communicate with remote processes, however I need an advice from more experienced devs, how to fulfill following requirements with jBPM 5:
There is OSGI container, let's call it A.
There is JBoss EE container (different JVM, possibly different machine). It contains setup identical to jbpm demo setup. Lets call it B.
In short: I want to be able to manage processes automatically by A (start, stop, signal), while jbpm engine resided either on A or B.
- I want to have functionality as in jbpm demo setup (that is - all UI consoles working ant integrated with Guvnor repository).
- I want to be able to see process definitions in jbpm in Guvnor repository console. (it is possible in default setup).
- I want to be able to see processes in jbpm console started in gwt console. (it is possible in default setup).
- I want to be able to see process instances in gwt console initiated (started) by some remote JVM's with some data as initial context (OSGI environment specifically). (Not possible with REST services - no way to specify initial data)
- I want to be able to signal processes WITH DATA from remote JVM's. Initiating party must be in OSGI container (Karaf) but outside of JBoss container (I cannot overcome this contraint, non-technical one). (Not possible with REST services - no way to specify signal data)
I do not care where actually is jbpm console, jbpm task service, drools and jbpm engines are really deployed, but I prefer to stay in JBoss because it's probably most tested deployment.
What are my options to acomplish this? I can think of:
a) extend gwt-console-server with additional REST services which can start/signal processes with data and continue using REST services.
b) Try to deploy jbpm console client and server on Karaf, hope to be able to attach to the same KnowledgeBase sessions as used by jbpm console (by OSGI wiring) - and manage them from there.
c) Maybe there's a way to make signals by loading statefull session and performing signals (but I guess I would simple restore process state and it would continue to run on invocation side with process running in parralel on original container)?
d) Maybe there's a way to force jbpm to publish process management (engine or session) to JNDI, and access sessions it from remote?
What are my options? What is the easiest option?