jBPM5 vs Activiti5? dumb question?

Come on guys/girls/CTOs/CEO/Architects/Developers! there is no battle between jBPM5 and Activiti5. If you are here because you are looking for the right option, I will give you some recommendations to choose one rather than the other. I will not make a detailed comparison between features, instead I will make a more project to project overall comparison (Write me back if you want a feature to feature comparison). I’m not a Red Hat / JBoss or Alfresco employee, so I will express my personal opinion about these two projects and why I decide to write and participate in jBPM5/Drools as a community member.
In this post I will highlight some points about these two projects. However the conclusion is that you can choose either jBPM5 or Activiti5 and they will improve and change the way that you are used to developing applications.

The main similarities between this two projects are:

  • BPMN2 process modeling and execution environment
  • They are both BPM Systems (implementing the BPM discipline)
  • Open Source – ASL (Apache Software Licence)ed
  • Both were originally developed by JBoss (it’s not a secret that Activiti5 is jBPM4 design and jBPM5 is Drools Flow code base)
  • Maturity, both were written from the scratch and both started about 2 years and a half ago.
  • Human Task Life Cycle Management. The only difference between jBPM5 and Activiti5 is that jBPM5 implements the WebService-HumanTask standard to describe the Human Task Management Life Cycle. If you are interested to know about this standard and the advantages of adopting it, you can read the introduction chapter of the WS-HT specification here.
  • Both projects uses different flavors of the  Oryx editor for modeling BPMN2 processes. jBPM 5 uses a fork for the Open Source project maintained by Intalio. Activiti5 used a different branch maintained by Signavio.

Now, which are the main differences between them?

  • The companies / The business model
  • The project leaders / Community
  • The goals of the projects
  • Future / which one should I choose?

Based on these four points and on your personal/company requirements, you can make a long-term decision about which is the best project for you to adopt.

Disclaimer: if you are a java developer learning new technologies, doing your first applications or trying to understand a BPMS, you can take advantage of this comparison. It’s important to notice that knowing both projects will help you to improve your skills, learn best practices, architectural designs, a new way of developing applications, a cool discipline and a bunch of cool stuff. Go ahead and pick one, when you learn the concepts behind one of them, in order to adopt the other, you have to learn a new API, adapt some concepts and learn wider ones.

The companies / the business behind the projects

Both projects are distributed under the ASL (Apache Software License), from the licensing perspective it is exactly the same. You can use both of them without restrictions. Once again, if you are a developer learning something new, both of them will fit perfectly. If you don’t have too much BPM expertise, both of them will look alike.

My community perception about Red Hat and, as far as I know, the Red Hat/JBoss business is about services, the money comes from selling services and support. If you are thinking about spending your money on Red Hat, you can buy support for the SOA Platform Stack. However, until now you cannot buy support strictly for jBPM. This is probably a great advantage, which means that if you buy support from Red Hat, you will get support for the full stack of middleware. Red Hat is specialized in providing that service.

I worked with Alfresco’s CMS and understood how its community works and the business around CMS, but I’m still confused about their business plans for Activiti5. As a company, they can embed the Activiti5 runtime inside the CMS project as they did with jBPM3, or they can sell services about the BPM System solution.  In the official web page(www.activiti.org), they don’t mention anything about Alfresco selling Activiti5 services. I’m not sure if Alfresco is planning to provide them in the near future.

The project leaders and the community

It’s well known that all the community members who know JBPM4.x history move to Activiti5 based on the similarity of the code base and configurations. So the jBPM 4.x community is the same as in Activiti5.

New adopters are asking a lot of questions about jBPM5 and Activiti5.

The jBPM5 community will be probably populated by jBPM 3.x users that want to have the official support from Red Hat/JBoss plus the new ones that understand the great advantages of using a BPM System on top of a Rule Engine. The Drools Flow community and those who use  it, can easily migrate their application to use the new jBPM5 dependencies. Community migration efforts are already being done and a tool for migration is being developed for those jBPM 3.x users.

You can find some useful links about jBPM5 here:

http://blog.athico.com/2011/01/recent-jbpm-5-blogs-articles-videos-and.html

Please feel free to write me back if you have a specific topic or a set of topics that you want to read about. I really enjoy writing about jBPM5 and Drools, but comparisons are fun too!

Right now, jBPM5 is an independent project separated from Drools but highly integrated with the rule engine. The project leader, Kris Verlaenen, is doing a great job trying to get a first stable release at the end of this month.
On the Activiti5 side both Tom Baeyens and Joram Barrez are doing an excellent job trying to get attention and adoption from their re-branded BPMS.

*add whatever you want here 🙂

Project’s Goals

As far as I know, they have very different perspectives and goals. The Activiti5 team is fighting for adoption, while the jBPM5 team is struggling for improving concepts, giving us a new twist, great features and flexibility.

There is no way to say that one is better than the other when they have different goals in their roadmaps. If you are fighting for adoption, you will focus on conferences, tooling and integration. The project roadmap for adoption has short period releases and stable deliverables.

If your project roadmap includes features that were never developed, long period releases will probably be required. From my point of view Drools Flow was an innovative project built from the scratch to show that the interaction between a rule engine with a BPMS gives richer features and a great degree of flexibility to model real situations.

Right now, jBPM5 is a more ordinary project. A lot of the work that is being done now is about  tooling and demos to show common usage. jBPM5 will look very good in the next few months, after the first stable release.

Future / Which one should I choose?

There is no simple answer. If you are looking for a simple lightweight BPMS both are good. If this is your first experience with a BPMS, no matter what you choose, you will be happy and you will have trouble with both.

If you want to join a community to contribute to these projects both are good. I can’t give an opinion about the Alfresco community, because I’m not so involved but it looks like an active community. From the jBPM5 perspective you will find a pretty active community as well. Right now, as a result of mixing Drools and jBPM3 communities, you will see strong activity in the Forums and in the IRC channel.

The important question here that you may ask to yourself is:

Am I choosing a BPMS for the next couple of years or is it just for a little project?
If the answer of this question is:

  • I’m just starting OR I will create a simple web app that shows the basic features OR the application will not be used by a large amount of users OR the application will not be critical for the organization OR we don’t have complex business processes and we don’t have complex business situations, both projects will work well.
  • I need to build a middle-sized application that uses business process extensively, this business processes are not so complex (no more than 20 activities each, without too much exceptional branches) and the application is not critical for the company, both projects will work well.
  • I need to build a new architecture that gives me the ultimate flexibility to express complex/ real life business scenarios AND I understand the power of a Rule Engine AND I understand the advantages of using it in conjunction with a BPMS (handling in an unified way my business logic and my business processes, using the same APIs, being as declarative as possible), you really need to try jBPM5!  This is not the common case, usually only advanced users that already developed more than one BPM application, notice this kind of advantages. If you don’t know how to leverage the power of a rule engine, both projects will give you the same amount of features. If you analyze the common features of a BPMS, there is no clear advantage between both projects. When you start to understand the power and advantages of the Rule Engine or when you really need a Rule Engine working together with a BPMS,x you clearly know what to choose for the next two years.

Conclusion

As I mention in the post introduction:
You can choose jBPM5 or Activiti5, both will teach you and let you implement the BPM discipline main stages. Both are Open Source and ASL licenced.
If you are not only thinking in adopting a new technology and you already face some BPM implementation with jBPM3/jBPM4 or the old OSWorkflow you probably notice and know the advantages of using a Rule Engine in conjunction with the BPMS. If you are at that point please take a look at jBPM5 and the Drools integration, you will probably be amazed. If you want to take a look at a running application designed using the concept of Rule Engine and BPMS together you can take a look at the following posts. Notice that Drools + jBPM5 offers you a full platform for declarative application programming.  Adding important features like the advantages of a CEP engine(Drools Fusion) and a Centralized Repository for all your business assets (Drools Guvnor).

Advertisements

