Now that you have a better understanding of collaboration and collaborative technology, let's look briefly at the systems you can create. With Exchange Server, you can build many different types of open and extensible applications, all of which can take advantage of information stored inside and outside of Exchange Server. You can leverage other data sources in your organization, such as SQL databases. This openness to other data sources allows you to pick the best database for storing the application's information without compromising the user interface consistency.
The types of applications you can build can be broken down into five categories: messaging, tracking, workflow, real-time, and knowledge management. None of these application categories are mutually exclusive—for example, a workflow application can take advantage of messaging services. Rather, these categories define the primary function of a particular application. Throughout this book, we'll explore sample applications that fall into these five categories.
Messaging applications use primarily the messaging infrastructure of Exchange Server. E-mail is the most well-known of these, but you can build many other types, such as discussion group applications. Exchange Server supports threaded discussions; any folder in Exchange Server can be 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 the appropriate content.
Another example of a messaging-based application is a mailbox agent. A mailbox agent can perform many different types of functions based on how it is programmed. For example, suppose a sales force needs the ability to run certain queries against a database of sales information. Although you could write a Microsoft Access application that queries the database and returns the results, a salesperson wouldn't be able to work on other items until the database processed the request and returned the data set in the Access user interface. This means that users would have to check the Access application continually to see whether the data was available. However, with a mailbox agent, a salesperson could use a form to specify the type of information she needed and then e-mail the form to the agent. The agent would process the form and run the query on her behalf. Once the database was finished processing the query, the agent would e-mail the data set to the salesperson. Eventually, she receives notification containing the requested data set.
A mailing list server is a messaging agent that forwards all mail it receives to its registered recipients and allows users to add and remove themselves from the recipient's list via e-mail.
A document library is another example of a messaging application. Users can 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. Intelligence can be added to the library by creating a mailbox agent that notifies users when new documents are available. Custom views are available on a folder so that users can quickly find desired documents. 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. A user can set up a document library to store a corporation's favorites in a central location. By dragging and dropping Internet shortcuts into this library, a user's personal favorites become corporate favorites. Plus, users get the benefit of being able to create custom fields and views that describe and categorize the favorites in the folder.
NOTE
To see a mailing list application in action, sign up for the Microsoft Exchange Server mailing list at http://www.msexchange.org.
Tracking applications manage and track information, such as a list of contacts, from its creation to its deletion or "completion." Tracking applications usually require the integration of many different data sources because the information needing to be tracked typically resides in more than one location.
One example of a tracking application is a job candidate tracking application, which 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 finally to the decision to hire or reject. The candidate's status is always available for review. Figure 1-1 shows a hypothetical example of a job candidate tracking application that uses Outlook and Exchange Server to track prospective candidates.
You could also create an account tracking application, which includes tracking for contacts, revenue, and tasks. Figure 1-2 shows the Account Tracking application we'll build in Chapter 7. In Chapter 10, we'll enhance this application for Outlook 2000.
Figure 1-1 A hypothetical job candidate tracking application in Outlook.
Figure 1-2 The Account Tracking application from Chapter 8.
Helpdesks are also tracking applications. In a helpdesk application, trouble tickets are submitted to the help desk by users specifying technical problems. Problems are assigned to technicians based on the ticket type. Audit trails are established for each ticket so that 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 helpdesk might include other tracking applications as well, such as inventory management. For example, if the technician had to request a new machine for the user, an inventory management program informs the technician whether a new machine is in stock. By adding a workflow application to the help desk application, the technician could obtain approval for the machine from the user's manager and the help desk manager. Figure 1-3 shows the Helpdesk application we will build in Chapter 11.
Figure 1-3 The web-based Helpdesk application from Chapter 11.
One last example of a tracking application you might build is a class registration application, which tracks information about a class and its participants. It informs users when desired classes become available, reminds them of which classes they are registered for at least one day in advance, and notifies them of any updated materials made available by the teacher. When the class is completed, class notes and a survey can be distributed to class members.
Workflow applications are primarily constructed around three concepts, which are known as the three Rs—Roles, Routes, and Rules:
Figure 1-4 Sequential, parallel, and conditional routing types.
Let's take a brief look at a few workflow samples. The Expense Report application, which is discussed in detail in Chapters 12 and 13, is 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 based on the total amount of the expense reports, a particular workflow process is started. If the expense is under $5,000, the expense report is automatically approved; if the expense is over $5,000, the report is routed to the user's manager for approval. The manager either approves or rejects the expense report, and based on his 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 reroutes the expense report to the manager's manager for approval. Figure 1-5 shows an example of the Expense Report application in action.
Figure 1-5 The web-based Exchange Server Expense Report application from Chapters 12 and 13.
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 consolidated message is sent to the originator of the workflow application. Chapter 13 will show you how to create an application like this using Microsoft Exchange Server Routing Objects.
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-6. In Chapter 7, you'll examine an Account Tracking sample that demonstrates how to integrate NetMeeting into your own application.
Figure 1-6 NetMeeting allows you to collaborate with other people in real time.
Another real-time application that will interest you as an Exchange Server developer is a new technology called Instant Messaging. Instant Messaging allows users to monitor when other users are online so that they can collaborate with one another. It allows two different organizations to create virtual "buddies," or business partners. Instant Messaging is like a virtual water cooler!
Chat Enables Real-Time CollaborationChat—a popular service on the Internet today—is one example of a real-time application. Chat enables real-time conversation by allowing a participant to type in messages that appear instantly on another participant's computer. When added to collaborative applications, chat can greatly enhance functionality for users. For example, you can extend a help desk application with chat services so that 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 that other users can troubleshoot questions based on the transcript.
"Knowledge management" is the latest buzzword in the computer industry. It 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 the individual to the larger group or corporation. At a time when corporations want to leverage the information that their intellectual assets—people—possess, knowledge management applications are critical. They 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 and more focused innovation. Although knowledge management is a new term and a new strategy for mining and sharing information, it uses technology that has been available since Exchange Server first shipped. Applications based on this strategy are called knowledge management applications.
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 that will not only collaborate but also gather and make accessible information that is current, relevant, and tested.
You might be wondering what types of applications you can build with Exchange Server to implement the concept of knowledge management. One type is a search application in which you can search discussion groups and contacts in Exchange Server, as well as search in SQL databases and web sites. This search capability is a very powerful tool. One important benefit of universal search engines is that users do not have to change the way they collaborate because the search engine crawls 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 all the returned information that meets their criteria. Because of the general nature of the queries and 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 were posting 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 on categories and ratings and receive only current and relevant information. By supplying just a little extra information, users make the data stored in the knowledge base infinitely more useful. And if you added smart agent technology to the application, you could program the knowledge base to e-mail links to relevant information that meets users' predefined criteria.