Maciej Swiderski [
https://community.jboss.org/people/swiderski.maciej] created the
discussion
"Re: jBPM 5.x and OSGI integration/porting"
To view the discussion, visit:
https://community.jboss.org/message/719663#719663
--------------------------------------------------------------
Mauricio, Mdu, great to see that you are interested. Let me start with short introduction
to the project we currently work on. Idea behind is to deliver out of the box flexible
platform like architecture for jBPM and Drools as an alternative the the default
deployment approach. At the moment here are the main high level requirements for the
project:
* ability to version you logic executed by engine (it is all the java code that your
processes, rules and events rely on)
* ability to version your processes, recommended is to utilize repository as default but
they can be packaged together with logic and versioned with the same principles
* ability to version runtime environment, meaning that you can execute on the same server
processes, rules, events that utilizes different version of the jBPM and Drools, most
important in upgrade scenario when moving to the latest version to use the new features
and fixed components/functionality
* isolalation of engine from the client, client does not have to be aware of versioning on
the engine side but at the same time utilize its power
* application server agnostic although JBoss AS 7 is the reference and first and foremost
implementation
I will try to give you overview of what we are up to. There are several core elements of
the platform:
* runtime components - jbpm, drools and its dependency libraries (packaged as JBoss Module
with OSGi descriptors to make it available for OSGi bundles)
* platform components - apis and implementation of the platform that provide comprehensive
functionality to glue all components together (packaged as JBoss Modules with OSGi
descriptors, same as runtime components)
* custom bundle - this is where custom logic code is and where configuration for
ExecutionEngine (this is the main type that clients will interact with), it can have as
well process and rules definitions embedded (pure OSGi bundle)
* client apps - enterprise applications that utilize power of execution engine independent
of its underlying configuration and versioning schema (war, ear, etc)
Short info about of components relationship:
* runtime components will correspond to official version of the projects (5.2 for jBPM for
instance)
* platform components will have apis that are independently versioned and are considered
as very stable and should not change frequently - at least that is the plan;
implementation of apis is bound to runtime components to allow bundles to use particular
version of runtime.
* custom bundles are versioned as regular software artifacts that developers decide on
* client applications are versioned as regular artifacts that developers decide on
Life cycle of the components:
* on application server startup Jboss Modules are started and its OSGI bundle activators
will be invoked* for runtime components there are no bundle activators
* for platform implementation bundle activator registers its execution engine builder in
OSGi service registry so custom bundles can look it up and builds its execution engine
bound to particular version of platform and runtime
* custom bundle, bundle activator will look up execution engine builder to build the
engine and registers it in OSGi service registry for client applications with number of
properties to distinguish it from other engine, for instance version number, or valid
time
* client application will be bound only to platform api and knowledge-api and dynamically
look up execution engine from OSGi registry using resolvers (another platform artifact)
responsible to find proper execution engine for given request
ok, that would be very brief description of what we are doing right now, in couple of days
I can send you link to the repository where we are contributing as soon as some main
interfaces will be defined. Let me know your comments and would be great to hear your
requirements so we can think about them before finalizing conceptual phase.
P.S.
If you are interested to see this working (not exactly this but what delivers similar
result) I can send you a private message with link to basic PoC we have done at the
beginning of this project.
Cheers
--------------------------------------------------------------
Reply to this message by going to Community
[
https://community.jboss.org/message/719663#719663]
Start a new discussion in jBPM at Community
[
https://community.jboss.org/choose-container!input.jspa?contentType=1&...]