Nova Bonita Workflow APIs for handling workflow definition, deployment, execution and history.

Nova Bonita is the name of new version of Bonita v4.

"Nova" technology is based on the "Process Virtual Machine" conceptual model for processes. The Process Virtual Machine defines a generic process engine enabling support for multiple process languages (such BPEL, XPDL).

Nova Bonita is an extensible and embeddable workflow solution that can be easily deployed in both standard (JSE) and Enterprise (JEE) environments.

As a example of this, Nova Bonita provides a default JEE integration with a EJB3 lightweight container such Easybeans . You can easily deploy Nova Bonita in another JEE application server by just deploying the bonita.ear file in your favorite application server.

Nova Bonita APIs are divided into 5 different areas:

There's also a generic API that allow to execute specific commands that should be needed by the workflow based application.

Nova Bonita local vs remote applications
An utility class has been provided to unify access to Bonita APIs from both local and remote environments and so to avoid the use of lookups in JEE deployments: org.ow2.bonita.util.AccessorUtil. Through this class, Nova Bonita APIs can be reached in a unified way in both local and remote applications. From a developer point of view Nova Bonita APIs are just Java POJOs.

The AccessorUtil objet will also be leveraged inside BPM artifacts such hooks, mappers or performer assignments to deal with Nova Bonita APIs.

For that to be done, the system property called "org.ow2.bonita.api-type" must be defined at client side to specify whether the APIs will be reached locally or remotely (possible values are "Standard","AutoDetect",'EJB2" and "EJB3").

There are two available methodes in the AccessorUtil class (under the org.ow2.bonita.util package):

Hereafter you will find an example on how to use the AccessorUtil class from your client application:

    RuntimeAPI runtimeAPI = AccessorUtil.getAPIAccessor().getRuntimeAPI();
    QueryRuntimeAPI queryRuntimenAPI = AccessorUtil.getQueryAPIAccessor().getQueryRuntimeAPI();

Note: