Platform SDK: CDO 1.2.1

Organization Chart Sample Application

You can use this sample application to browse organization information obtained from the Microsoft® Exchange Global Address List (GAL). This sample uses CDO, ASP, Java, and a custom C++ MAPI control (delivered in orgchart.dll).

This sample pulls organization information (a person's manager and direct reports) from the Microsoft Exchange Global Address List. Users can search by the person's name or by e-mail name and the resulting organization chart is displayed in a Java tree-control or in an HTML table.

The Organization Chart sample application is unique in the following way: The other sample applications described in this section project typical "groupware" Microsoft® Outlook™/Microsoft Exchange applications out to the Web.

In contrast, the Organization Chart sample application approaches application development from the point of view of a Web page designer, and builds the application using the platform and services supplied by Microsoft Exchange. In this respect, the directory development and navigation model presented in Organization Chart is different from a typical "groupware" client user interface.

Several technologies were used to create this application:

The C++ and Java components are supplied in both binary and source form.

ASP Scripts

The scripts are based on the Anonymous Logon sample application and the Find User sample application.

ActiveX Control

CDO exposes a Manager property on an AddressEntry object, but it does not expose a corresponding Reports collection of AddressEntry objects. For this reason, it was necessary to write this ActiveX control. It demonstrates how to take a CDO object and recover an IMAPIProp pointer from the IDispatch pointer.

The control exposes just three properties: DataSource, Count, and Item:

The following example in Active Server syntax examines all of the direct reports of the currently logged-on user:

Set oAEReports= Server.CreateObject("OrgChart.Reports")
oAEReports.DataSource= oSession.CurrentUser
For idx= 1 To oAEReports.Count
Set oRep= oSession.GetAddressEntry( oAEReports.Item(idx) )
' do whatever you need to do with the oRep object
Next