| Platform SDK: Exchange Server |
The following is a simple example using Microsoft® Visual Basic® that illustrates how to make a folder routing-enabled. It creates and enables a new event binding for the routing engine in the current Inbox, and installs both a simple Map and the default VBScript actions (see Script Actions) onto that Binding message.
At a more detailed level, this code performs the following steps:
For clarity the example omits most error handling. For example, it installs the event binding only if no other event bindings exist in the folder.
Const PR_EVENT_SCRIPT = &H7102001E
Const SCRIPT_LOCATION = "D:\SRC\ROUTING\ROUTING.VBS"
Dim oSession, oEvents, oMessage As Object
Dim oBindings, oBinding, oBoundFolder, oMap As Object
Set oSession = CreateObject("MAPI.Session")
oSession.logon
Set oEvents = CreateObject("MSExchange.Events")
oEvents.Session = oSession
' Get the event bindings folder associated with the current Inbox
Set oBoundFolder = oEvents.BoundFolder(oSession.Inbox, True)
Set oBindings = oBoundFolder.Bindings
If oBindings.Count > 0 Then
MsgBox ("Existing Agents in this Folder. Press OK to quit.")
Set oEvents = Nothing
oSession.logoff
End
Else
Set oBinding = oBindings.Add
oBinding.Name = "Routing Objects Sample"
oBinding.Active = True
oBinding.EventMask = 1 + 2 + 4 + 8
oBinding.HandlerClassID = "{69E64151-B371-11D0-BCD9-00AA00C1AB1C}"
oBinding.SaveChanges
End If
' Get the (hidden) message associated with this event binding,
' so we can put some properties on it.
Set oMessage = oSession.Getmessage(oBinding.EntryID, Null)
' Read the standard script actions from the file ROUTING.VBS
Open SCRIPT_LOCATION For Input As #1
bstrEventScript = Input$(LOF(1), #1)
Close #1
' Store the script actions in PR_EVENT_SCRIPT
oMessage.Fields.Item(PR_EVENT_SCRIPT) = bstrEventScript
oMessage.Update
' Create a Map object and open it for read/write
Set oMap = CreateObject("ExRt.Map")
' Fill up the Map object with rows of activities
' (The MakeRow function is defined below)
oMap.InsertActivity -1, _
MakeRow( 1, "Send", 2, Array("Jane Smith", False, "Please review…", "<ATTACH>", False, False), 6 )
oMap.InsertActivity -1, MakeRow(2, "Wait", 0, Array(10080), 1)
' Save the map into the hidden message object
oMap.SaveMap oMessage
' Note: Must "dirty" the message by changing some property before
' calling update.
oMessage.Subject = "Routing Object Samples"
oMessage.Update
' Must call SaveCustomChanges on the Binding object since we modified
' custom properties on the event binding message. The message object
' is the argument.
oBinding.SaveCustomChanges oMessage
' Commit changes to any bindings we've modified in this folder
oBoundFolder.SaveChanges
' Clean up
Set oEvents = Nothing
oSession.logoff
'==================================================
' The MakeRow function creates an "ExRt.Row" object and populates
' its properties with information passed as arguments to the
' function. It then returns the new object.
'
' Function MakeRow (
' Id -> Row Id (numeric)
' Action -> Row Action (string)
' Flags -> Action Flag (numeric)
' 0 = engine intrinsic
' 2 = script routine
' Argv -> Action arguments (array)
' Argc -> Number of elements in argv (numeric)
' )
' Returns the created Row object (ExRt.Row)
'==================================================
Function MakeRow ( ID, Action, Flags, Argv, Argc )
Dim RTRow
Dim RTRow = CreateObject("ExRt.Row")
RTRow.ActivityID = ID
RTRow.Action = Action
RTRow.Flags = Flags
If Argc > 0 Then
RTRow.SetArgs Argc, Argv
End If
' Return the object
Set MakeRow = RTRow
End Function