108 thoughts on “jBPM5 vs Activiti5? dumb question?”

  1. Well thought out comparison and overview. I think there is a subtle difference in the two projects, one is targeting embedding and filling a process engine architectural requirement, the other is filling an architectural layer in your organization.

    Business Process Management (BPM) vs Business Enterprise Logic Layer (BELL)

    They both have a long ways to go, but for FOSS it is good to see the functionality and reach expanding into the enterprise.

    Like

  2. Hi Eric, first of all thanks for reading.
    I totally agree with your opinion except that the different is not subtle. I don’t know anyone that understand that difference and choose for a long term adoption the solution that it’s not the one with a wider enterprise focus. I understand that it’s easier to understand just the BPM layer, but when you make a decision for a long period of time you must do a good research in order to choose wisely.
    Greetings.

    Like

  3. Hi,

    Your article explains the differences and similarities between Activiti and jBPM5. As I understand it you haven’t found a lot of differences. When you look more closer at the two projects I do think that there are some differences:

    1. Activiti has a very broad set of partners including SpringSource, MuleSource and FuseSource. This brings a lot of functionality to Activiti including OSGi support, Camel integration, Spring integration and web service and Mule support. I don’t see that activity around jBPM.
    2. Activiti brings a wider toolset: the Activiti Explorer, Probe, Modeler, Cycle, Designer and Kickstart.
    3. There is a lot of confusion surrounding the jBPM project now that the only Red Hat supported version is still version 3. Version 4 was and never will be supported and with version 5 the fusion with the Drools project brings a lot of integration issues and questions to the picture which makes it very hard to have a stable version in the coming months.
    Activiti is build from the ground up with a great database model, API and architecture and is stable already.

    @Eric I really don’t understand your point about embedded vs filling an architectural layer in your organization. Right, Activiti will be used as an embedded process engine in Alfresco, but as you know jBPM is used for the very same purpose in the current version of Alfresco. So when you look at it, Alfresco is just replacing jBPM with Activiti. As Activiti provides a REST API in addition to the Java API and Spring integration, there are plenty of options to use Activiti in enterprise environments. That could not be said of jBPM (at least 3 and 4), because there was no remoting API available.

    Best regards,

    Tijs Rademakers
    Lead developer Activiti Designer
    Author of Activiti in Action –> http://www.manning.com/rademakers2

    Like

  4. Hi Tijs,
    First of all thanks for reading, now with your comment I have Red Hat and Alfresco guys into the discussion! 🙂
    Let me add some extra comments about your points:
    1) In the first point you mix Partners with Features, and I can only talk about features, because I’m not sure if Red Hat has partners like Alfresco does. So, if you want to talk about Features, the following list also apply to jBPM5:
    – Spring -> Done and Working! https://github.com/droolsjbpm/droolsjbpm/tree/master/drools-container/drools-spring

    – Mule -> Done, both jBPM and Drools http://svn.codehaus.org/mule/branches/mule-3.x/modules/jbpm/ , http://svn.codehaus.org/mule/branches/mule-3.x/modules/drools/

    – OSGI -> Done, for both jBPM and Drools https://github.com/droolsjbpm/droolsjbpm/tree/master/osgi-bundles

    – Camel -> Done, https://github.com/droolsjbpm/droolsjbpm/tree/master/drools-camel

    You help me to prove that if a developer wants to use a BPM engine can choose one, and the functionality provided by the other project will be more or less the same. I’m not fighting here, I’m just want to show people that both projects can be used for the same environments.

    2 and 3) About tooling I have more questions than comments:
    a) can you share the location of the Signavio’s designer source code? I would like to understand the differences between the Signavio’s version and the Intalio branch that is currently using jBPM5. If both projects are distributed under ASL license, we as community wants to see the source code and at least know the features provided by both of them. If you can give me light on this I will really appreciate that.
    b) You mention that the project itself has more tooling that jBPM5, that’s totally true and it’s pretty cool to see that a company is putting money in order to create really good tooling, but: All this tooling is recently build right? all the tooling is not in version 5, it’s more like version 1 for all the UIs. As always the first versions of the tooling only provide an initial set of features, and usually when money is involved the features selected are just for marketing purposes (I’m not saying that it’s wrong). You cannot say that the tooling is mature enough as the jBPM 4.x code base that takes a lot of time to write, right? Once again, I’m just asking here.. with no intentions to fight. By the way, if are both Open Source Projects, both tooling can be easily shared between projects, making jBPM5 having the same tooling than Activity5. I need to recognize, you just give me a great idea about cloning repositories and make all the Activiti5 tooling available for the jBPM5 runtime environment :), Thanks for that!
    c) you mention project stability and supported version and as I mentioned my blog post, can you clarify the Alfresco’s business model around Activiti5? are you guys providing Enterprise support for Activiti5? in your answer you make it look as Alfresco will never want to provide support for Activiti5, because it’s main business model is around the CMS (that for me makes perfect sense). When you mention that Activiti5 it’s being used for the same purpose of jBPM3.x you confuse me more, you mean that Activiti5 has no more new features that the one provided by jBPM3.x? What are the extra features that Alfresco CMS will use from Activiti5 that previous versions didn’t provide?

    About the answer to @Eric comment, once again, you just help me to make my point. In my reply to Eric I said:
    “I don’t know anyone that understand that difference (between using a BPMS and a BPMS + Rule Engine + CEP) and choose for a long term adoption the solution that it’s not the one with a wider enterprise focus.” What Eric, My Post and I were trying to say is that for a BPMS solution both projects can give a large amount of features, but if you look forward (this is not about if you can embed or use a BPMS as a system) and you want to use a Rule Engine, a Centralized repository for managing your processes and rules and you add the fact that the BPMS will run on top of the Rule Engine, you get an enormous set of benefits in functionality and also at Enterprise Level solution (not just a Business Process Management solution). With just the possibility of doing inferences over your business processes you get a Smarter BPMS.

    Good to know that you are writing an Activiti5 book, congrats for that. I’m also writing a jBPM5 Developer Guide and I hope to get it out soon to be able to write more blog posts for the community audience. 🙂

    I hope to get your feedback about my questions,
    Greetings!

    Like

    1. Hello, great discussions here. I am very glad that I found your forum where I can understand the differences between the competing projects. We are still in dimemma of how to proceed – jbpm5 or activiti or abandon the open source model at all and go with someone like Oracle.

      We are trying to integrate a j2ee application with jbpm5, but we are getting so many errors, and this does not work the same way the example “hello world” flow works. Salaboy’s book is more for jbpm3. Where can I get real help for jbpm5?

      The jboss communities is of some help, but not really helping us to resolve the issues. Sometimew I am not sure whether open source is a right choice for these reasons.

      I would appreciate any pointers where we can really see some solutions to the problems we are facing.

      Thanks,
      R

      Like

      1. Hi Ravi,
        Thanks for commenting here. Reading your comments about open source I was thinking that you probably misunderstood something, at least in my perspective. If you are having troubles with jBPM5 we are here to help, and usually with open source projects you can also switch to the “Oracle” approach paying the community members to help you on the adoption of these new technologies. Using this approach you will pay only for what you need and you will not be tied under any particular contract. What you get from community projects is the flexibility and innovation to solve your problems better and the possibility of integrate with your current solutions. But you need to remember open source != free.

        DId you check the jBPM forums and mailing lists? we usually try to answer as much as we can and we are all giving consultancy and trainings. Most of the time the problems and errors comes with the misunderstood of background topics like in this case BPM and Rule Engines.

        I’m trying to finish the second version of the jBPM book now completely focused on jBPM5 so stay tuned.

        Cheers

        Like

    2. Hi Salaboy,

      path you provided for Mule – jBPM integration refers to jBPM 4! Which is closer to Activiti 5 than to jBPM 5.
      So still, as far as I know there doesn’t exist any integration between Mule and jBPM 5.
      Thanks.

      Like

      1. Yes, there is, and that’s the cool thing about having the Rule Engine and the Process engine together.. You just need one integration point. If they integrate with Drools, jBPM5 comes for free 🙂

        Like

  5. Hi Mauricio,

    Thanks for your detailed response. First off I’m no Alfresco employee, I’m a Activiti community member and the author for the Activiti in Action book. Second, I’m a big fan of open source projects in general and both jBPM as well as Activiti are great projects. Although I’m a bigger fan of Activiti 😉

    First let me respond to your responses:
    1. I really meant the community and partner part of Activiti instead of focusing on features. I was not referring to these companies as partners of Alfresco, they are part of the Activiti community. So without any financial agreements these companies are helping the Activiti community to make a better BPM product, of course with mutual benefits. I don’t see these kind of involvement from companies like SpringSource, MuleSource and FuseSource around the jBPM project.
    2a You are absolutely right that the Signavia modeler contribution is a bit vague. You can find more information about the source repository and the build procedure at the Activiti Wiki http://docs.codehaus.org/display/ACT/How+to+build+Activiti+Modeler+from+Signavio. Both jBPM as well as Activiti provide a web based modeler based on the Signavio open source code base. So not a lot of differences there. What differs is that Activiti provides integration with the Cycle and Designer tools. Starting with the february 1st release of Activiti you can import a model from the Activiti modeler / Signavio modeler to the Activiti Designer.
    2b I agree with you that some tools of Activiti need more functionality to call them really mature. So Activiti Probe needs more reporting functionality, we will a lot of new functionality in Cycle in the coming months and the Designer will also be expanded. But yes I can without any doubt say that the Activiti Engine is a robust, mature and production ready BPM engine. With the work of the Activiti core team (Tom, Joram and Frederik) and their profound knowledge and experience they built a fully new engine that’s rock solid. Activiti Explorer is a very nice tool to do workflow management (although most companies will built their own application) and Activiti Kickstart shows a innovative and easy way to do business process modeling without the need for technical knowledge. Of course both projects can benefit from each other as they are ASL licensed.
    2c As you know I’m no Alfresco employee, so I just express my peronal views and opinions. Activiti is an independent project funded by Alfresco. The short term focus for Alfresco is to use the Activiti engine in their CMS system. So it will replace jBPM as its workflow engine. For the longer term I would expect that Alfresco will provide a broader business model behind Activiti and maybe also become a BPM player. But this is not something that you can do in a few weeks, so a lot of investigation, market analysis etc is needed. But you can expect that something will be started in this area. At this moment Camunda and Atos Origin (the company I work for) are providing support, training and consultancy for Activiti.

    About my response to Eric’s post I don’t agree that there is a real difference between jBPM and Activiti from an enterprise perspective. I do think that the REST api of Activiti is a real benefit. And right the mixture of processes and rules bring great potential. But even there I see no real difference other than the tighter integration between jBPM and Drools from a project level. It’s clear that the Drools engine is the best open source rule engine. So also Activiti will support the Drools engine as you already mentioned in one of your tweets. A difference may be that Activiti will provide another web interface on top of the Drools engine, in addition to Guvnor.

    I think that there are differences between Activiti and jBPM, but that just brings more choice for developers looking for an open source process engine. An idea I was thinking about is that we work out a couple of processes with jBPM and Activiti. In that way we can show the similarities and differences between Activiti and jBPM with plain source code. I think this can help developers with making a choice between both projects. Since we are both writing a book I think we are very capable of taking on this exercise. How would you think about this?

    Best regards,

    Tijs Rademakers
    Lead developer Activiti Designer
    Author of Activiti in Action –> http://www.manning.com/rademakers2

    Like

    1. Hi Tijs,
      I agree with most of points that you mention, and as I imagine this conversion will probably become recursive in the topics (that’s why in my original post I didn’t mention features, “partners”, etc). It’s good to know that this is just a “fans” conversation and not company related stuff.
      I notice that we are both agree on Drools(“It’s clear that the Drools engine is the best open source rule engine”) and the Community vision, that’s a big step forward and also “And right the mixture of processes and rules bring great potential.” But the most important in my perspective: “Of course both projects can benefit from each other as they are ASL licensed.”, will help us to show that both projects can provide the same features if the UI’s are shared. The whole point behind my blog post was to mention that jBPM5 and Activiti provides the same features and the advantages from jBPM5 are the one related with the tighter integration with the Rule Engine as you mention: “But even there I see no real difference other than the tighter integration between jBPM and Drools from a project level.” .

      I agree with creating plain code samples, and make them both run with Alfresco’s UIs doing a refactoring in all your tooling backend code. I can say without doubt that jBPM5 has all the features required to run with the Activiti’s UIs. As a second step we can show the differences and advantages of the tight integration with the Rule Engine.
      Greetings

      Like

  6. Hi Mauricio,

    I would like to start with the plain code samples. I don’t see a direct benefit from using the Activiti UI in the jBPM and the Activiti examples. Can’t we just start with implementing the same process definition with jBPM and Activiti to show developers the differences and similarities between jBPM and Activiti?

    Best regards,

    Tijs Rademakers
    Lead developer Activiti Designer
    Author of Activiti in Action –> http://www.manning.com/rademakers2

    Like

  7. Hi Tijs,
    I think that for the community having the UIs ready for both projects people will be able to compare core concepts and practices. If we just start with plain code examples, we need to propose a business use case and based on that business use case we can provide different implementations. Remember that jBPM5 is more than a BPMS (running on top of drools), so if you want to use process centric vision for your examples starting with a process definition most of the great advantages of not using a process centric vision (like in jBPM5) will be missed. I agree with creating examples, but you need to recognize that the knowledge based approach in Drools and jBPM5 can cover more situations and use cases than a pure BPMS. If you are agree with defining a business use case and then based on the technology that we choose, we can implement different solutions providing different advantages. At that point I don’t think that we can continue comparing Activiti and jBPM5, because both solution will have different focus, will provide different flexibility and also will present different levels of complexity.
    What do you think?
    Greetings.. and I really appreciate this kind of tech talks, I hope we can meet and have a long talk about these topics in person. A big part of the learning experience is when you share what you know with others. 🙂

    Like

  8. Hi

    Nice to see your comparison. I’ve a question.

    I’ve a BPMN2 script. I want to parse the script and display the process diagram. I know that eclipse has BPMN2 process editor. I don’t want to use that but display the process diagram programmatically. Is it possible to display that? If possible, can you please explain how to do that?

    Thank you.

    Like

    1. Hi there, I’m not sure what do you want to achieve with that.
      But if you have your BPMN2 xml file you can parse it and create a simple representation graph with any graphical library in java.
      Greetings

      Like

      1. Thank you for your reply. But I’m not sure what API support is available to parse BPMN2 script. I come across JBPM-JPDL.jar. If you have used that, can you please comment on this?

        Thank You.

        Like

  9. Wow, nice discussion, but too bad it’s now fairly dated (January). Drools now has jBPM5 and is working on a 5.2 release. JBoss doesn’t offer support for it yet, but is (from what I hear) gearing up for it sometime around March 2012. I don’t really know what’s up with Activiti, but I know they really have something against jBPM and JBoss. As far as “supporters” go, Mule doesn’t have a current integration solution for jBPM5, having thrown their support to Activiti.

    If anything, this discussion has left me more confused than anything. I was hoping to get some clarification on the strengths and weaknesses of each, but now I’m just scratching my head more than ever… It sure would be nice to see a CURRENT comparison of the two products. Did that comparison of the two using similar workflows ever materialize?

    Like

    1. I don’t think that much has changed. I certainly don’t understand your point about Activiti having something against jBPM and/or JBoss. It’s a great thing about open source that you can compare these two process engines and even look into the source code and the unit tests, which one you like most.

      Best regards,

      Tijs Rademakers
      PS I do work for Alfresco now 😉

      Like

    2. In my perspective the discussion is still relevant. in a simple sentence ” if you just want a BPMS both can do the work, when you need something else and smarter (knowledge based/smart solutions) jBPM5 + Drools can help a lot”
      As I mention in some of my comments, doing that comparison will not help if you don’t understand the previous sentence.
      Cheers

      Like

  10. Well, I know this wasn’t meant to be a general sounding board for jBPM5/Activiti issues, but I just wanted to throw my hat in here again. Because of some issues beyond my control, I’ve switched from jBPM5 to Activiti. My first impressions:

    * In general, the Activiti documentation is better than the jBPM5 documentation. This is a big deal to a person like me who loves and depends on complete, accurate documentation. This is not to say the Activiti documentation is error-free; I found several errors that cost me hours of productivity. To their credit, the developers acknowledged the errors and pointed me to some resources that did work. But even though it is better than jBPM5, the Activiti docs could be even better.
    * Activiti worked straight “out of the box”. I had continuous errors with jBPM5 that I never got fully resolved, but Activiti worked correctly the first time I tried it. It even works under the lighter-weight Tomcat server (as opposed to the full JBoss AS that jBPM5 requires).
    * High learning curve. With jBPM5, I was up and setting up custom (test) workflows within about a day. I’ve been researching Activiti for almost a week now, and I still have no idea how to create a workflow that actually does anything, even just something silly like print out a string to console.
    * Community is responsive. The community is just about as responsive as the jBPM community, so this is a wash, comparatively. But I’ve gotten timely (normally within a day) responses to my questions. This is critical with a community developed system like Activiti. So I give Activiti high marks on this, but the jBPM5 community is just about as responsive. I guess the only way Activiti could score better on this point would be to answer all of my queries within minutes, as opposed to hours, which is of course probably impossible.
    * Graphically, Activiti is good. The web interface is cleaner than jBPM5 (which looks like it was just hurriedly hobbled together) and is easy to use. It looks like it’s actually complete and some thought went into it. The Eclipse workflow builder is cleaner than jBPM5’s, though could use some color (why so monochromatic?).
    * The tutorials suck. Activiti “comes with” one “10 minute” tutorial. It’s fine, though riddled with errors. All the online tutorials I’ve been able to find for Activiti are (1) outdated and don’t represent the current implementation of Activiti and (2) are just incomplete (these tutorials were not written by or hosted on Activiti.org). The tutorial authors seem to assume you know everything they do, and skip numerous critical steps. Some complete and accurate tutorials and sample projects for Activiti are sorely needed. I look forward to the day I can actually create a workflow that does something–anything. Even though it didn’t work as well initially, by this time with jBPM5, I could do numerous things with workflows.
    * Database-centric. Activiti requires and uses its database often, and requires it. This isn’t necessarily a bad thing. jBPM5 will use a database if you configure it to, but it’s an intrinsic feature of Activiti. This actually makes a lot of sense, since most users are going to want to record their workflow operation and status. Like jBPM5, Activiti will let you use most popular databases; it doesn’t really care which one you use. Most popular databases are supposed.

    For several of the reasons above, I’m looking forward to the book _Activiti_in_Action_, but that’s not due out until February, and I need something demonstrable before then (like, the end of next week), so I’m just hoping for a miracle. And I hope by the time the book is released, it’s still accurate.

    tl/dr; Activiti looks good in many respects, but still has a long way to go, especially in the tutorials and sample projects arena

    Like

    1. I will take the chance to express my perspective on some topics that you mention. Please feel free to give me your feedback:
      jBPM5 do not required JBoss AS, it is completely environment agnostic and can be configured with any container or without any container at all.
      The Database centric point is a design topic that you can be agree or not with it, I mean inside jBPM5 we have several mechanism to extract that information and provide the same functionality without impacting the performance of the process engine when we query that information.
      About tutorials and documentations I agree with you, we need to improve the current status of all those documents and provide more tutorials and hands on lab. But I’m continuously adding and improving the community training and nobody from the community give us feedback to improve that. I’m trying to spread the word and push the community to contribute back at least with feedback and not just saying there is not enough documentation.

      Once again for a BPMS I think that both projects will give you the desired functionality, but in my perspective you need to look a little bit to the future and try to understand if learning about a Rule Engine and the Complex Event Processing features will give you the flexibility to build killer apps with a lot of value added for the business. In terms of the functionality (not screens in some web app that you will need to redo if the client wants to integrate the designer or the task list in a swing application) I think that Drools and jBPM5 really provides you a full set of features to solve most of the business situations out there, not just the process dimension.

      My two cents..

      Like

    2. Hi Frecklefoot,

      Nice summary of your Activiti experiences. I agree that the 10 minute tutorial needs some updates. I’ll look into this. Your comment about the Activiti in Action book I don’t get. You can already download 10 chapters of the book by buying the MEAP. And it already contains A LOT of information to get you started. The book is written against the latest version of Activiti.

      Best regards,

      Tijs Rademakers

      Like

  11. Well, we want to use jBPM5 and the rest of Drools, but can’t. It has a serious limitation that we can’t ignore or work around.

    Let me ask you this related question: since they both use BPMN2.0 (which is XML), shouldn’t a workflow designed in Activiti be able to run under jBPM5 and vice-versa? Is BPMN2.0 that versatile?

    Like

    1. It’s a like every standard, different implementations will provide different extensions. I’m pretty sure that by the end of this year we will be able to support the most common features inside the Business Process Execution profile described in the specification. We are focused in that and I’m trying to help in the jBPM5 project to support more of the features described there. In the other hand you need to know that the BPMN2 specification as any specification has missing bits and those needs to be implemented by each vendor. We, as community member, should help to improve the compatibility between the open source engines.
      What kind of issues do you have with jBPM5 and Drools? We are always trying to help in the jBPM forum and mailing lists.
      Cheers

      Like

  12. Mule doesn’t support it, an ESB we’re heavily committed to. Mule Soft doesn’t plan on supporting jBPM5 for the foreseeable future, but they do support Activiti and, in fact, recommend it. This is an about-face with what they said a few months ago, calling Drools and jBPM the “best of breed” BPM suite. But they only support version 3 and 4 and, of course, we’d want to use jBPM5.x.

    Like

    1. I’m having some meetings with some core devs from mule, and I’m pretty sure that we can create a generic integration between them as well as you can create your own integration of those components. We will be doing a complete integration, I mean not just jBPM5, the complete Drools and CEP features with the ESB. You need to understand that it will not be just like the Activiti integration, this integration will allow you to integrate smoothly all the concepts together isolating the transport layer and coding the business logic using a complete declarative approach. That will be there in the future and I will be probably involved.. but once again that will be a community effort, if you need to use that inside a company we are open to contributions or sponsorships. 🙂
      Cheers

      Like

  13. Tijs: Thanks for the tip about the book; I’ll purchase the MEAP posthaste!

    I’m curious about Alfresco’s strategy regarding Activiti. Correct me if I’m wrong, but Alfresco needed in a workflow engine for their document management system. Activiti was built as a solution for that. But it’s open-source. JBoss makes jBPM5 available for free, but offers support for a fee. As far as I can tell, Alfresco doesn’t sell any support for Activiti, so what’s the revenue stream for Activiti?

    salaboy: That’s great to hear that you’re working with Mule Soft, however, I’m not completely confident that an integration will be available soon, especially since they flat out told us it’s not a planned feature for any of their next few releases. But I’m glad that you’re working towards it.

    As far as sponsorships go, we were looking at purchasing support from JBoss on the Enterprise version of Drools (I think they call it BRMS). We’re willing to work through jBPM5’s rough edges, but the non-Mule thing is a deal-breaker.

    Any chance of a jBPM5 book coming out (beyond the User Guide)?

    Like

    1. @Frecklefoot Activiti was started as a standalone open source project funded by Alfresco. One of the main targets of Activiti was to make it available to be used as a workflow engine in the Alfresco document management system. But the other main target was to build an embeddable BPMN 2.0 engine for a broad audience.

      You’re right that Alfresco doesn’t provide support itself for Activiti outside the use as a workflow engine in its Alfresco enterprise product. But there are other companies such as Camunda that provide this support. The revenue stream for Alfresco is the Alfresco enterprise product.

      Best regards,

      Tijs

      Like

      1. @Tijs: The high-level architecture of jBPM5 and Activiti are almost identical; I wonder why they bothered spinning off a new project in the first place? Since jBPM5 is free anyway, I wonder why Alfresco saw a need to hire away developers from it? I’m not sore or anything, it’s just curious.

        I’m reading your book (bought the MEAP), and I have to say, while it is well-written, I didn’t expect to have to have an advanced knowledge of Maven to follow it. We use Maven here, but I don’t have to edit pom’s or really do anything special to get our projects to run. In fact, we have several developers devoted solely to keeping the poms in shape. So I was a bit taken aback when, right in Chapter 1, you started throwing Maven at the reader. So here I am, a week later, still in Chapter 1, still trying to get your first sample to run. I took a few days to get familiar with Maven, but apparently that wasn’t good enough. Now I want to go back to jBPM5 more than ever. I was able to start building stuff in it right away, but with Activiti, I have to know a whole bunch of OTHER STUFF first.

        I know it doesn’t matter one way or another to you whether we use Activiti or not. We HAVE to. I just wish it was easier to get into… or at least worked.

        Like

  14. Hi Frecklefoot,
    Can you elaborate a little bit more about : “The high-level architecture of jBPM5 and Activiti are almost identical;” because in my perspective are very different. About knowing maven, it’s something that you really need to know in order to use these frameworks. When you find the solutions to your problems you can easily write some blog posts about how to tackle down the most common problems that someone new to maven will have. I’m facing the same issue with the jBPM5 book. If I spend 1 chapter introducing maven the book will end up having two thousand pages. I’m sure that maven is well documented out there and is something that you will need to learn in order to use any java framework this days.
    Cheers

    Like

    1. Re: high-level architecture: Both have an Eclipse plug-in to create & edit workflows. Both use a database of some sort to store workflows, both have a web-based editor to create & edit workflows, etc. At the code level, they’re very different, but the high-level architecture looked very similar to me.

      Re: Maven. No, I don’t think you should have to spend time in your book explaining Maven, but it’s not very well documented. I found errors even in Apache’s web docs about it. There are several books on Maven, but few which target the current version of Maven, 3.0.3. From what I understand, knowledge is transferable between 2 and 3, but most books I saw were written for 1, which is a different beast. There are also Maven “cook books”, but they’re not going to help you learn the system. I know Maven is becoming more popular, but it’s not used universally, and I didn’t have to learn it to start using jBPM5. I’ve been using Java for 11 years, but I never even heard of Maven until 2 months ago when I started here.

      Maven is up and coming–I’m going to have to learn it eventually. Got that. It’s a bummer that I encountered right when I’m trying to get familiar with a new system. But I’d expect code straight from the book to actually work, whether I knew Maven or not.

      Like

      1. oh architecture you mean tooling.. Usually when we talk about the project architectures we talk about the components inside the project, but I see your point.
        Yes the code for the book should work just running the basic maven commands. I mean mvn clean install to build it up and run the tests. If you want to use the projects with eclipse just running mvn eclipse:eclipse in the project will set up everything for you and you can work as normal.

        Cheers

        Like

      2. @Frecklefoot I understand your point about jBPM 5 and Activiti having the same high level architecture, but when you go a bit deeper there are quite a lot of differences for developers working with the BPMS.

        Your remark about the Activiti in Action book is something I would like to discuss with you further. Please use my twitter tijsrademakers to get in contact. You should not have to do anything in the pom to get you started. All the examples and Maven configuration files are already available for you at the Google code repository http://code.google.com/p/activitiinaction/.

        Like

  15. Hi,

    I have been trying to compare both Activiti and jBPM because my company is thinking of integrating a workflow engine in one of our existing applications. We use Spring + Hibernate (no JPA), so two things are of the essence:
    1. transactionality, i.e. a change to an entity and to its associated process instance (creation, step completion, etc.) must be done in the same transaction
    2. being able to access spring beans from within the process (to evaluate expressions that determine the flow depending on entity values, affecting entity fields on a service task, etc.)

    I must say, while this integration with Activity is trivial (we’re talking about a 3-4 hours to develop a POC that demonstrates these features and more), we still haven’t managed to do something similar with jBPM5. Also, while in the Activiti documentation the Sspring integration is ver well documented, all we seem to find on the topic for jBPM is links to (apparently) old (undocumented) code (for example: http://community.jboss.org/thread/160011). Also, i’m still unsure that the “drools-spring” applies to jBPM or only to Drools…

    In a nutshell: i don’t doubt that jBPM does everything we need and more, but as it stands we are very much inclined to forget it and move on with Activiti, since we simply can’t integrate it our existing application. And we didn’t even get to the second point defined above…

    Like

    1. Sure.. Once again.. as you mention you can do almost the same BPMS feature with both projects. but as you can imagine integrating a rule engine a process engine and the complex event features is far more complicated that a single BPMS, but the functionality is much more powerful. You should ask yourself if you will need that in the future, because most of the companies that are adopting Drools & jBPM5 already deal with that in the past don’t want to make the same mistakes again of adopting just a BPMS.
      Cheers

      Like

  16. I spent 4 days on Activiti 5.7 and 4 days on jBPM5.1. My experience with Activiti was totally positive. I think it is simple, extensible and easy to integrate with. It is well designed and built. Very clean. I liked the feature that Java Service Task can be used to invoke Spring beans which is awesome. For JBMN 5.1 I think it is still a work in progress. The demo script is unacceptable buggy. I barely found an example (http://community.jboss.org/message/584417) to allow invoking Java instances and very disappointed. The jBPM console looks pretty amateurished. JBPM5 supporters has talked about the value of having an rule engine to reflect real life business activities. Don’t know how much value it is if the product is unusable and poor quality. I give Activiti 5.7 A- and jBPM5.1 C-. That’s all folks.

    Like

    1. Hi Hung,
      Thanks for your comment. I really appreciate the time you spent writing it. In the other hand I don’t like when people give scores to open source projects just testing them 4 days. With your comment, you help me to confirm the whole point of this posts. If your requirements are small (=> 4 days of research) and you don’t have experience with rule engines or complex event processing I’m pretty sure that both projects will do what is needed. I never talk/argue/discuss about UI that are 90% discarded after the first iteration of your projects because doesn’t meet real business requirements. I’ve also notice that you confuse Product and Project, and you mention that jBPM5 is unusable.. as a Product maybe.. but because it’s not a Product most of the people that understand that difference really don’t care because they want just a project that works and give the flexibility they need for more advanced things than just BPM. It’s not by chance that world wide conferences about Business Process and Business Rules are starting to converge.

      Thanks once again, and please avoid the scoring stuff!
      Cheers

      Like

  17. Hi,

    Thanks for this article. As mentioned can you please provide feature to feature comparison here between JBPM5 and Activiti 5.9 ?

    Because my client wants to decide between JBPM5 and Activiti 5.9. It will be gr8 if you can provide the comparison asap so that we can take decision asap.

    Thanks,
    Mihir

    Like

    1. Hi .. great topic. we are in the process of evaluating open source BPM solutions and both products have their own selling points (activiti is easier to get started from a developer’s perspective; jbpm has more advanced capabilities, if needed but a bit more involved when try to get started).

      Apart from the above, are there any distinct advantages/disadvantages with each product that you can highlight? Any help is much appreciated.

      Like

      1. Hi VMS,
        First of all both are open source projects and not products, in which kind of advantages / disadvantages are you interested? What kind of features are you looking?
        Cheers

        Like

  18. Hi Salaboy,

    Thanks for your response; I am looking to compare them based on capabilities in process modelling, process management and administration, ability to manage versions of process templates, process auditing, ability to handle complex workflow implementations, business process simulation, volume management etc.

    Regards

    Like

    1. Ok, so you are interested in comparing from the Business Process perspective only right? For example the jBPM5 repository is not only for Business Process, and most of the tooling is shared with the Drools Rule Engine. For that reason, making a direct comparison it’s a little bit difficult.

      Like

  19. Yes, I am looking to compare the products based on Business Process Management features perspective; Considering JBPM5 offers most of the BPM capabilities similar to activiti, shouldn’t their BPM functions be comparable?

    Like

    1. Yes, until a certain extent. If you have more tools in your business suite you will probably end up modeling complex scenarios with all the tools not just with one of them, to leverage the power of the integration right?
      So yes, from the BPM perspective you should compare the tooling maybe? Because, now I’m working in the team, my opinion can be biased, so I recommend you to think about how complex your scenarios are and how many tools are you willing to use. We all know that if you rely only on BPM you can end up with extremely big processes that end up being not understandable at all.
      Cheers

      Like

  20. Really good post and comments / discussion. I’ve no tried Activiti yet but the JBPM5 integration with the whole Drools suite is something you can’t ignore guys. Using the rule engine as a service is always an option but a native integration is a more elegant fashion when talking about processes and business rules.

    Like

  21. Hi. Very interesting topic. From my experience JBPM5 is not ready for production. We’ve used it in our project for about 1,5 years and it’s a real pain. I would never say that JBPM5 is mature enterprise-level product. It lacks documentation and even that small amount of existing examples do not work out of the box. API is very complex and inflexible. There are some bugs critical for our project that were reported more than half a year ago and there is no progress on them so we have to use workarounds. I had a look into source code in several parts of JBPM5 and I can definitely say that some pieces have poor quality even from basic Java coding standards view. I was really surprised that basic configuration parameters in Process console are hardcoded in jar files so I have to unpack jar, change properties and pack it again in order to get it work with our app. We had constant problems with Guvnor stability and had to get rid of it and store process definitions on file system. It looks good in whitepapers but I can’t imagine real-life usecases of it. We used Drools for simple tables-based rule evaluation. When we realized that we’ll have around 150000 rows we had to replace this rule by simple SQL table lookup because of performance considerations. We started using almost all BPM stack and end up with process engine and HT only. And even with that we have a lot of wrappers and reimplementations of stock classes to make it work in our project. What I can say that I use JBPM5 in real project for real tasks. And I really disappointed with this product. Please forgive me my messy style but that’s my feelings that I’ve accumulated for a long time:)

    Like

    1. So Artem, this is a community project. If you look the code and find problem, you can contribute with the solutions. Nowadays jBPM5 has tons of fixes and new features. Can you share the links to your questions and jira issues related with the problems that you have? so I can take a look and check that those are not fixed yet?
      Cheers

      Like

      1. Hi Salaboy,

        Thanks for your response. I understand that it is a community effort but my message is that it is not ready for production. I just want to warn that one should consider problems I mentioned when choosing BPM system for real production application. Spring is a community project too but it’s far ahead of jBPM.
        Thank you for your effort to help with my problems but I think it won’t be so interesting for this post readers. Just for example here is one issue that I can find quickly in our Jira: https://issues.jboss.org/browse/JBPM-3369.

        Like

  22. Ok, reading between the lines it looks like you just want to say to people that don’t use the project. And the big problem here is that as a community project that kind of opinions doesn’t help at all. So, let’s put some points clear:
    1) Production means very different things for different people, right now official support is being provided and consultancy services too. The biggest open source company is backing up the project, so I don’t believe that the project is not ready for production
    2) You compare jBPM5 with Spring? It’s like comparing oranges and apples. We can say that Spring is not ready for production because is not as mature as Hibernate is?
    3) I saw the jira issue that you post here, I didn’t see any of your comments, workarounds or anything that denotes that you were having a problem and it wasn’t fixed. Looking at my emails from the jBPM forum, your name didn’t appear. I believe that the issue is already fixed in master, for long time, we will probably miss to close it because of a wrong tag that didn’t list it during the releases. I will double check that and close it if it’s done.
    4) How many background do you or your company have on BPM? I’m asking this, because is a common question. If you want to use Hibernate, you need to know how DBs works.
    5) You mention that the API is not flexible? what does it means? startProcess() cannot be flexible, if we make it more flexible than that it will be probably more complicated for the user. The same with start() and complete() task.

    I truly believe that community projects are the joint of effort of a lot of different people with different interests, so before sharing your frustration, make sure to get involved. You know that the issues, like the one you mention can be fixed in a couple of minutes right? It was a wrong query that any Hibernate user can fix and submit a patch(in the worst case).

    Most of the customers that I visit in the last three years (before working at Red Hat) were more than satisfied with the process and rule engine and they all learn the lesson of being involved, contribute back if you find an issue and encourage people to create better software.

    So, if you have another jira issues or questions in the forums that are still unanswered, please post them back here, so we can help.

    Cheers

    Like

    1. Salaboy, I mean exactly what I said. I just shared my experience and hope that helps people make a right choice.
      1) Production is common Expression and for most people it means scalability, reliability, stability, maintainability, interoperability and long term support. Preventing your next question I don’t want to say that jBPM5 is not scalable or reliable. But again from my experience I can say for example about interoperability. We decided to migrate from 5.1 to 5.2 but unfortunately I haven’t found any upgrade notes/instructions so just replaced dependencies in project. After some changes in API application seem to work properly but during regression testing we found that some functionality is broken. Further investigation showed that there were some changes in DB schema. One of that change was added column which filled with NULLs for already existing rows. But POJO field had primitive type long and Hibernate could not map NULLs to it. I know that it is easily fixed but when I have several such “easily fixed” issues it’s hard to say it’s production ready. Imagine that during OS upgrade on production server you need to do several magic workarounds with production data to make it work. Is it production ready?
      2) I do not compare jBPM5 and Spring. I just want to say that both of the products are community-driven. And community process is not an excuse for poor quality.
      3) There is a ticket in Jira and clear steps to reproduce. There is a person assigned to that ticket. You said that it can be easily fixed in couple of minutes. I wander what else need to be done to fix this issue? I need to put comments in the ticket? Or additionally ask question in the forum? And that fact that this issue might be fixed in master but just haven’t been closed says about quality of the development process.
      4) I don’t know how it can help you but we used jBPM3 several years and now with jBPM5 for a year and a half.
      5) This opinion assembles from everyday work with that API and number of small thinks that could be done better. First that comes into my mind are user/group assignment until 5.3 or tons of ResponseHandlers for each operation in HTS. You know, I’ve never had to rewrite something in Spring for example. But for jBPM5 we had to have our own reimplementations of several classes.
      I see that issues are fixed with each release but again, I’m just sharing my experience and want to give people more information for making decision. It would be really hard to change BPM system after it is integrated into production application.

      Like

      1. I respect your personal experience, and we are working hard to improve the user experience.

        The big difference between frameworks like jBPM and Spring is the fact that one was designed to assist you in the development duties, and that’s why Spring propose dependency injection and the whole programming model. jBPM5 in the other hand is an integration framework with a strong focus on the business level and the business semantic. So you need to be ready for integrate and rewrite stuff, that’s the framework nature. We cannot provide an unified set of user handlers, because all the companies have different ways of handling that kind of company related information, the same with security, the same happens with process variables and external service connectors.

        1) when you talk about production, you mention version 5.1, 5.2 those doesn’t have official support, now 5.3 has, so all those problems should be gone
        2) see intro
        3) Not really, if you don’t get involved in making the community process better, you cannot qualify it. Posting a comment, sending a pull request if you fix it, voting the issue, chasing us in the IRC channel will push the community around the project to close those issues, there is no way to refuse that. That’s my humble opinion. If it’s not close could be also a problem about the person who creates it which didn’t select the correct tags which then mislead the owner to decide when to fix it or when to close it.
        And once again, in one and a half year, I didn’t see your name in any of the channels, so you are complaining about a year and a half suffering alone without asking for the community help. That’s why in my personal experience, all the companies that get involved and get in touch with the community are happy adopters.
        4) no, it really doesn’t help. I’ve being going to the gym all my life and I cannot say that I know about how my muscles work. Ok, I need to choose a better example 🙂
        This could also be the cause, I’ve notice that most of the people who were used to jBPM3 have the same kind of troubles. I will write a post about that too.

        5) See intro

        The good thing is that after a year you get it working and the project is much better than it was at 5.1.

        Like

      2. As a conclusion that’s exactly what I’m trying to say. Be ready to “Posting a comment, sending a pull request if you fix it, voting the issue, chasing us in the IRC channel” to get it working 🙂 Or choose 5.3 and buy support to make this process faster. That’s all 🙂
        Thanks for interesting discussion.

        Like

  23. Yes, exactly.. Be part of the community process, that’s the whole point of a community and an open source project. Don’t get stuck for 1.5 years without saying something, we are here to help and add new features. Don’t be shy and be proud of what is free and available for the whole world to use, let’s improve the project as a community instead of complain and share frustration after all is a java project and if you are reading this is because you are a java developer. Of course if you fix something why not sharing it, instead of burring the solution that you don’t know if it’s good or not, you can share and we as a community can help to make your own custom solution better.
    Most of these things sounds obvious, but most of the people doesn’t do that, and I believe that it’s a cultural problem more than a software problem. Hopefully writing this kind of posts we can teach people on how to collaborate towards better solutions for everyone.

    And please don’t forget that jBPM is an integration framework, not something that should be provided with all fixed connectors that cannot be changed or adapted to your own situations. Stay in contact, after all you have a jBPM5 project running in a production environment 🙂

    Like

  24. How do each compare when it comes to access objects in your domain model. We have a very extensive domain model and would like some processes that retrieve data from those domain objects.

    How do jBPM and Activiti reference domain objects? Do they take a different approach or the same approach. How can be go about executing queries that involve attributes of both the domain objects and the process “objects”.

    Let me illustrate my question with an example:

    Let’s say we have a simple library from which books can be borrowed. We have a domain classes ‘Book’, ‘Category’ and ‘Member’.

    We also have a process called ‘BookLoan’ which tracks the process of loaning a book and, hopefully, returning it.

    The process would undergo transitions at the time of borrowing and time of returning and so it would not make sense to duplicate this ‘time’ data in the domain model. Now lets say we want to perform a query of all books in the ‘Software Engineering’ category that were returned on a given day.

    The data for this query covers two domain classes: Book and Category and covers a number of process related classes.

    How would we go about performing such a query and are attributes like transition times easily enough referenced in queries or are they stored away in a clob somewhere?

    Like

    1. Hi Chris,

      I can’t say about Activiti but can make some sentences about jBPM.
      Just to give better understanding persistence of jBPM runtime state is additional internal API that is not exposed to end user. For your case you are likely have to store your book id and category id as process parameters which are serialized to BLOB and stored along with other information about process. So you have to keep track between processes and books outside of jBPM in additional table in order to be able to execute queries. But jBPM persistence is poorly documented and I would not recommend to rely on it’s internal table structure because it changes from release to release. BTW public API is also tend to be changed with new releases 🙂

      Like

      1. @Artem, you definitely misunderstand the persistence layer of jBPM5. The BLOB that you mention is internal to the project runtime and should not be used to query the information from a client application beside the engine itself. For that reason, as I mentioned in my previous response you can externalize the data using the Event Listeners.
        How you query your external database can be keep no matter the release of the jBPM5 project, if you do that in that way, because it will be domain specific.

        Cheers

        Like

    2. the jBPM5 project allows you to externalize (via event listeners) your data to an external storage (database or index) where you can customize the information that you want to store and index. Then your application UI can use this store in order to query information that was retrieved from multiple datasources. This is a common requirement for business processes, due to the fact that they handle 99.99% of the time domain specific information.

      Cheers

      Like

  25. Hi,

    it is about 2 years, since the discussion was started.

    @salaboy: can you revise your first post and confirm to us, that everything you wrote about 2 years ago is still valid. We evaluated activity and jBPM 5 at the beginning and choose jBPMN, becouse of the integration with Drools. I’ve read that activity also have an integration with Drools. Can I still benefit using jBPMN bacaouse of better drools integration? Tijs Rademakers proposed to create examples to compare jBPMN with Activity but it seems to be thrown away. Maybe it is now the time create such examples?

    Is there anything what I can realise with jBPMN and this is not possible or difficult in Activity and vice versa.

    Like

    1. Rob, check my answer to that comment: https://salaboy.com/2011/01/19/jbpm5-vs-activiti5-dumb-question/#comment-1006
      My proposal was thrown away, until this day, so all the points of that answer are still true. Once again, jBPM5 is not just integrated with Drools, they run together as part of an integrated framework, which was designed and is coherent orthogonally, so is much more than a BPMS. If you take a look at some of the slides that were published in this blog you will find one that compares the common integration of a BPMS with a Rule Engine (jBPM3 for example) and the differences with jBPM5. When you understand these differences there is no way back from Drools and jBPM5 🙂
      Cheers

      Like

      1. Hi,

        @salaboy I think that’s a really strange comment you made about your proposal being “thrown away”. We discussed the topic of comparing jBPM and Activiti by providing side-by-side examples. You wanted to go in the direction where the Activiti UI could be integrated with both Activiti as well as jBPM and I don’t see the benefit for that. But providing examples that are implemented in both Activiti as well as jBPM is still something I think is great for people wanting to choose between Activiti and jBPM.

        Best regards,

        Tijs Rademakers
        Project lead Activiti

        Like

  26. Maybe that’s the difference then, if you want to have a Knowledge Based Platform go for jBPM. And if you want to run your BPMN processes (with possible rule integration) go for Activiti. Don’t get your comment about my signature BTW.

    Like

    1. Tijs, and All,
      That’s the whole point of the this post. If you want to use a BPM System, you can choose whatever BPMS all will do the job, with small differences (jBPM5, Bonita, Intalio, Process Maker, Activiti/jBPM4, etc.). Choose freely. The important thing that you all need to understand is that if you want the Natural Evolution of BPMS, the Knowledge Based Platform you should definitely choose Drools/jBPM5. Now the question that I was expecting in this comment, is: why do I want to choose a BPMS if a Knowledge Based Platform gives me so much more? There are obviously multiple answers to this question but the most relevant IMO is:
      A: Because I don’t understand what a Knowledge Based Platform is.

      If you have enough industry experience and you already tried to make an implementation with all the technologies that are provided by a Knowledge Based Platform there is no reason to choose a simple BPMS.
      If you choose to go for the plain BPMS after a couple of years you will realize and you will understand why a knowledge based platform is so important. If you have chosen other than jBPM5, using all the other platform capabilities will be more complicated because they will not be available in the other projects.

      Like

  27. Thanks for this great article ! As far as I know there is never a “best” product, but one should choose according to its use cases.
    That’s what I did when I had to choose between Activiti and jBPM5. I have a spring-based application which services need to be orchestrated with configurable BPM workflows and a set of rules.
    So my first choice was jBPM5. However I spent days struggling to make my use cases work, configuring jBPM5 in a persistent way. The result was that I had to patch persistence.xml files and the setup/use were so complicated comparing to what I wanted to do.

    I gave a try to Activiti and everything was working straight away without any effort : the persistence is there, database model is easy to understand, spring integration is really easy.
    And for rules, I keep working with Drools Expert, which is working fine.

    So my impressions is that jBPM5 provides a lot of nice features but
    – on the persistence layer they lack transparency and clarity (no SQL create tables provided, poor explanation about them)
    – jBPM5 is not straightforward to setup (especially Human Task).

    For now I’m continuing with Activiti. I have to integrate some more complicated workflows with Drools, so I’m going to challenge the Drools/Activiti integration. I’ll post my impressions on that as well.

    Like

    1. Good luck with that, when you test their integration and get familiar with the drools/jbpm capabilities you will find out why it is called a knowledge based platform and why is way superior to a simple bpms

      Like

      1. Well, I did not say that jbpm is not superior, and again I started with jbpm because I wanted both bpm/drools to work together, but it’s just that jbpm5 setup is far too complicated with persistence and it lacked documentation and examples.

        I did the activiti/drools integration and you are right, it’s really limited and I had to expose a dedicated service myself. But it was easy…

        So maybe if I get answers to the following questions could go back to my first choice (jbpm5) :
        – How to set up Human tasks without a separate server (MIna or whatever) as everything is running is the same jvm? I don’t want to open a port for that,
        – How to get the official SQL create-table scripts to create all those tables
        – How to set up JPA entitymanager for both bpm part AND Human Tasks in a spring environment?

        So far I wasn’t able to get this information, maybe you have ideas.

        Thanks a lot

        Like

      2. Hi Fred,

        Take a look at this examples, which are configuring spring with the local task services (no port, no remote, just in the same JVM)

        https://github.com/mswiderski/jbpm-examples/tree/master/jbpm-spring-web

        That example covers most of the things that you are asking except for the create-table scripts. We don’t provide these scripts because they are database dependent. We use JPA and you can use Hibernate to generate those scripts for your DB, but by default Hibernate will create those tables for you..

        Cheers

        Like

  28. As a beginner, I find it so much easier to learn Activiti. I can download examples from Activiti, follow the online tutorial and sure enough, everything works as stated. On the other hand, jBPM5 online documentation is not updated. Some instructions on jBPM5 were written for older versions and no longer accurate. I often have to rely on the community to overcome things that should have been documented in the jBPM “official” guide.

    Like

    1. As is mentioned in this post, if you are a beginner you will probably not understand the difference. For advanced users who are already experienced in the BPM and Rules Engine arena is a no brainer decision. If you can rely on the docs or in the community that’s a good thing. As a community member if you are using free projects and you feel that the documentation is out dated you can always contribute back with the updates or at least report them, so any other more experienced community member can update it.

      Cheers

      Like

      1. Hello Salaboy,

        I know this is very old thread I have read it one year before and after having a long research of 1 month to decide which open source product to use we ended up with a decision for jBPM5. I know that the documentation is some what poor but we dared to make this decisioin assuming that as long as we have an active community we would get answers. But once I started using it I ended up with problems with JTA in embedded mode no answers from the community( https://community.jboss.org/message/833503#833503 ) any way I was able to fix the problem and yes I have to update that thread and I will do. But now I have ended up in a problem where Iam not getting a clear direction this is related to documentation ( https://community.jboss.org/message/847520#847520 ), It would be great if you can enhance the documentation related to usage of jBPM in embedded mode, which jar files are required for which feature etc.

        Like

      2. Hi,
        first of all, thanks a lot for the comment and sorry for my delayed response.
        About documentation, this is a community project, were we more than welcome contributions with the docs, mostly if you have a particular case that you have solved. Because the issue that you mention is related with dependencies and the project heavily relies on maven, I strongly recommend to use maven to find which dependencies are required by your project. There are several ways to use jBPM and it really depends on what you are trying to do to find which dependencies you need. For version 6, we had added the BOM (Bill of Materials) dependencies which basically gets what most users wants, I suggest you to try that as well. I will answer your question in the last thread that you mention, but again I will make references to version 6, since is the last available version.

        Best Regards!

        Like

  29. Hi Salaboy,
    can you pls explain me what you mean by knowledge based approach. pls give me some examples as i try to understand how JBPM supports Knowledge Based Platform.

    Thanks

    Like

    1. Hi Santhosh,
      The idea behind the Drools & jBPM Platform (know renamed to KIE Platform meaning Knowledge is Everything Platform) help you to model and execute business knowledge (rules, events, processes, etc) which is way more just a single process engine. That’s the whole point behind it and that is why it differentiate from the other BPMS’s. You are asking for examples, I’m not sure what do you want to see specifically, because every business domain can be modelled and leverage these tools. Hope it helps.

      Like

  30. I would like to create Forms Templates but Independently from the jBPM Console. Yes, It is technically possible, but any tool with auto-generation of forms and automatic mapping workflow Between variables and form field will be awesome.

    Like

    1. Hi Richard, can you elaborate a little bit more on that? What we have now in the jBPM Console could be a standalone tool for form generations. In such cases how do you suggest to integrate with the information from the workflows if you want to have a completely independent tool for forms?
      Right now the forms can be automatically generated based on the information of the process diagramas (including variables) so that’s already possible.

      Cheers

      Like

  31. Hi, thanks for article and all comments! In company where I work, we use Intalio BPMS (4 years = 2 years at research/development level, 2 years at enterprise/production level). After four years we plan to change Intalio BPMS platform with jBPM or Activiti ( main reason: changes in the licensing). Which of these two systems is more similar to Intalio BPMS? Can you write your experience with the following functionalities in jBPM and Activiti?

    Business Process Modeling
    • BPMN modeling: BPMN 2.0 support
    • Model documentation
    • Import/export model from other Tools
    • Export as image or PDF: Export and share your models as media files.

    Business Process Design
    • Form design: Design Web 2.0 forms using a powerful drag-and-drop editor
    • Web form to mobile form automatic conversion: Get your forms to work on mobile devises without any extra effort.
    • Chained forms: Define a form workflow; users must complete forms in the proper sequence, maximizing process consistency.
    • Data mapper: Define powerful data transformations using a graphical editor: click and drag for faster data mapping.
    • Process correlation: Deal with one of the most complex aspects of BPMN in clicks: define relationships and dependencies with ease.
    • Reusable processes: Define and consume reusable process. Save time and effort reusing your best processes in new process models.
    • Error Handling: Automate error handling in your process. Errors are managed faster and more easily.
    • Compensation (roll back): Define how completed activities can be compensated when unrecoverable errors occur by implementing a safety net for your processes.
    • Visual editor for technical artifacts (WSDL, XML, XSD…): View and edit Web Service related artifacts in powerful editor with both graphical and text views.

    API, Integrations, and Connectors
    • Web Service API: Interact with Intalio|bpms backend using an extensive Web Service (SOAP) API.
    • Integration with different Form and UI technologies: Integrate processes with the user interface technologies and forms of your choice.
    • Web Service and XML over REST connectors: Invoke SOAP Web services and XML over REST using drag-and-drop.
    • Database Invocation connector: Execute SQL queries and stored procedures and get the results in your process.
    • Database polling connector: Poll a database and initiate processes based on the results.

    Business Activity Monitoring
    • Dashboard graphical editor: Monitor key performance indicators through complete dashboards. Visually meaningful content helps you understand the big picture.
    • Business metrics: Define the business objects and metrics that best reflect your business needs. Make data-driven decisions based on real-time visibility into business activities.
    • Intalio dashboard: Use one of dozens of widgets to monitor your business and application. Customize the dashboard to see exactly the data most relevant to your needs.

    Business Rules
    • Business Rules Modeler (BPM): Model your Business Rules from an intuitive, sheet-based, graphical editor, then incorporate them into existing business processes.
    • Business Rules Engine (BRE): Deploy and run your business rules, streamlining processes and efficiency.
    • Business rules reuse: Reuse your business rules from your processes or from other systems. Make the most of the processes that give you the best results and highest efficiency.

    User Task List
    • Web 2.0 and mobile user task lists: Access task list from the web or a mobile device. Work gets done, anywhere, anytime, 24/7.
    • Absence management: Let others know when you are on-leave and when you are back. Prevent task backlog with clearer communication.
    • Task claim and revocation: Claim a task so nobody else will work on it in parallel. Reduce redundancy.
    • Response drafts: Save a draft of responses to task and send it later.
    • Task list export to PDF and Excel: Export your task list in PDF or Excel. Take tasks with you, in the format most convenient to you.
    • Task attachments: Attach documents to your task and store them locally or in the DMS of your choice.

    Authentication and Authorization
    • Role-based access control: Integrate with any access directory based on users/roles. Let users get to just what they need, and nothing more.
    • File-based access directory: Define users and roles in a file. Integrate security in the manner most comfortable for you.
    • LDAP directories: Integrate with your existing LDAP, authenticating users with appropriate corporate security, accuracy, and confidence.
    • Users and roles designer browser: Browse your LDAP directly from the Designer and drag-and-drop users and roles to associate them with tasks.

    Certified Environments, Portals, and Document Management
    • Run on the database, browser, and operating system of your choice: Intalio|bpms supports Oracle, MSSQL, PostgreSQL, DB2, Sybase, and MySQL databases, Internet Explorer, Firefox, and Chrome browsers, and any operating system.
    • Liferay Portlet: Access your task list from within a Liferay Portlet.
    • Alfresco integration: Automatically store task attachments in Alfresco.

    Performance and Scalability
    • Clustering and load balancing: Scale up by running Intalio|bpms in a cluster, knowing load will be balanced appropriately and seamlessly.
    • Failover: Make sure hardware failures do not affect your business. Never lose a process or a model.
    • Automatic Server Cleanup: Cleanup old data automatically for maximum performance.

    Business Process Deployment and Administration
    • One-click process deployment: Deploy your processes to the server in one click, faster and easier than ever before.
    • Deployment versioning: View process versions and choose which one should be active. Evolve processes as needed, then have confidence that the latest and best processes are in the field.
    • Deployment profiles: Define the parameters and deployment endpoints based on each of your environments. Get processes to the right people at the right time.
    • Audit Log: Keep track of workflow and administration actions history and details.
    • Process and instance Monitoring: Monitor your deployed processes and their overall execution state. Check a specific instance status, data, and history.
    • Failure Recovery: Recover instance failures in a single click. Never accidentally lose a process again.

    Languages
    • Out-of-the-box languages: Intalio|bpms supports English, French, Japenese, Portuguese, Spanish out-of-the-box.
    • Multilingual forms: Display the forms to users based on their language preference.
    • Internationalization: Translate our platform to any other language of your choice.

    Product Support and Help
    • Professional documentation: Access hundreds of professional documents, guides, samples about Intalio|bpms covering all aspects of the product.
    • Professional support: Ask unlimited questions to our professional support team through a dedicated support portal.
    • Professional services: Get support from Intalio Solution Experts and professional trainers around the globe.
    • Community Forum: Get support from our wide community of users, and share your knowledge with others.
    • Automatic upgrades: Access new maintenance and GA versions immediately.

    Regards

    Like

    1. Hi, first of all thanks for writing.. but.. lol.. nice (huge) list of points to compare, it sounds like you want me to do your job comparing different projects/products.
      If you have 4 years of experience with a BPMS you will be able to compare both projects quickly.
      I would like to recommend you take a look at the newest jBPM version (6) which provides a modular UI that can be extended and adapted to your needs.
      I would love to have the time and resources to write the article that you request.. but at this moment I need to be focused on improving jBPM and Drools.

      Regards

      PS: by the way.. the last section called : Product Support and Help looks like a copy & paste from the intalio page.

      Like

      1. OK, thanks for the quick response. I assumed that someone had already used Intalio and jBPM. Experience with it would help me a lot.. Can I contact you if I have a problem during testing jBPM?

        Regards

        Like

  32. Hi Rayn, sure, I appreciate your comment and if someone else can write an article like the one that you want that will be awesome.
    Instead of contacting me I strongly suggest you to use the jBPM Forums, so the whole community can help you out and benefit from the answers. Remember that jBPM is a framework and also a BPM Suite, so it will be up to you to define which components do you want to use and which components do you want to provide for your own implementation.

    Regards

    Like

    1. Hi RSJ,
      That sounds as a great community contribution. I would recommend the following:
      1) Use the latest snapshots so if you find issues we can intractable fix them.
      2) Use the runtime manager
      3) define the scope of the benchmarks, there are a lot of things that can be measured. For example, the core engine, the persistence layer, the services for the UI. You need to define what’s the point of doing all those measurements before hand. Honestly I don’t see the reason of saying jBPM or any other BPMS can execute 100K process per second, because in reality if you need that kind of through put you better start writing C/Assembly code. From the Process Engine perspective (and from the business perspective that doesn’t really matter). Unless you can quote a really life example that requires that kind of extreme throughput using persistent processes. So my suggestion is to define a threshold of throughput that you want to achieve first.

      4) share it to the community, we can help you with that and also tuning the tests to make them perform better. Remember that all benchmarks are tuned specifically for each project, so they are biased. Which basically means that if you “translate” the benchmark link that you have pasted here to jBPM, you cannot expect the same level of performance, unless you tweak jbpm to achieve it.

      5) If you are interested in the “UI” services, which means the services that moves the data to the User Interface, I’m working on some mechanism to improve the performance there. IMO, this is what really matters, because this is what changes your end users experience. I’m working on these jbpm-human-task-performance tests in a branch for now, and I will probably need a month or so to stabilize it and push that to master.

      HTH

      Like

  33. So what do you suggest we should target at – our requirement is that we should be able to run around say 3000 workflows initially with Asynchronous task handlers, which will execute a remote process each and that remote process will in-between send back status messages etc through a REST api to workflow engine. Workflow engine should be able to handle these multiple events from multiple clients (Is Drools Fusion THE option here for these asynchronous events’ processing or we should write signal based child workflows inside our bigger workflow for such status messages at Process instance level or write another small workflow that just takes care of status reporting from clients?)

    I am currently searching for Drools Fusion integration with jBPM examples. This looks like a good distinguishing point from Activiti.

    Thanks in advance for helping out. I will keep you posted on Community as well for this effort.

    Like

    1. Hi RSJ,
      Drools Fusion can be used for different things and you get the point the Drools Rule Engine and Fusion are two main differentiators compared with other BPM solutions out there.
      From your description it looks like you don’t want to just do a benchmark, you just want to test a very specific scenario.
      You mention around 3000 process instances.. and now I ask you:
      1) in which time frame? what’s the business requirement for that? what are the limitations? Which amount of data those processes will be handling?
      2) You are including the Rest interfaces, which of course will introduce a performance impact compared of using the APIs directly. Again, the amount of information handled by each process instance will definitely influence the tests here.

      Try to get a simple scenario first to measure performance and then include the more complex things like the rest interface. Unless you describe what your processes are intended to do it is difficult to see if you can use or not the Rules Engine or the Complex Event Process features.

      PS: I’m not sure to understand your question about what it seems process communication, so if you can elaborate on that I might be able to help. Notice that there are several ways to model that kind of scenarios, so it really depends on what you are targeting to.

      Regards

      Like

  34. Actually, the scenario i have mentioned is one of our use cases for which we are evaluating Workflow engines. But in future there will be multiple complex scenarios. We want to choose a Workflow Engine so that we can develop a infrastructure on it and it can handle all scenarios seamlessly. event processing and handling is one of those aspects.
    Even i am trying to understand if we will require Rules engine and Fusion capabilities and how we can use them. But as you mentioned, as the processes get complicated, u require these capabilities, so i am thinking from that point of view, to be able to make the right choice.
    Our team is learning both Java and Workflow engines, so its a difficult task to decide the best engine for future, hence want to be sure.

    About the process instance thing wrt to events, i meant we can have a variable at instance level and we can call a REST api to change that variable for our status part, then the after/beforeVariableChanged event listener can be used to update status.

    About the data part, i will update you with more details in sometime.

    Thanks

    Like

    1. Hi again,
      yeah.. it seems that you are trying to make a decision without knowing too much about the projects or the technology (java in this case) so my recommendation will be to be careful and not trust on the benchmarks for such important decision. Remember that all of them are biased. Try to focus on the component level, what makes more sense for your company and for the long run.

      Regards

      Like

  35. True.
    Regarding Data part, there wont be much data flowing through process instances, some XMLs generated by some task done remotely will be passed back to engine as next input. Main work will be done by our application components, Workflow engine will play Orchestrator for everything that we have to do. And REST interfaces is our design requirement for communication or workflow handling..

    Like

  36. Hi

    I do realize this is an old post however with jBPM and Activiti have since release updated versions as well as the introduciton of Camunda. It would be great to hear your opinion on the differences between these three now in 2014.

    Thanks in advance, Melissa

    Like

    1. Hi Melissa,
      The difference will continue to be the same, because both projects follows different approaches. The same with Camunda, so I don’t think that there are any changes in terms of vision and directions of the projects. One thing that has changed at this point is that the jBPM and Drools (due the growth of the platforms) are now offered and supported by Red Hat as official products with BPMS and BRMS. Giving you the power and trust that a big company such as Red Hat can provide worldwide.

      HTH

      Like

  37. Hi, I have gone through All those discussions and arguments since 2011. Seems like a nice blog to findout which one (Activiti or jbpm) to use. At our organization we are planning to use Opensource JBPM with rules and ESB. At this point(2016) which one do you think we can proceed to use. Your answer is much appreciated. Thank you

    Like

    1. Hi there, as this blog post mention, what are you trying to implement? Which features are important for you? I totally recommend you to take a look at jBPM 6.4.0.Final is going to be released anytime soon.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s