Matterhorn must provide a mechanism to allow institutions to easily configure workflows that match their local business processes for capturing, processing, and distributing media. I’ve been looking at some open source workflow engines, hoping that one of them will meet our needs. This is a cursory review of the engines I’ve found to date:
KEW
License: ECL
Dependencies: KEW is part of the larger “Rice” system, and depends on a properly configured “Kuali Service Bus”. If KEW is embedded in another Java application, a standalone Rice server is required.
Intended use: KEW seems to be focused on the routing of xml documents for approval. Routing decisions can be based on the content of the xml document. KEW includes features for searching within documents and auditing documents throughout their lifecycle.
First impressions: Some of KEW’s features — its content-based routing, its user and workgroup services, its handling of notes and attachments — seem to align well with Matterhorn’s workflow needs. Others, such as runtime editing of routing rules, don’t seem particularly useful. Between the overhead of deploying a standalone Rice server (which seems pretty high) and KEW’s catering to a small niche market, the benefits of KEW don’t seem to be great enough to justify the costs.
jBPM
License: LGPL
Dependencies: Hibernate (+ transitive dependencies)
Intended use: Generic workflow engine for BPM and service orchestration. Workflow definitions are defined in jPDL or BPEL, either via XML editing or graphically in eclipse.
First impressions: Seems relatively simple to embed, though the particulars of the classloading environment could make the use of hibernate problematic. Good documentation and a quick and easy installation to jboss. Includes a UI for instantiating new process instances and operating on existing instances. Also includes a (beta?) GWT version of the UI. Several major products, including Nuxeo and Alfresco, delegate their workflow needs to jBPM.
os-workflow
License: Modified Apache License
Dependencies: OSCore and PropertySet (both also from opensymphony) and JCL. Beanshell is optional but useful for scripting workflows. Quartz and XFire (which is now CXF and has been for some time) add job scheduling and webservice capabilities, respectively.
Intended use: Generic workflow engine. Defining workflows involves editing xml and scripting processes.
First impressions: Documentation is either out of date or the project itself is fairly stagnant. Workflow definitions must be either on the classpath or you need to write an extension. User / group functionality is provided through OSCore. Proven to work in a range of classloading environments (JEE servers, OSGI, etc). os-workflow is bundled in ServiceMix 4.
ODE
License: ASL 2.0
Dependencies: The usual suspects… various apache libraries, xml parsers, axis, etc.
Intended use: Executes business processes written following the WS-BPEL standard.
First impressions: Although this is apparently considered a workflow engine, it seems to handle service orchestration but not routing processes between automated tasks and human users. Doesn’t seem to meet our needs.
Intalio
License: Mozilla Public License / Community (not open source, but still free) / Commercial.
Dependencies: Unclear. I signed up on their site (which is required to download the Intalio server), but never received the promised confirmation email containing further instructions. After trying again with a different email address, I quit trying.
Intended use: Workflow engine and service orchestration. Handles BPEL4PEOPLE extension.
First impressions: Intalio’s “Open Source Edition” runs on Apache Geronimo. Process definitions can be created and edited in eclipse, though Intalio’s eclipse plugins force you to log in to the Intalio site. Although technically open source, Intalio the business keeps injecting itself into Intalio the product. Unless they commit to the spirit of open source, I would not recommend using their product in Matterhorn.
Update (01/16/2009): I chatted with some very helpful people from Intalio, who provided me with the skinny on their licensing, which places limits on what you can and can not do with the community edition of the software. In particular, it states that you can “use the Intalio Software only with Apache Geronimo with a process data persistence provided by the Derby java database or by the MySQL database, and with authentication services provided by the built-in file-based authentication or Apache DS” [emphasis mine]. After first stating that “you have the freedom to do whatever you want with the community version,” I learned that in fact “you cannot use it with tomcat or oracle… However, you can deploy it on any number of CPUs, in production and development environment, for a unlimited use. You cannot distribute the community license. However, you [are] free to let your clients download your community version, which is covered in the terms and agreement.” So there you go.