building the config tool i realized that i didn't fully tackled the problem. users are still confronted with all the jbpm configuration files. and this will be a pain when we want to update configuration stuff in subsequent versions.
The original goal motivation for building the config tool was to offer a basic set of configuration options. Only the configurations that are changeable by our users.
These are the configuration properties that the config tool takes as input:
database=hsqldb cache=hashtable connection.type=jdbc deployment.type=standalone hibernate.session=default jpdl=include identity=include format.sql=include log.cfg=logging.properties
Bindings in our parsing are easy to customize. But most of these user-changeable properties impacts various contexts in the jbpm config file. For example, to include the identity, we need to add some parts to the process engine context and some parts to the transaction context.
<jbpm-configuration> <process-engine-context> <identity-service /> <identity-session-factory resource="jbpm.identity.cfg.xml" /> ... </process-engine-context> <transaction-context> <identity-session /> ... </transaction-context> </jbpm-configuration>
In the next step of configuration i would like to achieve 2 goals:
* create a jbpm.cfg.xml that reflects the properties that we want to expose for support users to change
* avoid default configurations in the jbpm.cfg.xml so that it becomes easier to update configurations later on.
I think this is possible with following approach
1) adding import of jbpm.cfg.xml files
2) provide a lot of default configuration files in the jbpm jars.
For example with imports we a user would have to configure the identity component like this:
<jbpm-configuration> <import resource="jbpm.identity.buildin.cfg.xml" /> ... </jbpm-configuration>
<jbpm-configuration> <import resource="jbpm.identity.jboss.idm.cfg.xml" /> ... </jbpm-configuration>
and the refered files like
<jbpm-configuration> <process-engine-context> <identity-service /> <identity-session-factory resource="jbpm.identity.cfg.xml" /> </process-engine-context> <transaction-context> <identity-session /> </transaction-context> </jbpm-configuration>
can then be provided in the jars we ship.