This document describes the steps needed to upgrade the edoras one application to 2.0.1.
Please stop the edoras one server, perform all upgrade steps described below and then restart the server again at the end.
Java API
As part of our ongoing improvements, we have simplified the internal structure in the work object management
code. Many classes in the abstract domain object and abstract work object layers have been deleted and the
functionality merged into the relevant concrete implementation. For example the DomainObject
class has been
removed and any references replaced by AnyWorkObject
.
As most of this code is internal, there should only be an impact on customer projects that overwrite internal classes or use services that are not part of the public API. Even then, the changes needed are generally straightforward, replacing references to abstract classes or interfaces with the concrete equivalent.
Work object API
Unified update builders
The update builders have been simplified. Instead of separate builder implementations for readable and non-readable update builders only a single update builder type is used, which supports read operations but only incurs the additional overhead of fetching the original work object if this is required.
Code that uses the work object service createReadableUpdateBuilder()
method should use the createUpdateBuilder()
method instead, and replace the resulting ReadableWorkObjectUpdateBuilder
reference with WorkObjectUpdateBuilder
.
No other changes should be required as all methods from the readable variant are supported by the unified update
builder.
Elasticsearch integration API
IndexConfiguration
interface change
The IndexConfiguration
interface in the public API contained two references to the abstract interface
WorkObjectDefinition
. As this interface was removed as part of our internal restructuring, the relevant
methods now accept AnyWorkObjectDefinition
parameters instead. As the interface for these classes is the same,
only the method signature should need to be changed in customer implementations of the IndexConfiguration
interface.
Elasticsearch integration
Index updates
The elasticsearch integration now uses Flowable jobs to manage the update of elasticsearch indices when a transaction is complete. This allows failed indexing operations to be retried before being abandoned, and the failed jobs with information about the missing information will be persisted in the Flowable database tables, allowing appropriate action to be taken to update the index when it is available again.
The new property search.elasticsearch.failed-job-retries
can be used to control the number of attempted retries before
the job is abandoned and moved to the table act_ru_deadletter_job
.
Index refresh interval
The automatic refresh on every index update has also been removed to improve indexing performance, but your indices may
require a settings change to set a refresh interval. If the refresh interval is set to -1
then index updates will
not be visible in the search results.
You can set the refresh interval on existing indices as described in the
Elasticsearch documentation.
You should also update the refresh_interval
setting in templates used by your index configurations to
create new indices.
Removal of Timer Work Objects
We removed the whole synchronization of timers from Flowable to edoras one and therefore all timer related classes
like providers etc. have been removed. The old timer work objects are still available if you need them for any
migration. You can retrieve them with the work object service and with TMR
as work object type.
Model ID upgrade
This release adds information about the models that were used to create user dashboard work items to the underlying work objects. By default this will apply only to work items created from models that were deployed after the release was installed. Existing work objects will not include model information by default and will therefore not be returned in model ID searches.
To migrate existing work objects, please set the property upgrade.model-id.migrate-existing-work-objects
to true
when
upgrading to this release.
this flag only applies the first time the server is started with this release. Setting this flag after the first server start will have no effect. |
Elasticsearch synchronization
The addition of the model ID information during the upgrade takes place in such a way as not to trigger re-indexing of the affected work objects. If you need the model ID information to be indexed as well then please trigger a resynchronisation of the affected indices manually.
Code migration
Any existing code that implements work object lookups by model ID (i.e. via the definitions) can be replaced by
code that uses the new model ID information stored directly on the work objects. The ModelUtils
class provides
helper methods to generate suitable model ID predicates for design-time and runtime model ID lookups.