Bonita Open Solution : A quick look

I’ve been playing with a few open source BPMS tools of late including Process Maker and Intalio Community Edition, however I’ve been most intrigued by Bonita Open Solution which is currently available at version 5.1.1 from their website. The product combines three solutions in one via 1) an innovative process design studio, 2) a BPM engine and 3) a fancy end user interface which takes an email approach to managing process instances (cases).

The product is a good size at 200mb but installation is effortless and I was up and running with a test process within minutes.

Bonita Studio is a very easy to grasp application and for the experienced BPM professional, especially those who have used Tibco Business Studio / Intalio the eclipse style interface will seem very familiar. I found the process design to be very enjoyable and much prefer the BPMN style notation used than Metastorms more business friendly ‘stages and actions’ approach.

  • Process Variables

    Process variables are created for use within the process and the forms at each task. Variables can be of types Boolean, Date, Int, Float, Text, List, Attachment or Java Object (any class from the java language). Variables are stored and accessed using the syntax ${myVariable}.

    • Roles

    Bonita determines its human task roles using groups. Groups are defined within Bonito Studio and the process initiator group is predefined. You assign a group to each task through the ‘Actors’ task property.

    • Connectors

    In order to work with external information systems in Bonita Open Solution you need to create connectors to those systems. The out of the box connectors list is impressive (see list groups below) but you can if you so wish create your own connectors using the Bonita API.

    The Bonita Open Source Pre-defined connectors include the groups:
    1. Databases (Sybase, SQL Server, DB2, AS400, MySql, Oracle and a whole load more)
    2. Google Calender
    3. Java Executor (executes a java class)
    4. LDAP (allows searching of LDAP directory)
    5. Email
    6. Scripting (Shell and Groovy (Bonitas own scripting language)
    7. Social (send messages to twitter)
    8. SugarCRM (interactions with the Sugar CRM)
    9. Web Services (interact with web services)
    Connectors can be configured (e.g. i configured sending a twitter message from my bpmtalk account to my personal twitter account) and saved for later re-use. During this connector configuration you specify which task ‘event’ the connector should execute on (start, end cancel or abort).
    One point regarding database connectors, to get your data using the connector wizard you can specify the database server properties (including connecting port) and write the SQL query. Finally you need to have a variable handy to accept the returned results. Bonita suggests you create a variable of type ‘Java Class’ which allows you to select any of the available classes in Java. I chose the recommend java.util.list class and had my database results assigned to that.
    I saved both my connectors to the process for later use. Connectors can also be saved against each process step.
    One final point on connectors, they are continuing to grow as users are contributing new connectors via the bonita community site. Additional connectors included google translation, csv reader, picasso etc are available.
    • Processes

    The process designer is very easy to use and the process components are in a simple BPMN style. The available process components are:
    1. Step (activity or state of type human, automatic or sub process)
    2. Start (process start event)
    3. End (process end event)
    4. Gate (way for AND or XOR decision making)
    5. Transition (continuing the flow with the option for flow conditions)
    6. Lane (for process swim lanes)
    7. Pool (for multiple lanes)
    8. Timer
    9. Message (for throwing or catching messages)
    10. Message Flow
    11. Text Annotation
    I can drag process components onto the canvas with ease and the ability to continue drawing the process from the last placed component (e.g. a step) really helps in quickly building the workflow. Each process component has a good amount of configurable options such as associating connectors, actors (roles), deadlines, forms, data, advanced options and the ability to instantiate a sub process (other deployed bonita processes) and map variable values from the parent process to the child.

    Each process is saved as a .bar file and Bonita ships with a few example processes for you to get to grips with. You can also export processes in the form of a zip file. As far as transactional support goes, there doesn’t appear to be any multi step transactional support, only the ability to abort a step if an error is encountered.
    • Forms

    Forms can be created per process or per step of the process. The benefit here is that you can select which process variables you wish to use on the form and the system will add them for you on the form design canvas.
    To create a step form, click on the spanner and screwdriver icon of the step and select the user step type (types can be sub process (with variable mapping) or man tasks). Once the step type is defined you can attach/create a form for that step.
    Form fields values are stored in ${field_Name} format with the field_ prefix being system generated. You specify the copying of form field variables into process variables as part of the form submit button or as each field is changed.
    Field validation is far more advanced than what Metastorm BPM offers and so is the form design options in general, however I do notice there doesn’t appear to be a away of scripting field change events events at this time. OnLoad and OnSubmit events can be scripted.
    The advantage of the Bonita forms is that you can create several of them against one process step allowing the user to step forward and backword through the forms in a wizard format. Your forms can utilise a HTML template for a standard look and feel as can the Bonita user experience interface.
    My only gripes with the forms is the lack of any grid control for viewing data and that you are designing to an HTML table similar to Cordys Process Factory.
    • Scripting
    Groovy is the Java based language that Bonita Open Solution uses and provides Bonita with 600+ built in functions. Each function has its return type (void, string, object, list etc) displayed in the Groovy expression builder and each function is complemented with a description of the function and its input parameters.  You can also run form submission logic using groovy.
    Groovy scripts can be saved and re-used later.
    • Summary
    All in all I find that Bonita Open Solution is a very good open source product that could handle plenty of small to mid sized business processes. The email like client interface for processing cases  and managing your other cases is very nice and the addition of simple case stats is a nice touch. The product clearly lacks certain features for more serious BPM development and there is still work to be done around the available form controls. My hope for the product is that its process designer does pickup more of the BPMN 2.0 components (intermediate events, more task types (script, service etc) and data objects for example) as it is still very limited however this is definitely a product I’ll be keeping my eye on.



    1. Hi,

      Nice coverage of the product! Just wanted to add that most of the features in your “wishlist” for Bonita Open Solution are already developed and will be part of 5.2 version (released in a couple of days from now). That includes support for more BPMN2 features such Links, Loop, Script and Service Task, Default Transitions and Conditional Transitions.
      Forms control has also been improved in 5.2 allowing users to enhance forms with their own javascript for a better control of events.

      Hope now you could also consider the solution for “serious BPM developments” 🙂

      best regards,

      [bpmtalk – That’s great Miguel, we’ll gladly revisit the new version. It really is a super BPMS for the price tag! ;-)]

    2. Excellent summary, thanks.

      I am definitely going to add this to our list of tools to try out. As you say, the price is right!

      I often get frustrated not being able to provide relatively simple but effective solutions for a few thou$ because the vendors scrape so much for licences. This could be a nice way to deliver for the smaller customers.

      1. Hi Jerome,

        Re the lower end BPM work, I know exactly what you mean. We tend to talk to smaller clients about Intalio Community Edition (Free) and Cordys Process Factory (£50 per single user license per year). Great for clients who want little software cost outlay and can spend more on consulting resource.

        I’d say Intalio has more capability than Bonita at this point in time, but is a pain to setup if one isn’t overly familiar with Java and extracting Jar’s etc (I’m all about the .NET). Bonita is certainly a great app for an open source bpm tool. I hear v5.2 improves the modeller to be BPMN v2 compliant and should be available via the BonitaSoft site some time soon.

        Re your point on grids, this is an area I’d like to see the Bonita guys work on, Metastorm has the edge in this respect as it does with general ease of interaction with databases and other BO’s (especially in v9).


    3. Good description of Bonita. I am using Bonita 5.1.1, becasuse I found a guide to instal in server evironment.. By now i have a problem with mysql connrctor. Do you have any small example on this??? i followed all the steps indicated in video demo, but i can not connect to mysql. Thanks

    Leave a Reply

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

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

    Google+ photo

    You are commenting using your Google+ 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 )


    Connecting to %s