WorkFlows

WorkFlows

A workflow it is a depiction of a sequence of operations, declared as work of a person, a group of persons, an organization of staff, or one or more simple or complex mechanisms. It may be seen as any abstraction of real work, segregated in work share, work split or other types of ordering.

A simple workflow may look like:

Some of the workflow systems are described below.

jBPM

jBPM is a flexible, extensible workflow management system. Business processes are expressed in a simple and powerful language named jPDL. A set of rules is packaged in process archives. These packages serve as input for the jBPM runtime server.

Version: 4.4
License: LGPL and JBoss End User License Agreement (EULA).
Supported Rules: BPMN 2.0 and jPDL
Interoperability: Controlling interacting with jBPM occurs through several services: 
  • RepositoryService(groups all methods to manage the repository of deployments); 
  • ExecutionService(starts a new process instance); 
  • ManagementService (can be used to manage the jobs); 
  • TaskService(provides access to task lists. Typically tasks are associated with a form and displayed in some UI); 
  • HistoryService(provides access to the history information on both running and completed process executions are collected in the history tables). 

All of the mentioned services can be simple obtained from the ProcessEngine object.
jBPM provides JBoss, Spring and other 3rd party integration(please reference to User and Developer Guides for more details).
 
Language Description and Capabilities: jPDL a very powerful language that provides easy creation of: control flow activities, automatic activities(support java, scripts implemented by JSR-223 compliant scripting engine, hql, sql, mail), events, asynchronous continuations, user code configuration, process variables.

Design Tool: Graphical Process Designer (GPD ) plug-in for Eclipse.


Pros:

  1. The jBPM runtime engine can be accessed in any Java environment. From a small spring based web application on Tomcat over a top scale banking application to a plain standalone Java application.
  2. Nice documentation, developer and user forums and blogs can be found on the official site;
  3. Extensibility of jBPM makes adding new process languages easy;
  4. Easy to design and track state;
  5. The graphical diagram of a process can be used as the basis for the communication between non-technical users and developers;
  6. Plug-in for Eclipse IDE makes developing process familiar;
  7. Addition web modeller tool: Signavio.

Cons:

  1. Backward compatibility is not very good (migration from jBPM 3 to jBPM 4 is not supported as is, additional efforts are required).

APACHE ODE

Apache ODE (Orchestration Director Engine) executes business processes written following the WS-BPEL standard. It talks to web services, sending and receiving messages, handling data manipulation and error recovery as described by your process definition. It supports both long and short living process executions to orchestrate all the services that are part of your application.

Version: 1.3.4

License: Apache 2.0

Supported rules: WS-BPEL -an XML-based language.

Interoperability: ODE has a complete management API to check which processes are deployed, running and completed instances, variables values and more. Methods are available through the ProcessManagement and InstanceManagement interfaces. ODE generates events to let you track what is exactly happening in the engine and produces detailed information about process executions. These events are persisted in ODE’s database (Derby, MySQL, Oracle) and can be queried using the Management API. ODE automatically optimizes all process-to-process communication such that all message exchanges happen directly inside the engine and do not go through the integration layer.
ODE relies on a Integration API, which can be used to embed ODE in most any environment.

Language description and capabilities: Processes are written following the WS-BPEL (Web Services Business Process Execution Language) standard. It defines a set of basic control structures like conditions or loops as well as elements to invoke web services and receive messages from services. It relies on WSDL to express web services interfaces. Message structures can be manipulated, assigning parts or the whole of them to variables that can in turn be used to send other messages. ODE supports such basic activities like receive, reply, invoke, assign, throw, wait, sequence, if, while, forEach and so on (refer WS-BPEL 2.0 Specification for more details).

Design Tool: Eclipse BPEL designer.

Pros:

  1. Eclipse can be used for the definition, authoring, editing, deploying, testing and debugging of WS-BPEL 2.0 processes;
  2. Complete API provides easy tracking of the process;
  3. ODE supports well-formed BPEL processes developed in third-party tools;
  4. ODE can be deployed into most common application servers. It is important to note: ODE manages its own transactions and threads, it is not an enterprise application in the J2EE sense;
  5. Integration API allows to ember ODE in most any environment;

Cons:

  1. There is no a stand-alone ODE integration, the standard ODE distributions require either an application server, servlet container, or JBI container. 

Bonita Open Solution 
Bonita Open Solution is an open source Workflow and BPM suite which allows drawing processes using a BPMN palette, connects to the existing systems (Oracle, MySQL, LDAP, Google, Twitter, Facebook) and runs Java Workflow applications

License: GPL v2
Version: 5.2
URL: http://www.bonitasoft.com/

Supported Rules: BPMN 2.0

Interoperability: Bonita Open Solution provides connectors to work with external information systems and internal sources. It comes with a large number of ready-to-use connectors for databases, messaging, executing Java class. It is possible to define global variables and associate them with input and/or output results of the connector. The system provides easy configuration of your own connectors.

Language description and capabilities: Language allows to define:

  1. Steps and assigning them as Human or Automatic;
  2. Assigning actors to human steps;
  3. Specifying global variables for the process and local variables to steps which can be used to create interactive forms;
  4. Defining conditions on transitions to manage multiple output choices from a step;
  5. Defining a gate to manage multiple inputs to a step in an iteration..

Design Tool: BonitaStudio

Pros:

  1. Just install and begin design without any configurations;
  2. Friendly interface BonitaStudio makes design process easy and fast;
  3. Examples, blog, forum and all documentation are available on the official site;
  4. Nice API to work with the engine;
  5. It requires only Java: you can install it in any JVM of your choice, in any web/JEE container or use it as a simple Java library;
  6. Supports importing jBPL3 projects;
  7. Extensibility allows to create new connectors.

