Friday, July 31, 2015

Activiti 5.18.0 released

Today we have released Activiti 5.18.0! We are really happy to provide the new bulk insert and other improvements to the Activiti Engine starting from today. 

This release took a bit longer than expected because we have been working on Activiti 6 in parallel. We announced Activiti 6 on our well attended Paris community event. We expect to ship an alpha release of Activiti 6 at the end of August.

You can also expect a new release of our Activiti Designer in the next couple of weeks. 

So what's new in Activiti 5.18.0?



  • We enhanced the OR query support, it's now possible to use multiple OR parts in one query
  • Improvements to the async executor we introduced in Activiti 5.17.0. There were some cases that could result in deadlock exceptions and that's resolved in this version.
  • Improvements to the Activiti Modeler with terminate end events, cancel event and transaction support, and more intermediate catch and throw event support. Also, improvements to interrupting and non-interrupting solid and dashed line for boundary events.
  • Upgraded Spring dependency version to 4.1. Activiti is still working with Spring 4.0.x and 3.x as well.
  • Various bug fixes
For more information you can read the release notes.

Enjoy the release.


Tuesday, April 7, 2015

Activiti JIRA moved to Atlassian Cloud

As you might have seen, Codehaus is shutting down. Since we heard about this we have been looking for the best alternative solution for the Activiti issues. Because we wanted to keep the existing issues as much as possible, an hosted JIRA solution made the most sense. Atlassian is offering a free hosted JIRA instance for open source projects and we are grateful that our application for an Activiti JIRA instance got approved.

Since export options are limited on Codehaus we are not able to migrate all data associated with each issue. For example, attachments and comments are not exported. If you could help us to add attachments and important comments back again that would be a great help.

You can find our new JIRA system on https://activiti.atlassian.net. You need to create a new account before you can access the Activiti JIRA. All issues should still have the same key so it should be easy to find your old issues again. Reporter information has been migrated to the new JIRA, but only as reference information and therefore it won't be coupled to your account by default.

Performing such a migration always means we lose some information and it's a painful process for every user involved. But sadly we didn't have much choice. I hope everyone will create a new user account and will help us to get important issues updated with the correct information as much as possible.

Thursday, December 18, 2014

Activiti 5.17.0 released

I'm happy to announce the immediate availability of Activiti 5.17.0. This release contains the following highlights:
  • We introduced a fully tested and brand new Async executor, which supersedes the old Job executor. The new Async executor uses less database queries to execute asynchronous jobs and is more performant in general. By default the Activiti Engine still uses the old Job executor, so you have to explicitly choose for the new Async executor by setting the asyncExecutorEnabled property in the process engine configuration.For more details you can look at the advanced section of the user guide.
  • The Activiti Modeler is fully revised and is implemented using Angular JS. This is donated from the Alfresco Activiti BPMN editor that's part of the Alfresco Activiti Enterprise offering. The new Angular JS Activiti Modeler is LGPL licensed.  Note that some dialogs are not yet ported to the new Activiti Modeler, but you'll also find quite a bit of new functionality, including Mule and Camel tasks and being able to define a sequence flow order for an exclusive gateway. Any help with adding new features is really appreciated.
  • The user guide has been revamped with a rewrite to AsciiDoc
  • It's now possible to start a process instance a skip tasks based on a skipExpression. This is very handy when you are migrating process instances to the Activiti Engine (thanks to Robert Hafner for the pull request).
  • We added a new module named activiti-jmx to the Activiti project, which enables JMX for the Activiti Engine. Read Saeids blog for more details (thanks Saeid).
  • Variable fetching has been optimized for process instances and executions in general.</li>
  • The database upgrade scripts use a different minor version than the JAR version. With the 5.17.0 release, the database version is 5.17.0.2. This versioning enables us to release snapshots and still be able to upgrade from a snapshot release to a stable release. For a 5.17.1 release the database version will be 5.17.1.x where x can be any number. So only the last minor version number can differ from the Activiti Engine release version.</li>

Thanks to all community members for their contributions to the Activiti project in the last months, and especially Robert Hafner and Saeid Mirzaei. Enjoy the new release!

Friday, October 17, 2014

Activiti 5.16.4 released

We've released Activiti 5.16.4 and that includes bug fixes, but also 2 bigger features.

We've introduced a new lock free job executor that improves the scalability of the job execution with magnitudes. You can read more about the new job executor here https://github.com/Activiti/Activiti/wiki/Notes-on-the-new-Actviti-Jobexecutor-(Oct-2014).
Note that the default job executor is still the old job executor, so you need to explicitly enable it before it will be used. The new job executor only supports non-exclusive jobs right now. Exclusive job and suspended process instance support will be added in the next Activiti release.

