Platform SDK: Exchange Server |
A role is an abstract relationship between people in an organization. For example, the role of Expense Approver is usually performed by a person's manager. In fact, a person's manager might perform many roles, for example the roles of Performance Reviewer, Vacation Approver, Task Assigner, and so forth. This abundance of de facto roles for managers is the reason the Routing Wizard by default recognizes the Manager role.
Roles are one-directional, so role relationships can be expressed by sentences like "Jim performs the role of Manager for Sharon." For this reason Jim is referred to as the role performer of the Manager role for Sharon. It is possible that several people in the organization might have the same role performer for a given role. For example, everybody who reports to Jim will have the same role performer for the Expense Approver role — namely, Jim.
Roles are valuable because they make it possible to build general workflow instructions that refer to the relationships between people and not to their particular identities. For example, the first step in an expense approval workflow does not have to be saved as "Submit Sharon's expense report to Jim," but can be saved as "Submit X's expense report to the person performing the role of Expense Approver for X." In this way powerful line-of-business workflows can be defined, encapsulating generalized business logic.
Roles are implemented as nested distribution list (DL). For example, the Expense Approver role is represented by a distribution list, each member of which is also a distribution list. Each of these nested distribution lists represents a performer of the Expense Approver role, encoded as the owner of the distribution list. The members of the nested distibution lists are the people for whom the owner of the distribution list performs the Expense Approver role.