Enhydra Shark is Java workflow engine completely based on WfMC and OMG specifications.
Shark is using WfMC's XML Process Definition Language (XPDL) as its native workflow definition format.
Shark is a POJO library which provides APIs based on WfMC and OMG spec as well as a lot of additional Shark specific APIs for easier and more powerful workflow handling
Since Shark is a library, it does not open its own threads, but everything works from client application thread, which makes shark a kind of workflow state machine - a thin layer on top of the database.
This enables Shark to be used in many different environments. Basically shark can be used either directly through its POJO interface by integrating engine within WEB, Swing or pure console application, or it can be used as CORBA, EJB, RMI or WEB Service by making CORBA/EJB/RMI/WEB Service wrappers on top of the POJO interface.
Shark project currently provides partial CORBA wrappers, full EJB wrappers and WEB Service wrappers based on stateless EJB interface and AXIS based WEB Service wrappers deployable on Tomcat. There are also several client applications (including administrative application) in Shark project which are able to access Shark through POJO interface, as well as through CORBA, EJB and WEB Service wrapper interfaces.
Shark is very configurable, and all of its "internal" plug-in interfaces, as well as complete kernel could be replaced by another implementation.
Shark library can be used from many VMs simultaneously (in cluster scenario).
Shark can be configured to use organizational structure defined on LDAP server (through the use of specific implementation of shark's UserGroup plug-in component)
Shark does not use any XPDL's Extended Attributes for its execution rules.
Shark has full JTA support
Shark uses DODS (OR/M tool from Enhydra), which enables shark to use almost any DB system for storing information, and it can be easily configured to switch target DB vendor and/or url (it has predefined scripts, and means to automatically create appropriate tables in those DBs using Octopus - ETL tool from Enhydra)
Shark has implemented ToolAgent concept defined by WfMC to execute tools of automatic, server-side activities of XPDL definition. Several useful ToolAgents are coming with Shark, and anybody can create its own tool agents based on ToolAgent API, which provides enormous capabilities for integration with other systems.
Shark can use custom Java classes (and even interfaces or abstract classes) as process variables.