Flexible Workflow Management Systems?
Paul Roberts asks: "I just started on my new job and I have to develop, in J2EE, a workflow management system (WMS) for the financial department. I'm both new to J2EE and WMS, so I could really use any help that experienced Slashdot readers have to offer. I have been warned of frequent changes in the process flows, due to changes in the law or management vision, and the system should be able to handle these, including any retroactive changes that may need to be made. As a bonus, the system could produce personalized letters, but if that feature isn't available, we can program that ourselves. I've been searching the web to find existing solutions, Sourceforge gave a list of 2 pages of active projects (and many more inactive projects), OpenSymphony has OSWorkflow, JBoss now includes jBPM. Of all those WM systems around, what are your experiences, what are the things I should look out for - both in features that should be present and in pitfalls to be avoided?"
First of all, if you are planning on changing the worflows often, you probably want to look at a multi-tier framework that will enable you to model your data in an OO methodology. By using a Object Relational Mapping framework, you can build your implementations on top of a framework that will take care of all your RDBMS work. With these systems, you can more easilly change your model since you are following a generic object model.
The other thing to keep in mind is to not depend on a product to give you a core framework and a UI all in one package. The UI should always be considered secondary to the core framework and you should be able to implement the UI in any way you choose (DHTML, Applet, Thick client...)
I have only seen two Open source frameworks that can follow these conepts. They are:
1) Naked Objects
- http://nakedobjects.org/
- Could be used as a backbone to a workflow system although they are still in the process of realeasing a new version that will.
2) Cayenne
- http://www.objectstyle.org/cayenne/
- Much more enterprise grade framework for building object data models. Probably your best bet.
Currently I use eMatrix which has an awesome core framework but it very expensive to licence and it is a bit of a resource pig. The beauty of eMatrix is the flexibility of the core framework - I can deploy any system you desire on their core framework and not have to worry about any RDBMS coding, PDM, PLM, Workflow, Doc Management, you name it.
I am looking for more alternatives to relieve our licencing costs though and the two noted above are probably the best bets at the current time.
JsD
http://www.google.com.au/search?q=java+workflow/ Second link down seems to be exactly what you want - a comparison of Work Flow engines written in Java http://www.manageability.org/blog/stuff/workflow_i n_java/view/ Content from link attached inline :-)
# Enhydra Shark Shark is completely based on standards from WfMC and OMG using XPDL as its native workflow definition format. Storage of processes and activities is done using Enhydra DODS.
# Codehaus Werkflow Werkflow is a flexible, extensible process- and state-based workflow engine. It aims to satisfy a myriad of possible workflow scenarios, from enterprise-scale business processes to small-scale user-interaction processes. Using a pluggable and layered architecture, workflows with varying semantics can easily be accomodated.
# OpenSymphony OSWorkflow What makes OSWorkflow different is that it is extremely flexible.
# jBpm jBpm is a flexible, extensible workflow management system. Business processes , expressed in a simple and powerfull language and packaged in process archives, serve as input for the jBpm runtime server. jBpm combines easy development of workflow-applications with excellent enterprise application integration (EAI) capabilities. jBpm includes a web-application and a scheduler. jBpm is a scalable J2EE application.
# wfmOpen WfMOpen is a J2EE based implementation of a workflow facility (workflow engine) as proposed by the Workflow Management Coalition (WfMC) and the Object Management Group (OMG). Workflows are specified using WfMC's XML Process Definition Language (XPDL) with some extensions.
# OFBiz Workflow Engine The Open for Business Workflow Engine is based on the WfMC and OMG spec. OFBiz Workflow Engine uses XPDL as its process definition language.
# ObjectWeb Bonita Bonita is a flexible cooperative workflow system, compliant to WfMC specifications. A comprehensive set of integrated graphical tools for performing different kind of actions such as process conception, definition, instanciation, control of processes, and interaction with the users and external applications. 100% browser-based environment with Web Services integration that uses SOAP and XML Data binding technologies in order to encapsulate existing workflow business methods and publish them as a J2EE-based web services. A Third Generation Worflow engine based in the activity anticipation model.
# Bigbross Bossa The engine is very fast and lightweight, uses a very expressive Petri net notation to define workflows, does not requires a RDBMS and is very simple to use and to integrate with java applications. Actually, it was designed to be embedded.
# Taverna The Taverna project aims to provide a language and software tools to facilitate easy use of workflow and distributed compute technology within the eScience community. Taverna is both a workflow enactor and also an editing suite.
# JFolder JFolder (formerly PowerFolder) contains features critical to many applications - including web pages, workflow, security, persistence, email, file management, and data access.
# Open Business Engine Open Business Engine is an open source Java workflow engine which supports the Workflow Management Coalition's (WfMC) workflow specifications, including interface 1, also known as XPDL, interface 2/3 known as WAPI and interface 5 for auditing. OBE provides an environment for executing activities in a controlled, centralized environment. OBE supports both synchronous and asynchronous execution of workflows. The primary OBE implementation is based on J2EE.
# OpenWFE OpenWFE is an open source java workflow engine. It features 3 components, easily scalable : an engine, a worklist and a web interface. Its workflow definition language is inspired of Scheme, a Lisp dialect, though it is expressed in XML.
# Freefluo - Freefluo is a workflow orchestration tool for web serv
XPDL is an XML language made for workflow management. While I did not work with it myself one of my co-workers implemented a "workflow extension" for a well-known J2EE e-commerce suite using XPDL. There is an open source editor (JaWE) and an open source engine (Shark). If I remember correctly we did not use the latter.
XPDL is not the only workflow description standard and XPDL in itself won't bring you anywhere. This is a topic which is unfortunately being worked by a lot of marketing and sales guys who will promise anything to get their tools sold.
While I can assure you that XPDL was the right choice for us it can be the wrong choice for you. This very much depends on what you actually need to achieve. "Workflow" is a really broad topic (as is "J2EE" by the way). If it comes down to management of approval then you maybe better roll your own.
If you are really forced to use J2EE than this probably has a reason which might be that J2EE is used in your company alot. So for questions like persistence you might ask your co-workers. We worked with EJB for years and ended up using our very own "bean managed persistence". I would not advice using EJB to starters but like I said there might be enough knowledge arround you anyway.
As always you can't have both flexibility and simplicity. Unfortunately with Workflow Management this seems to be even more the case. So get your priorities straight and then - Good Luck!