We have an application that runs jboss BPM without ever persisting the process states to a database. We recently realized that our VM sizes were increasing because of the logging records that are kept in transientinstances in our process instances. The online manual says you can turn off logging by removing the logging line copying the jbpm-context section from default.jboss.cfg.xml to jboss.cfg.xml and by removing the line that includes service name='logging' I'm not sure what that really does. It turns out that this does not actually terminate the logging. Logging Instances are still created and filled with data.
ProcessInstance constructor calls Token.addLog(ProcessLog)
Token.addLog(ProcessLog) calls processInstance.getInstance(LoggingInstance.class)
processInstance.getInstance() always creates a LoggingInstance as a fallback and attaches it to the token
This means that there is always a LoggingInstance() tied to the token so logging always gets captured and hangs around. I don't see any way to not end up with a LoggingInstance.
I couldn't find anywhere that the services as named in jbpm.cfg.xml were looked up and used in our application.
Our temporary solution:
We have a wrapper class that contains a reference to our initial process instance. We now have custom code in it's writeObject() method that walks all of the process instances and removes all log records prior to serializing the process instances.