1) Assuming we have an existing Websphere J2EE application (jsf, spring, seam, etc) that we want to 'BPM enable', can we continue to have this app be the 'UI layer' and interact with jBPM just as a 'service' -- with the existng app re-crafted to call into jBPM (also on the same Websphere server) to do the flow/process control & tracking?
Sure you can do this. jBPM is very lightweight so you can easily embed in you application as any other libraries.
2) How does licensing work, is jBPM 'free to use' -- but if you want support you then start paying?
jBPM is based on Apache Software Licence and if it comes to support you should contact firstname.lastname@example.org for more details about it.
Rather than embedd jBPM in an existing application, is it possible to have it run in its own jvm/app instance -- and hook existing apps into it using web services (or something?)
I have two existing applications that the client isn't keen to rewrite, but wants to orchestrate flows across both; so I was thinking of hooking both into jBPM using web service calls or something similar, to provide updates to the overall flow, while retaining the UI in the original apps.
Then as phase 2 potentially move the UI (forms) up into jBPM, but have it call down into the existing apps service layers to do existing back end transactions, etc
Is this do-able? Realistically? Downside?
So, if I understood your case correctly you would like to have jBPM exposed as a service that will be a middle man for these two systems that could perform operations based on data given from either of these systems, correct? If so, that is definitely doable and in my opinion sounds like a good transition plan.
For simple (string based) invocations you could use jbpm-console-server web app that exposes REST interface with basic engine operations, like start process, signal process, etc but for more advanced interfaces you would need to create your own service layer which I believe is not an issue. Due to jBPM pluggable architecture there are almost no limitations on what you could use (in java world).