Cons:

  1. It’s a heavyweight tool which will require lots of memory.

Imixs IX Workflow

The Imixs Workflow is an open source project based on Java technology. It is possible to use the Imixs Workfow in any kind of java application. Imixs Workflow provides a full featured Workflow Management System (WFMS) based on the Java EE 6 specification. It matches the requirements to a scalable, transactional, robust and simple deployable Java EE Workflow System. This project provides several various components and sub-projects that help building workflow.

Version: 2.1.0

License: GPL
URL: http://www.imixs.org/

Interoperability: The Imixs Workflow Project consists of several various components and artifacts:

1. Imixs Workflow API defines basic concepts for implementing a technology independent workflow engine with Java.
2. Imixs JEE Workflow is a full featured Workflow Management System (WFMS) based on Java EE specification. This project provides EJB, JPA, JSF and Web Service components used in BPM enterprise solutions.
The Imixs Worklfow interfaces define an XML and Web Service API to exchange data from the Imixs Workflow System to other technologies.  Also the XML Subcomponents provide also Client Implementations to be used to interact with an existing Workflow System.
Using the Imixs Workflow API is mostly easy as the API is provided as a framework that of only a few Java libraries which can be integrated into the application. The Imixs Workflow API exclusively uses interfaces and classes contained in the SDK standard of Java. Extensions and additional libraries are not required.
All components of the Imixs Workflow Project are provided as Maven artifacts in the central maven repository. This makes it much more easy to use the components in projects.

Language description and capabilities: 
The main concepts of modeling are Process Entities and Activity Entity (more information about modeling can be found here). These entities allow describing roles, history, variables, security and more.

Design Tool: Imixs Workflow Modeler.

Pros:

  1. Plug-in for Eclipse IDE makes development process easier;
  2. XML and Web Service API can be used to exchange data from the Imixs Workflow System to other technologies;
  3. It’s a faull featured Workflow Management System (WFMS) based on the Java EE 6 specification;
  4. The Imixs Web-Tools provides a toolset of components used to implement JSF Web Applications based on the Imixs JEE Workflow. The JSF Tools allow the fast and easy implementation of typical workflow web applications;

Cons:

  1. Can’t be used as a part of desktop application. For the execution an a
  2. Application server (Glassfish or JBoss) is required.

YAWL

YAWL is an open source BPM/Workflow system. It’s based on a concise and powerful modelling language and handles complex data, transformations, integration with organizational resources and Web Service integration. YAWL is based on a distributed, web-friendly infrastructure and is able to interact with web services declared in WSDL. It provides direct support for all of the predefined workflow patterns specified at http://www.workflowpatterns.com.

License: LGPL 

URL: http://www.yawlfoundation.org/
Version: 2.1

Interoperability: YAWL has a service-oriented architecture. Various services like Web Service Invoker Service, SMS, Twitter, Digital, Email provide a mediation layer between the Engine and external systems. Developer can replace existing components with his own or extend the environment with newly developed components. Custom YAWL services interact with the YAWL engine through XML/HTTP messages. YAWL services can be developed in any programming language and can be deployed in any platform capable of sending and receiving HTTP messages. All data are represent as XML documents.

Language description and capabilities: Defines a new workflow language called YAWL. YAWL is a workflow language built upon two main concepts: workflow patterns and Petri net. YAWL supports the control-flow perspective and the data perspective.
The process may consists of atomic, multiply, composite tasks, conditions, automated actions, variables and more(refer to User and Developer Guide for more information).

Design Tool: The YAWL Editor

Pros:

  1. Through the BPMN2YAWL component, BPMN models can be mapped to the YAWL environment for execution;
  2. Great User Manual and Technical Manual in pdf, examples and forums are available on the official website;
  3. There are some installpacks: YAWL4Study, YAWL4Enterprise, YAWLive which can be used in different cases;
  4. Supports SMS, Twitter, Web services;

Cons:

  1. Can’t be integrated with desktop application.

OpenSymphony OSWorkflow

OSWorkflow can be considered a “low level” workflow implementation. Situations like “loops” and “conditions” that might be represented by a graphical icon in other workflow systems must be “coded” in OSWorkflow.

License: modified Apache License.

URL: http://www.opensymphony.com/osworkflow/

Supported rules: XML

Version: 2.8

Interoperability: OSWorkflow requires PropertySet (persistence-agnostic module that can be used to fulfill storage requirements in applications that can change constantly) and OSCore (a set of utility-classes that are common to the other components of OpenSymphony). It can be easily integrated into any ligthweight container, such as Spring, XWork or NanoContainer. If you need some additional capabilities to access existing Java open-source projects: BeanShell (for workflow scripting), OpenForBusiness (entity engine persistence support), GLUE (for a SOAP interface), Quartz( for job scheduling) you still need to implement some additional interfaces. OSWorkflow can work in any J2EE container, including servlet containers (EJB support does not work here).

Language description and capabilities: Creating workflows by XML coding is recommended. OSWorkflow provides all of the workflow constructs that you might come across in real-life processes like steps, conditions, loops, splits, joins roles, etc.

Design Tool:
OSWorkflow has a GUI designer that can be used to create workflow descriptors. The designer currently supports most of the workflow functionality, including the creation of steps, splits, and joins. Having said that, it is not yet considered to be production quality.

Pros:

  1. Сomplete API for good tracking the process;
  2. Using API it’s easy to instantiate the workflow inside of your application;
  3. Extremely flexible.

Cons:

  1. Absence of good quality visual designer and “low level” workflow implementation makes its design process longer then other considered workflows;
  2. Requires application server;
  3. Lack of good docs and support.

All of the considered workflow engines have cons and pros, however JBPM and Bonito will probably cover most of the cases when workflows are required to be integrated into the application.