Technical Resources


Flux Flux

Flux or jBPM?

July 2008



Ideas to help guide your decision on whether to use Flux or jBPM


Flux and jBPM have similarities and differences. The primary similarity is that they are both embeddable Java workflow engines. However, they take different approaches to workflow. As such, one solution may be better for you than the other. This article explores how you can decide whether Flux or jBPM might be better suited for your Java application.


Caveat: This article strives to make a balanced presentation of these different workflow technologies. We know Flux better than we know jBPM and apologize for any unintended misrepresentation of jBPM’s capabilities.


People-based Workflows: Both jBPM and Flux use a sophisticated workflow model for describing processes (workflows). jBPM focuses on processes that involve people. jBPM provides the capability to present a task list to a user and collect data for each task from a user. On a lesser scale, Flux provides these capabilities through an example called Flux4People. The source code to this example is included. jBPM is likely the better choice when creating people-driven workflows.


Background and Batch Processing: Flux runs entire workflows in the background via a workflow manager. Flux is responsible for creating, managing, and throttling those threads. jBPM has a “job executor” that runs single steps of a workflow and timed tasks in the background. Flux is likely the better choice when you need to run entire workflows in the background or you must run more background tasks than your computer can handle at once and throttling is required.


BPEL: jBPM provides explicit support for BPEL (business process execution language). Flux does not. If you are required to have BPEL support in your application, jBPM is the better choice.


Running Command Line Processes: For running external operating system processes, Flux provides explicit support for creating and killing operating system processes for running scripts and executables, either on the same computer as the Flux workflow engine or on a remote computer. Script output is collected and made available to the workflow for further processing. jBPM has no such support. Flux is likely the better choice for launching and managing the execution of scripts and other operating system processes within a Java workflow environment.


File Monitoring and Processing: For detecting and processing files arriving from remote servers, Flux provides explicit, built-in support for remote file monitoring. For jBPM, we think the JBoss Enterprise Service Bus (ESB) would have to be configured to monitor incoming files and then perform a hand-off to jBPM. Due to the built-in support and ease of configuring file monitoring, Flux is likely the better choice.


Process Archives: jBPM provides a unique feature that Flux does not. The workflow definition, associated Java classes, and all associated jar files can be packaged into a single file, called the process archive. This feature makes it handy to keep all associated components of a workflow together in jBPM. If the process archive feature is crucial to your application, jBPM may be the better choice.


Summary: As with any comparable technologies, Flux and jBPM have their strengths and weaknesses. Obviously, there are many, many other features that both jBPM and Flux have that were not covered above. However, you can use the above highlights to help guide you in deciding whether Flux or jBPM is more suitable for your Java application’s needs.


The Flux Team

July 2008