Author: Tijs Rademakers
Today we released a new version of Flowable with the 6.1.1 release.
The 6.1.1 release has the following highlights:
- Introduction of audit history in the DMN Engine. When history is enabled in the DMN Engine, an audit log of each decision execution is stored in the DMN database. By default the history is disabled.
- Replaced the MVEL expression language in the DMN Engine with the same JUEL expression language as used in the BPMN and Form Engine.
- Refactored DmnRuleService with new ExecuteDecisionBuilder and deprecated old execute decision methods.
- Call activity: allow to set output parameters a local variables for multi instance executions.
- Easier usage of async history in combination with a message queue (see https://github.com/flowable/flowable-examples/tree/master/async-history)
- Performance improvement: introduce grouping and compression for async history data.
- Various small bugfixes all around.
- Faizal Abdul Manan (faizal-manan)
- David Malkovsky (dbmalkovsky)
- Harsha Teja Kanna (h7kanna)
- Lori Small (lsmall)
CommandContext and related classes package changes:
As a result of a refactoring that involved consolidating various classes and moving them to the flowable-engine-common module, following internal classes have changed packages.
The following applies to all engines (process, dmn, form, content and idm):
- The CommandContext class is now in the org.flowable.engine.common.impl.interceptorpackage.
- The various getter methods on the CommandContext that gave quick-access to various internal components are removed (because the CommandContext is now shared between all engines). All engines now have a CommandContextUtil class that should be used instead and which has said getter methods. The org.flowable.engine.impl.context.Context utlity class in the process engine is still there for backwards compatibility and can be used as before, but simply delegates to the CommandContextUtil methods.
- The classes related to the command stack interceptors (Command, CommandContextInterceptor, CommandExecutor, Log/Jta/RetryInterceptor) are now in the org.flowable.engine.common.impl.interceptor package.
- The DbSqlSession and DbSqlSessionFactory classes are now found in the org.flowable.engine.common.impl.db package.
- Database schema management logic has moved from the DbSqlSession class to implementations of the org.flowable.engine.common.impl.db.DbSchemaManagerinterface.
- The GenericManagerFactory class is now in the org.flowable.engine.common.impl.persistence package.
The process engine now has the org.flowable.engine.impl.util.EngineServiceUtil utility class that can be used to get easily access to the configuration and services of the other engines.
FlowableCancelledEvent.getCause() return value change
The value that’s passed in the cause of a org.flowable.engine.delegate.event.FlowableCancelledEvent has changed in the following cases:
- The event that is thrown for activities cancelled by a message boundary event.
- The event that is thrown for activities cancelled by a signal boundary event.
- The event that is thrown for activities cancelled by a timer boundary event.
Instead of passing an entity instance (MessageEventSubscriptionEntity, SignalEventSubscriptionEntity or JobEntity respectively) the BpmnModel counterpart, as an instance of a subclass of org.flowable.bpmn.model.FlowElement, is passed instead which is consistent with the general value of the cause property. Do note that due to the fact the return type of getCause() is Object, the compiler will not notice this, so best to look at the usage of the FlowableCancelledEvent in your code.