NextFlow: An Object-Business Process Mapping Framework

NextFlow is a mapping framework that supports the representation of business process elements (like process definitions and tasks) using object-oriented abstractions (like interfaces and methods). By using NextFlow, a client system can access a Business Process Management System (BPMS) using traditional OO constructs.

NextFlow in a Nutshell

The first step when using NextFlow is to model the business process (in a notation like BPMN). In the following example we show a trivial business process:

Fig. 1 - Hello World Business Process
Fig. 1 - Hello World Business Process

This process contains a single task (which is an external task in NextFlow terms or a human task in BPMN terms). In NextFlow, this process is represented by the following Java interface:

@Process("org.nextflow.sample.helloworld")
public interface HelloWorld {
    void helloTask();
}
The annotation @Process defines the process associated to this interface. The interface methods are associated to external tasks with the same name. By using this mapped interface, executing a task in the BPMS is a matter of calling traditional OO methods, as illustrated next:
HelloWorld hw = ...;
hw.helloTask();
This code executes the 'hello task' of the 'org.nextflow.sample.helloworld' process in the underlying BPMS. NextFlow also provides means to implement callbacks and to handle business process data. More information in the Documentation section.

Connecting to a BPMS

A WorkflowObjectFactory class provides implementations for the mapped interface at runtime. For example, the following code retrieves an instance for the HelloWorld interface.
Configuration configuration = new Configuration("jwfc:jbpm:helloWorld.bpmn");
WorkflowObjectFactory factory = configuration.createFactory();
HelloWorld helloWorld = factory.start(HelloWorld.class);
First a Configuration must be created passing a URL that contains three information: (1) the communication protocol (by default, jwfc, which means Java Workflow Connectivity); (2) the underlying BPMS engine (jbpm in this case); (3) the definition of the business process resources to be managed (helloWorld.bpmn). NextFlow relies on drivers to connect to the BPMS engine (similar to the strategy used by JDBC). Currently, we are providing drivers for jBPM.

Documentation

Detailed documentation on NextFlow is available in the following master dissertation:

Rogel Garcia de Oliveira. An Object-Business Process Mapping Framework. UFMG, March 2013. Download PDF

Rogel Garcia de Oliveira; Marco Tulio Valente. NextFlow. Technical Report, DCC/UFMG, 2013. Download PDF

Note that for the sake of clarity, some classes and interfaces presented in the dissertation have abbreviated names. For example: The Driver interface is acctualy WorkflowManagerDriver in NextFlow code.

Binaries and Source Code

NextFlow 0.1b (includes source code and a driver for jBPM engine)

jBPM libraries

NextFlow is licensed under a MIT License and the project is hosted at GitHub.
To download the source code go to: https://github.com/aserg-ufmg/nextflow.

More Information

NextFlow is developed and maintained by the Applied Software Engineering Research Group (ASERG) of the Department of Computer Science, at the Federal Universal of Minas Gerais. Main contacts:

Rógel Garcia de Oliveira (rogelgarcia [at] dcc.ufmg.br)

Marco Túlio Valente (mtov [at] dcc.ufmg.br)