Platform SDK: Exchange 2000 Server

Database Workflows versus E-mail Workflows

CDO Workflow for Exchange 2000 objects support both database-style workflows and email-style workflows.

Database-Style Workflow

You commonly implement workflows in a database system where users connect to the database, or to a database front-end, and update the work item data. The client application updates a property on the work item. You, in turn, update the workflow state depending on the value of this property.

You may use email in this type of application purely to send notification messages to people’s inboxes. These notification messages contain a URL or other link to the actual work item that needs updating. You authenticate the user’s identity through ACL's and hence control direct access to the work item in the database.

Email-Style Workflow

In email systems, completely disconnected clients participate in a workflow. Here you update the workflow state upon receipt of a message that correlates to an existing workflow process instance. Direct authentication of such messages via Microsoft® Windows® 2000 logon identities is not possible. CDO Workflow for Exchange 2000 Server uses digital signatures to ensure the authenticity of the message. This mechanism can verify whether a particular message is valid to update the workflow state. In some cases – particularly ad hoc intranet applications – the sender’s email address alone may be sufficient authentication. In addition to sender authenticity, the system checks that the content of the message is a valid workflow response (for example, not an non-delivery receipt, read receipt, misdirected personal mail, etc).

The system correlates incoming messages to an existing workflow process instance, otherwise it considers them new documents and starts new workflow instances. Standard SMTP mail does not always contain sufficient information for correlation. Some mailers have a message ID, some do not, or headers routinely are re-written. CDO Workflow implements a reliable mechanism to make sure each outgoing and incoming workflow item or response has a unique correlation ID.

See Also

IWorkflowSession.TrackingTable

IWorkflowMessage.SendWorkflowMessage