Platform SDK: Exchange Server

About Process Maps

The routing engine is programmed by creating a data structure called a process map, or map for short. This map can be thought of as a low-level description of the logic in a given process or route. This logic can be expressed as a series of activities; for example:

To request approval by a manager

  1. Send message to manager.
  2. Wait for either a response or for a specified time to pass — 24 hours, in this example.
  3. Evaluate whether a response was received or an expiration has occurred.
  4. If expiration, branch to time-out handler.
  5. Else, a message (a response) was received, so
  6. Open the message and collect the approval status.
  7. Evaluate whether the request was approved.
  8. If so, branch to approval handling.
  9. Else, branch to rejection handling.

You can encode logic at this level more or less directly into the routing map, as shown in the following table. This table, in which a manager's approval of an item is requested, is a simplified (pseudocode) view of a map for the preceding steps:

Activity ID Action Argument
10 Send Manager's e-mail address
20 Wait 24 hours
30 ORSplit IsTimeout
40 Goto Time-out handler
50 Receive  
60 ORSplit IsApprove
70 Goto Approved handler
80 Goto Rejected handler

Maps are created and manipulated using the COM interfaces known as the Microsoft Exchange routing objects. Each row of a map consists of an Activity ID, an Action, and one or more parameters (arguments) for each action.