Wednesday, August 31, 2016

Activiti 6.0.0.Beta3 released

Today Activiti 6.0.0.Beta3 was released and calling it feature packed doesn't cut it this time. A lot of features have been added and we now are feature complete on an Engine level for the final version 6. We are very aware of the fact that a lot of people are waiting for a final version 6 release. But we also want to make the first version 6 release a high quality product. With this Beta 3 release we are making a big leap towards the final version 6 release, with only issue fixing after community testing, documentation update and improvements and small refactoring of the Angular apps left.

The release plan is to do a release candidate 1 that should be fully feature complete. Based on the community response we'll do a new release candidate release or a final version in short cycles after the release candidate 1. For all people wanting a final version 6 release, you can really help us with doing extensive testing and providing feedback.

The full details of the Beta 3 release:

Highlights

  • Introduction of 2 new engines, a DMN (Decision Model Notation) Rule Engine and a Form Engine. The DMN Engine allows you to create decision tables and get an outcome based on the input values and the rules defined in the decision table. These decision tables can be invoked from a decision rule task in a BPMN definition, but also independently of a process instance. The Form Engine centralises the form logic that was introduced with the new Activiti 6 UI. Forms can be deployed with BPMN process definitions but also separately. A start or task form references a form definition defined in a JSON format with a logical key. The Activiti 6 UI includes the new Rule Engine and Form Engine by default.
  • Ad-hoc sub process support was added, a blog post is available here.
  • The job executor has been refactored. In Activiti 6 there's only one job executor (based on the async executor from Activiti 5. Jobs are now divided into 4 different tables: executable jobs, timer jobs, suspended jobs and deadletter jobs. All jobs in the executable jobs table can be executed as soon as possible. Timer jobs are now stored in a separate table and a thread will look for timer jobs that are due and then the timer jobs due will be moved to the executable jobs table. When a process instance is suspended, the suspended jobs will be moved to the suspended jobs table. And when the retries of a job have been exhausted, the job will be moved to the deadletter jobs table. This refactoring was done mainly to improve the job queries, that were very complicated because it had to take into account due timer jobs, suspended jobs and deadletter jobs. The job query to look for executable jobs is now a lot less complex, because every job in the executable jobs table needs to execute.
  • Implementation of a message queue based Activiti job executor, you can read more about it here.
  • Introduction of transient variables. Transient variables won't be persisted in the Activiti variable tables, but are still available on the execution for the duration of a single transaction. Transient variables can for example be used to store a REST response that is only needed to create a request to another REST service, or to use a Java service task result in the next Java service task without it getting persisted.
  • Introduction of two new experimental performance flags: 'eager execution tree fetching' will fetch a complete execution tree while fetching a part of a process instance, as typically following parts of the tree are needed when continuing a process instance. 'Execution relationship counting' keeps a count of various related objects to an execution and thus removes the need for explicit checking and deleting related objects when an execution is removed (which happens frequently). First performance benchmarks using these flags gave some great results. The flags have been tested against the Activiti test suite and all test pass, but the flags are currently not enabled by default.
  • Introduction of transaction dependent listeners. You can now register a listener which will be executed before commit, after commit or on rollback. The transaction dependent listener is an addition to the already existing execution, task and event listeners and provides more ways to listen to the execution of a process instance in the Activiti Engine.
  • A simple DMN editor has been added to the Activiti 6 UI app.
  • Added terminate multi instance end behaviour: this allows to use an end event that will end all instances of a multi instance.
  • Optimise the compensation activity behaviour and added support for the use of subprocesses as compensation activity.
  • Expose start time and start user id on runtime process instance and executions. Expose claim time on runtime task. Before: only on historical counterpart.
  • Fix the use of database schema's (oracle/postgres) properly (workarounds were needed before).
  • Fix historical data capturing (vs Beta2 especially, but also against certain v5 cases).
  • Lots of refactoring in the Activiti 6 UI app, for example app definitions are now deployed as normal Activiti deployments without separate app definition tables.
  • Lots of improvements to Activiti 6 QA.
  • Various and many small bug fixes all around.

Release remarks

  • The Activiti 6 Engine is now considered feature complete for a final version 6 release and mainly needs community testing and bug fixes when issues are found.
  • A first refactor of the user guide has been completed for version 6, but there's still work left.
  • A lot of changes were made to the Activiti 6 UI app and we expect there will still be breaking changes before the final version 6 release.
  • The DMN and Form Engine are feature complete but there can still be some changes before the final version 6.
  • An Admin application has been added to the Activiti Github project but is not yet included in the Beta 3 release. The Admin application will provide query capabilities on deployments, process instances, tasks, jobs, forms and decision tables. For the final version 6 release the Admin application will be added to the release.

2 comments:

  1. Hi Mauricio, I've moved to the Flowable project (a fork), http://flowable.org
    You can find all the artefacts in the Flowable 6.0.0 RC1 download. The github page is at https://github.com/flowable/flowable-engine

    ReplyDelete