Programming MicrosoftВ® OutlookВ® and Microsoft Exchange 2003, Third Edition (Pro-Developer)
Now that you have a better understanding of collaboration and collaborative technologies, let's look briefly at the systems you can create. With Exchange Server, you can build many types of open and extensible applications, all of which can take advantage of information stored inside or outside Exchange Server. You can make use of other data sources in your organization, such as SQL Server databases. This allows you to pick the best database for storing the application's information without compromising the consistency of the user interface.
The types of collaborative applications you can build can be broken down into five categories: messaging, tracking, workflow, real-time, and knowledge management. These categories are not mutually exclusive ”for example, a workflow application can take advantage of messaging services. These categories simply define the primary function of a particular application. Throughout this book, we'll explore sample applications that fall into these categories.
Messaging Applications
Messaging applications primarily use the messaging infrastructure of Exchange Server. E-mail is the best known of these, but you can build many other types, such as discussion group applications. Exchange Server supports threaded discussions; you can make any folder in Exchange Server a threaded discussion folder by changing the view of the messages inside that folder. These discussions can be replicated to and from Internet newsgroups and can be moderated for appropriate content.
Another example of an application built on the messaging infrastructure is a mailbox agent. A mailbox agent can perform many types of functions, depending on how it's programmed. For example, suppose a sales force needs to run certain queries against a database of sales information. You could write a Microsoft Access application that queries the database and returns the results, but with such a solution a salesperson wouldn't be able to work on other tasks until the database had processed the request and returned the data set to the Access user interface. This means that users would have to check the Access application continually to see whether the data is available. With a mailbox agent or a server event, a salesperson can use a form to specify the type of information she needs and then email the form to the agent. The agent can process the form and run the query on the salesperson's behalf . Once the database processes the query, the agent can email the data set to the salesperson. Then the salesperson will receive notification containing the requested data set.
A mailing list server is a messaging agent that forwards all messages it receives to its registered recipients and allows users to add and remove themselves from the list of recipients via e-mail. A document library, another example of a messaging application, lets users submit documents to a library by dragging and dropping them, e-mailing them, or sending them through a Web browser. Because these libraries are stored in a central location, many users have access to the documents. A developer can add intelligence to the library by creating a mailbox agent that notifies users when new documents are available. Custom views are available on a folder so users can quickly find the documents they want. Comments about the documents can be placed in the folder, and interested users can gauge their relative value.
One popular example of a document library is a library of Web favorites. You can drag and drop Internet shortcuts into this library to make a user's personal favorites become corporate favorites. Users also gain the benefit of being able to create custom fields and views that describe and categorize the favorites in the folder.
Tracking Applications
Tracking applications manage and track information, such as a list of tasks, from its creation to its deletion or "completion." Tracking applications usually require the integration of many different data sources because the information usually resides in more than one location.
One example of a tracking application is a job candidate application that enables a human resource department and other employees to track a prospective employee from the moment he submits a resume through the interview process and the decision to hire or reject. The candidate's status is always available for review. Figure 1-14 shows an example of a hypothetical job candidate tracking application that uses Outlook and Exchange Server to follow prospective candidates.
You could also create an account tracking application that includes tracking for contacts, revenue, and tasks. Figure 1-15 shows the Account Tracking application we'll build in Chapter 8.
Help desks also make use of tracking applications. In a help desk application, trouble tickets that specify technical problems are submitted to the help desk by users. Problems are assigned to technicians on the basis of the ticket type. Audit trails are established for each ticket so the technicians have historical information that helps them work on the problems. After fixing a problem, the technician adds the ticket and its resolution to a log of frequently asked questions, which users can query.
A help desk might make use of tracking applications for other purposes as well, such as inventory management. For example, if a technician has to request a new machine for a user, an inventory management program can inform the technician whether a new machine is in stock. By adding a workflow application to the help desk application, the technician can obtain approval for the machine from the user's manager and the help desk manager. Figure 1-16 shows the Help desk application we'll build in Chapter 11.
One last example of a tracking application you might build is a class registration system that tracks information about a class and its participants . It informs users when classes they want to take are available, reminds them at least one day in advance which classes they are registered for, and notifies them of any updated materials the teacher has made available. When the class is completed, class notes and a survey can be distributed to class members . Chapter 15 shows how to build this type of tracking application.
Workflow Applications
Workflow applications are primarily constructed around the concept of the three R's: roles, routes, and rules:
-
Roles A role is the logical representation of a person or an application in a workflow process. For example, the expense report approver role can change dynamically depending on who is involved in the particular workflow process. A role allows you to easily abstract the different functions people perform in a workflow process.
-
Routes A route defines what information will be routed and who will receive it. A route can be sequential, parallel, conditional, or any combination of these. Figure 1-17 illustrates three types of routes.
Figure 1-17: Sequential, parallel, and conditional routing types -
Rules A rule is conditional logic that assesses the status of the workflow process and determines the next steps. Here's an example of a rule: if the manager approves the expense report, route the report to accounting; otherwise , send the expense report back to the submitter . A rule can be based on the properties of a message or some other data source.
Let's take a brief look at a few workflow samples. Expense reports are one example of a workflow application that you can build with Exchange Server. Here's how such a workflow application might function: A user submits expense reports from a Web application, and depending on the total amount of the expense reports , a particular workflow process is started. If the expense is under $1,000, the expense report is automatically approved; if the expense is $1,000 or more, the report is routed to the user's manager for approval. The manager either approves or rejects the expense report. Based on the manager's decision, another workflow process is initiated to either pay the expense report or inform the user that the expense report has been denied . Finally, if the manager does not approve or reject the expense report in a certain period of time, the workflow application routes the expense report to the manager's manager for approval.
Another example of a workflow application is a document routing application in which a document to be reviewed is routed to users in parallel, user feedback is collected within a certain period of time and consolidated into a single message, and the message is sent to the author of the document. You can build this type of application using server events in Exchange 2003.
Real-Time Applications
Real-time collaborative applications are the newest category of Exchange Server applications. Real-time applications have the potential to enable instantaneous collaboration (as compared to the "delayed" collaboration of messaging-based applications). The challenge, of course, is to connect geographically dispersed users in real time. When you combine real-time and messaging technologies, you can build applications that leverage the strengths of both.
One example of a real-time application that you can build with Exchange Server is a class registration system that schedules virtual classes by sending Microsoft NetMeeting requests . NetMeeting allows individuals to collaborate over the Internet using video, audio, whiteboards , and application-sharing technology, as shown in Figure 1-18. In Chapter 8, we'll examine an Account Tracking sample that demonstrates how to integrate NetMeeting into your own application.
Another real-time application that will interest Exchange Server developers is instant messaging (IM). IM allows users to monitor when other users are on line so they can collaborate with one another. It allows two different organizations to create virtual " buddies ," or business partners . IM is like a virtual water cooler !
As you will see with the real-time communication server that works on Windows Server 2003, IM is becoming a crucial part of collaborative applications because of IM's ability to view presence information and also provide rich communication and collaboration capabilities such as whiteboarding, file transfer, and video teleconferencing. In Chapter 19, I will cover how to programmatically add IM capabilities to your collaborative applications.
|
Chat, a popular service on the Internet, is one example of a real-time application. Chat enables real-time conversation by allowing a participant to type messages that appear instantly on another participant's computer. Chat can greatly enhance functionality for users when it's added to collaborative applications. For example, you can extend a help desk application with chat services so the help desk technicians can hold "office hours" during which they conduct real-time question-and-answer sessions. Those chat transcripts can be posted to a discussion group so other users can troubleshoot problems based on the transcript.
|
Knowledge Management Applications
Knowledge management refers to the use of collaborative technology to implement structured processes for finding and gathering information ”in other words, it is a strategy for moving information from an individual to a larger group or a corporation. Knowledge management applications make available all kinds of information, from individual experiences to best practices to detailed technical data. The effective sharing of knowledge brings to a company three primary advantages: more effective use of existing intellectual assets, competitive advantage through the pooling of resources and greater accessibility of important information, and new opportunities through more focused innovation.
You can use collaborative technology such as Exchange Server to employ a knowledge management strategy, but collaborative technology is not synonymous with knowledge management. That is, corporations must establish processes not only for collaboration but also for gathering and making accessible information that is current, relevant, and tested .
One type of application you can build with Exchange Server to implement knowledge management is a search application for searching discussion groups and contacts in Exchange Server as well as searching in SQL Server databases and Web sites. With this powerful search capability, users do not have to change the way they collaborate because the search engine crawls through the necessary data sources to retrieve the relevant information.
Another type of application that facilitates knowledge management is a knowledge base. By developing knowledge bases with Exchange Server, you can enhance conventional collaborative methods . Typically, knowledge bases are used by corporate users who post free-form, unmoderated messages to a common folder. Users who want specific information, such as text in a message, query the knowledge base in a general way and then cull the returned information that meets their criteria.
Because of the general nature of the queries and the unstructured way information is posted, many of the results are irrelevant or invalid. Imagine how a more structured method of entering and searching for information in a knowledge base could facilitate collaboration and knowledge management. Suppose users who post information to a knowledge base had to fill out a form that asked them to categorize their information, indicate how long it would be valid, and rate its usefulness if it originated from external sources. Users would be able to query by using categories and ratings and would receive only current and relevant information. By supplying just a little extra information, users can make the data stored in the knowledge base infinitely more useful. And if you were to add smart agent technology to the application, you could program the knowledge base to e-mail links to relevant information that meets the users' predefined criteria.