Workflow engine
Active Roles leverages the Microsoft Windows Workflow Foundation runtime engine for creating and maintaining workflow instances. The engine can support multiple workflow instances running concurrently. When a workflow is started, the engine monitors the state of the workflow instance, coordinates the routing of activities in the workflow instance, determines which activities are eligible to run, and runs activities. The workflow engine is hosted in-process with the Administration Service, which enables workflows to communicate with Active Roles at run time.
Email notifications
Users are notified via email about specific situations that manifest within a workflow. A notification message is generated and sent to the designated recipients to inform them that a certain event has occurred, such as a new approval task has been submitted to the approvers or the operation has been completed. A notification configuration involves such elements as the event to notify of, the list of the notification recipients, and the notification message template.
About workflow processes
The logic of an automated management process can be implemented by using administrative policies in Active Roles. Yet creating and maintaining complex, multi-step processes in that way can be challenging. Workflows provide a different approach, allowing IT administrators to define a management process graphically. This can be faster than building the process by applying individual policies, and it also makes the process easier to understand, explain, and change.
The figure below shows a workflow process created in the Active Roles Console. In this simple example, upon a request to add a user to a certain group, the workflow first checks to see if the group has an owner. If the group has no owner, the requested changes are denied and the workflow is complete; otherwise, the changes are submitted to the group owner for approval.
When approval is received, Active Roles applies the changes, adding the user to the group. On the process diagram, this step is referred to as Operation execution. If the owner rejects the changes, the workflow finishes on the previous (approval) step so that the changes are not applied. After the changes are made, the workflow sends an email notification to the person who requested the changes, and then finishes.
Figure 137: Workflow process in Active Roles
In the above example, the workflow manages the process of adding a user to a group according to the rules defined at design time. The rules constitute the workflow definition, and include the activities that occur within the process and the relationships between activities. An activity in a process definition can be a pre-defined function available out of the box, such as a request for approval or a notification of conditions that require user interaction, or it can be a custom function created using script technologies.
A workflow process starts when the requested changes meet the conditions specified in the workflow definition. In the above example, the conditions may be set up so that the workflow starts whenever an Active Roles user makes changes to the membership list of a certain group. Once the conditions are fulfilled, the workflow process starts to drive the changes through the workflow definition, performing automated steps and, if necessary, requesting human interaction such as approval.
Workflow processing overview
In Active Roles, directory objects such as users, groups, or computers are managed by the Administration Service. These objects can be created, changed, or deleted through requests made to the Administration Service. Every request initiates an operation to make the requested changes to directory data. For example, a request to create a user or group initiates the Create operation with the target object type set to User or Group, respectively; a request to add users to a group initiates the Modify operation on that group.
Once an operation has been initiated, the Administration Service starts processing the operation. Each operation is represented by a single object, usually referred to as the Request object, which contains all information necessary to perform the operation. Therefore, operation processing takes the form of passing the Request object through a number of phases within the Administration Service.
The operation processing model in Active Roles is composed of four main phases: access check, pre-run, run, and post-run. The Request object passes through these phases in the following order:
-
Access check: In this phase, the Administration Service checks to see whether the user or system that issued the request has sufficient rights to make the requested changes. If there are insufficient rights, the operation is denied.
-
Pre-execution: During this phase, the Administration Service first runs the pre-run workflow activities. These are the activities located in the upper part of the workflow process diagram, above the Operation execution line. A typical example includes Approval activities: It is at this point that approvers can permit or reject the operation.
Then, after the pre-run activities are completed so that the operation is not rejected, the Administration Service runs the pre-run policies. Typical examples of such policies include property generation and validation rules and the functions implementing so-called pre-event handlers in script policies.
-
Execution: In this phase, the Administration Service performs the operation, making the requested changes to directory data. For example, when the creation of a user is requested, the user is actually created during this phase.
-
Post-execution: During this phase, the Administration Service first runs the post-run policies. For example, upon creation of a user, the provisioning of a home folder or group memberships for that user occurs at this point. The functions that implement post-event handlers in script policies are also run in this step.
Finally, after the post-run polices finish running, the Administration Service runs the post-run workflow activities. These are the activities located in the lower part of the workflow process diagram, beneath the Operation execution line. A typical example is Notification activities that send out emails informing of the operation completion.
The Administration Service runs the workflow activities one by one, in sequential order as shown on the workflow process diagram, until the last activity finishes. If-Else activities can be used to achieve conditional branching in workflows, which makes it possible to switch the sequence of activities depending on the data involved in the request.
At the beginning of the pre-run phase, the Administration Service determines the workflows to start. The request is compared to all the existing workflow definitions. In order for a workflow to start, the requested operation needs to satisfy the start conditions defined for that workflow. If the start conditions are satisfied, the workflow is matched to the request.
For a workflow that is matched to the request, the Administration Service runs the activities found in that workflow during the corresponding phases of the operation processing. One workflow or multiple workflows can be matched to a single request. In case of multiple workflows, the Administration Service starts each of them one by one, and first runs all the pre-run activities included in those workflows. Then, during the post-run phase, the Administration Service runs all the post-run activities included in those workflows.
If multiple workflows are matched to a single request, then Active Roles uses the edsaWorkflowPriority attribute of the workflow definition object to determine the order in which to run the workflows. The activities of the workflow with a lower value of that attribute are initiated prior to the activities of the workflow with a higher value of that attribute. The workflows with the same priority value are initiated in ascending order of workflow names. The edsaWorkflowPriority attribute is set to 500 by default. If the edsaWorkflowPriority attribute is not set, Active Roles assumes that the workflow has the priority value of 500.
You can change the value of the edsaWorkflowPriority attribute to ensure that a given workflow takes precedence over other workflows. A lower value of that attribute indicates a higher priority whereas a higher value indicates a lower priority. To view or change the edsaWorkflowPriority attribute, use the Advanced Properties command on the workflow definition object in the Active Roles Console.