Cafienne Engine Release 1.1.10
Time for small gifts and presents
The big news of November 2020 was the fact that the Cafienne code repositories have opened up in GitHub. We celebrated this in an online session with an interesting presentation from a customer refactoring the core of his software product with Cafienne. One of the important philosophies we have applied and keep applying is to do small and gradual changes to the engine. The need for backwards compatibility is a key driver behind this.
December is a festival season, and this release holds a few nice gimmicks and presents to make life little easier.
Important - upgrading from earlier versions requires configuration changes (more details below)
CaseFile operations enabled
We proudly presented the case file on steroids that came with release 1.1.9. In this release, we have added a mechanism to update the entire case file in a single shot, instead of one case file item at a time.
New APIs for Tenant Administration
The APIs for tenant administration for tenant owners have been revamped a bit.
Changes to single tenant users
- replacing a tenant user is now possible
- when updating a tenant user, ownership and account-enabled/disabled can be updated as well.
/owners
and/account/enable
and/account/disable
have been deprecated
Changes on entire tenant
It is now possible for tenant owners to batch update a set of users in the tenant. Similarly it is now possible to replace all users in the tenant with one API call. In case of replacement of all tenant users in a single shot, the engine will only generate events for actual changes. E.g., if an existing user is in the new list, without real changes, this will not lead to internal engine events.
More CMMN1.1 compliance
In CMMN 1.0 version, documentation for e.g. a task could be passed through a description
attribute in the definition. With CMMN 1.1 this has been replaced with a <cmmn:documentation>
element.
With this new version of the engine, the former description
attribute is automatically converted to a documentation
element.
Note that the Cafienne IDE has also been updated to design the models in a CMMN 1.1 compliant manner. We recommend updating your models by loading them once in the latest Cafienne IDE.
Debugging Events extended
The engine now generates and persists DebugEvents in case of invalid commands. In addition to the response code that is sent back to the client, the internal log messages of the engine may give more information on the cause of the failure. By persisting the DebugEvent even if the command fails, developers can do more and deeper analysis.
Existing Configurations need a change
The OffsetSerializer is no longer in use from this release onwards, and the corresponding configuration settings must be removed.
Below settings must be replaced
serializers {
cafienne_serializer = "org.cafienne.akka.actor.serialization.CafienneSerializer"
# offset_serializer is used to serialize offset snapshots
offset_serializer = "org.cafienne.infrastructure.eventstore.OffsetSerializer"
}
serialization-bindings {
"org.cafienne.akka.actor.serialization.CafienneSerializable" = cafienne_serializer
# Current offsets are WrappedOffset objects
"org.cafienne.infrastructure.eventstore.WrappedOffset" = offset_serializer
}
New settings to be used
serializers {
cafienne_serializer = "org.cafienne.akka.actor.serialization.CafienneSerializer"
}
serialization-bindings {
"org.cafienne.akka.actor.serialization.CafienneSerializable" = cafienne_serializer
}
Housekeeping
- Many underlying dependencies have been updated to the latest versions.
- The build structure of the engine project has been refactored to avoid unnecessary duplications.
- The management of database connections and schemas has been refactored to support the upcoming conversion of the internal timer service persistence.
- Response codes and logging for various types of exceptions have been unified.