Another change is the move from the Restlet framework to the Spring MVC framework for the REST services implementation. The REST API urls haven't changed though, so all REST clients should still be working ok. We did remove the deprecated legacy REST services though. Let us know if you run into issues due to this removal, but all data should be available through the other REST services. A benefit of moving to Spring MVC is the integration with Spring Security, so it's easier to configure authentication. Also, we'll be introducing an Activiti Spring boot module in the next Activiti release, which makes it easy to add Activiti to a Spring boot application. You can already see more info here http://www.jorambarrez.be/blog/2014/09/29/webinar-on-youtube/ .

You can get the new release via Maven central, the download page on the Activiti website, and our Activiti Github repository. Enjoy!

Friday, August 15, 2014

Activiti 5.16.1 released

Today we released Activiti 5.16.1. This is mainly a bug fix release for Activiti 5.16 and doesn't include any database changes other than the usual version update in the property table.

Although it's a bug fix release, we've added a nice new query capability for process instances and tasks, an OR statement. Now you can query for process instances and tasks using one chain of OR statements using our query API. It can be used like this:

runtimeService.createProcessInstanceQuery()
     .or().processDefinitionKey("test").processDefinitionName("Test").endOr().list();

But you can of course also mix with AND statements like:

taskService.createTaskQuery().taskNameLike('%Test%')
     .or().taskOwner('kermit').taskAssignee('kermit').endOr().list();

This will result in a query like:

WHERE task.name like '%Test%' AND (task.owner = 'kermit' OR task.assignee = 'kermit')

Current limitations of the or construct are:
  1. You can use only one chain of OR statements right now. So you can't use the or and endOr methods more than once.
  2. You can use a specific field only once in an OR statement, so you can't use processDefinitionId twice in an OR statement for example. Only the second value will be used in that case.

We welcome any feedback and suggestions on this new query API option. If we get positive feedback, it will be added to more query APIs for the next release. Enjoy!

Wednesday, July 23, 2014

Activiti 5.16 released

I'm happy to announce the immediate availability of Activiti 5.16. This release contains the following highlights:
  • Added Spring boot support and more Spring annotation support in general (thanks to Josh Long)
  • Refactoring of the job executor to simplify its logic and prevent possible long wait times.
  • Added new event log table that stores process engine events when wanted, by default this is switched off.
  • Introduced asynchronous parallel and inclusive gateways to prevent optimistic locking exceptions (http://bpmn20inaction.blogspot.nl/2014/07/activiti-516-feature-preview.html)
  • Introduction of Crystalball, which is an experimental new project that allows you to replay and simulate process instances (Thanks to Martin)
  • Upgraded to Spring 4.x and Restlet 2.2.x
  • Various fixes and improvements
Thanks to community members Martin Grofcik, Henry Yan and Lori Small for their contributions to the Activiti project in the last months. Enjoy the new release!

Wednesday, July 16, 2014

Activiti 5.16 feature preview - async parallel/inclusive gateways

This article will go into details about one of the new features of the upcoming Activiti 5.16 release, parallel behaviour. In 2012 I've written a blog post about this and still a lot of people refer to it in forum posts or emails. This blog post describes how to solve possible optimistic locking exceptions when working with parallel and inclusive gateways in Activiti, using Apache Camel.

It's not really elegant to force using another framework to solve a potential issue with process execution, even if it's a great framework like Apache Camel. That's why we've implemented an easier solution in Activiti, that will be part of version 5.16. Let's describe the potential issue shortly, before showing the new feature/solution.

When you have two long running tasks you want to run in parallel, Activiti provides asynchronous service tasks to make this possible. With the default synchronous service tasks, Activiti would wait until task 1 is completed and then execute task 2. By making the service tasks asynchronous both tasks can be executed in parallel. The optimistic locking issue will appear when task 1 and 2 are completed at almost the same time. Both tasks will enter the second parallel join gateway and will try to update the current execution. Only 1 task will be successful in performing this action and the second task will get a optimistic locking exception.

With Activiti 5.16 it will be possible to make the second parallel join gateway (and also an inclusive gateway if you're using that gateway type) asynchronous as well. When you define the parallel gateway as an asynchronous and exclusive gateway no optimistic locking exception will occur anymore.


<parallelGateway id="gateway2" activiti:async="true"       
    activiti:exclusive="true" />

So it's really simple now to deal with these kind of parallel behaviour issues and no Apache Camel route is needed anymore to solve it. 

More good stuff is coming in Activiti 5.16. We expect to release it next week.