Sunday 20 December 2015

Let's talk Business Process Management and Activiti !

Hello People of the Internet!! Please excuse my delay for posting this article and for my absence I had a really tough month!

So before doing my Activiti presentation, I wanted to have professional answers on all the questions that may be asked to me afterword, and of course the first person to go to is the core developer of Activiti: Joram Barrez. It was very nice of him to explain everything, and I would like to thank him again.

Following are the most important points we talked about. Hope it helps you too!


Why work with BPM? And is there a right or wrong way to create and develop Processes?

I'll tell you first how I got into the 'BPM world' before answering more general why BPM.

    I myself kind of 'rolled into' the BPM world by accident. I was working at a consultancy company at the time and got an assignment to look at JBoss jBPM. It took me a while to figure it all out (I was fresh out of school), but eventually I started asking questions on the forum and contributing patches. I still remember that the very first reply to a question I asked was a good old 'RTFM', which was a good way for me of learning how open source worked ;-). But I loved it, it was a completely different way for me on how to think about software. I did some BPM projects following on that, before I was asked to join the jBPM team. Later on, we founded the Activiti project ... and the rest is history :-)

    In general, there are two ways to think about 'why' one would like to do BPM. The first one is from the point of view of the business: the business people want to use BPM software to first of all automate something that wasn't automated before (or it was automated, but they want to change it). You could do that with regular software coding of course, but BPM gives you visibility and insight into what will be implemented and what will happen when the software is executed. The BPM diagram is the main discussion artifact here: the business has a clear view of how the software will work, and has the means to change it 'easily' (although it is never a matter of adding a few boxes and drawing a few arrows, in my opinion, all changes, even in BPM need to be well thought through by both business and technical people. It is very easy to make bad software, even when you use a BPM system. Secondly, a BPM system gives you insight into what has been executed. One of the core goals is to collect and store audit trails, to capture what has been executed and use that data later on to improve your processes.

    From the technical point of view, the main benefit is the process diagram. We all know how hard it is to discuss requirements with business people. Typically, lengthy documents are written (that hardly anyone reads) that should capture the runtime behaviour of the software. We all know that comes with mistakes. It is my belief that by using the process diagram as discussion artifact between technical and business people, a first step is taken to capture and discuss requirements. By using a common medium to talk about the software, using a language that both sides understand, the end result becomes something that both sides know how it works. And with Activiti, we made sure that using such a process diagram and running it at runtime is as close as possible to actual 'regular coding'. Typical BPM systems are black box, and not really fun to use for a developer. Activiti embeds in your code and doesn't get in the way, it allows you to write code just as before, but now with the benefit of having this 'shared medium', the process diagram between business and IT people.

When people take the decision to start managing their Business Processes, the first question that comes to mind, when looking into open source solutions, is "what to choose?". Are there Axes to take into consideration or is there a comparison possible between Activiti, JBPM and Bonita BPM (on Technical level) that helps?

    Take anything I say with a pinch of salt, because I'm obviously biased since I get paid by working on Activiti. I used to work on jBPM 3 and 4 (long time ago), but haven't looked much at the code of jBPM since then (nor Bonitasoft for that matter).

    It seems that we all target the developers as a first-class citizen (although from what I can see from their marketing Bonita seems to be more about 'apps' now).

    jBPM has it's JBoss Drools heritage, which you can see in the API's and in their setup. Also, jBPM is obviously made to run in the first place on JBoss/Wildfly (it does run on others), while we are agnostic when it comes to webservers/application servers. I don't know that much about Bonita, to be honest. So can't give a fair comparison there.

    I guess that's the beauty of open source: you can try them all out, look ath the API's and the code behind it ... before actually deciding. (but obviously Activiti is the best ;-) )

What are the best references to learn Activiti (including coding and integration with other ECM modules solutions) aside from Activiti in Action?

Activit in action is a great resource, but its now a few years old (but still very relevant).

Otherwise, the userguide on activiti.org has a lot of information. Also, the Activiti forum is the place to ask questions when you are stuck, all our team members frequent the forum.

There is also another book on activiti from Packt publishing. But I dont believe its a good starting point.

And lastly, there is my blog (jorambarrez.be), which talks mostly about very detailed Activiti stuff. But for example the spring boot tutorial and videos are a good start too.

So this concerns the GL5/3 who have a final project to work on, I asked Joram about the technologies that work best with Activiti and he recommanded:

Activiti and Esper is a fun combination. I wouldn't go for Vaadin these days, but rather for a full javascript framework. We are big fans of AngularJs. Our new UI's are all written in it and we found it really easy for java people to pick up.

If you really want to use the coolest tech of the moment, I'd use Spring Boot for the backend and Rest layer. We have excellent integration with it too. There is a blog I did a year ago I think that is like a first tutorial.

If you have more questions or you want some more clarifications feel free to post them on the User Forum.



1 comment

© It's CHAYMA
Maira Gall