1. Architecture
   1.1 Process Manager
   1.2 Process Definition Manager
   1.3 Persistence Manager
   1.4 Audit Manager
   1.5 JaWS
   1.6 Trigger Manager
   1.7 Security Connector
   1.8 Utility Activities
 1. Architecture
JawFlow is composed by many interacting modules. Many of these modules are JMX Mbeans and so they need a JMX Agent to run. To develop, test and run JawFlow we used Jboss AS (www.jboss.org) but since there are no dependencies in the code related to Jboss it can be installed in any application server supporting the JMX technology. We only support here Jboss AS and a detailed installation and configuration procedure is reported in chapter 2
 1.1 Process Manager
The ProcessManager is the kernel of JawFlow. It is responsible of process scheduling and enqueueing. It enquires the JaWS module to follow the work path in order to respect the flow depicted in the process definitions.
 1.2 Process Definition Manager
The Process Manager uses the Process Definition Manager in order to store, retrieve and delete the process definitions. The process definitions are written in XPDL, the XML Process Definition Language, a standard language proposed by the WfMC coalition. The process definition Manager acts in two ways: the first as a persistence manager for process definitions, the second as a cache manager to avoid the process of loading process definition from the persistence repository. The process definition manager can be plugged into JawFlow respecting some Mbean interfaces. The actual implementation uses Hibernate as a persistence mechanism and a JNDI serialization as a cache manager.
 1.3 Persistence Manager
The persistence Manager is in charge of storing and retrieving the Flow status and any change that occurs to it. It stores any information declared as "Extended Attribute" in the Workflow.
 1.4 Audit Manager
The Audit Manager is notified of any change that occurs to the status of the activities and of the processes. It is implemented in an asynchronous way using a JMS Queue and a MDB that receives notifications and stores data. The actual implementation of the storage has been done using Hibernate a llowing fast coding of the workflow structure db operations. The Audit Manager is implemented using a chain of delegation pattern, allowing to extend its behaviour by registering other listeners for the change of status notifications.
 1.5 JaWS
The Java Workflow System is just a decision engine which, invoked by the ProcessManager, controls the path of the workflow. It is able to recognized decisional structure defined by the WfMC as splits and joins.
 1.6 Trigger Manager
It is possible to register a number of "triggers" that, at the occurrence of particular events, can instance a defined process and have it started. The Trigger Manager component controls the triggering subsystem and runs the monitors. Four types of trigger are present in Jawflow:
File TriggerMonitors a directory and its subdirs for any file copied into it
Mail Trigger Monitors a mailbox for e-mails arriving respecting required conditions
Time TriggerIt is a sort of "cron" scheduler able to start processes at defined time conditions
FTP TriggerSimilar to the File trigger but acts remotely

It is so possible, for instance, to start a particular process when a file is copied into a defined directory or when a mail arrives in a defined mailbox.
 1.7 Security Connector
It provides a secure mechanism of talking in a stateless way with the jawflow server. A Standard connector has been written for Jboss but since the methods used are all exposed by the underlying Mbeans it is possible to write your own connector.
 1.8 Utility Activities
A number of utility Java activities have been included in the jawflow distributions. For a complete list, please refer to the related documentation.
  Contents Chapter 2