Abstract:
Embodiments are disclosed herein for processing agent interactions. In a particular embodiment, a method provides receiving interaction data describing states and transitions between states within interaction sessions. The method further provides identifying business processes based on the interaction data and identifying instances of the business processes. The method further provides storing the instances and generating a model from the instances.

Description:
RELATED APPLICATIONS 
       [0001]    This application is a continuation application of and claims priority to U.S. patent application Ser. No. 11/359,319, titled SYSTEMS AND METHOD FOR DETECTING AND DISPLAYING BUSINESS TRANSACTIONS, filed on Feb. 22, 2006, and which is hereby incorporated by reference in its entirety. No new matter has been added. 
     
    
     TECHNICAL BACKGROUND 
       [0002]    The business of a call center is to provide rapid and efficient interaction between agents and customers, or prospective customers. Conventional call center systems determine if agents are being productive and meeting call center targets (called “adherence”) by tracking phone usage of agents. In addition to talking to a customer on the phone, such an agent usually spends time using a PC or workstation application, such as a customer relationship manager (CRM) or a customer account database. The proficiency of an agent on these applications therefore impacts overall call center productivity. However, conventional call center systems do not utilize information about application usage when providing adherence information. 
         [0003]    Today&#39;s call centers often support various interaction methods and media, including phone, e-mail and messaging applications. Call center systems typically allow some or all of these interactions to be recorded. The recordings may be reviewed later for compliance with business or government regulations, or for quality assurance. These systems also allow a supervisor to monitor interactions, typically to determine if an agent is adhering to call center policies. 
         [0004]    In conventional call center systems, the playback of recorded interactions and live monitoring of interactions occurs in an “interactions” application, sometimes known as a “contacts” application. A separate “schedule adherence” application is used to compare agents&#39; scheduled activities with agents&#39; actual activities and to provide information about adherence exceptions to the scheduled activities. 
       OVERVIEW SUMMARY OF THE INVENTION 
       [0005]    Embodiments are disclosed herein for processing agent interactions. In a particular embodiment, a method provides receiving interaction data describing states and transitions between states within interaction sessions. The method further provides identifying business processes based on the interaction data and identifying instances of the business processes. The method further provides storing the instances and generating a model from the instances. 
         [0006]    In another embodiment, a method provides collecting interaction information describing states and transitions between states within interaction sessions. The method further provides identifying the states encountered during an interaction. The method further provides generating a trace of the interaction based on the states encountered and generating a model of the interaction sessions based on the trace of each session. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0007]    Many aspects of the disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present disclosure. 
           [0008]      FIG. 1  is a block diagram of a call center environment. 
           [0009]      FIG. 2  is a block diagram showing one example of an adherence subsystem in the WFM of  FIG. 1 . 
           [0010]      FIG. 3  shows a user interface for an adherence application that displays exceptions to agent adherence together with information about interactions. 
           [0011]      FIG. 4  shows a media options dialog box. 
           [0012]      FIG. 5  shows a playback window which is displayed after a user has made choices in the media options dialog box of  FIG. 4 . 
           [0013]      FIG. 6  is a flowchart of a method for simultaneous display of multiple types of call agent data. 
           [0014]      FIG. 7  is a sequence diagram for obtaining a list of agent interactions. 
           [0015]      FIG. 8  is a sequence diagram for a record on-demand feature. 
           [0016]      FIG. 9  is a sequence diagram for a live monitor feature. 
           [0017]      FIG. 10  is a block diagram of an adherence subsystem which takes into account agent activities associated with different devices. 
           [0018]      FIG. 11  shows an example of the novel timeline view of  FIG. 10 . 
           [0019]      FIG. 12  is another timeline view which explicitly displays exceptions. 
           [0020]      FIG. 13  shows the timeline view of  FIG. 12  as displayed in a window and integrated with an additional set of controls. 
           [0021]      FIG. 14  is a flowchart of a method for simultaneous display of multiple types of call agent data. 
           [0022]      FIG. 15  is a flowchart of a method for simultaneous display of multiple types of call agent data which also includes adherence data. 
           [0023]      FIG. 16  is a block diagram of another adherence subsystem, in which sequences of agent activities are mapped to business-level transactions, and transactions are compared to a policy. 
           [0024]      FIG. 17  shows another timeline view including transactions. 
           [0025]      FIG. 18  shows another timeline view of transactions which also displays exceptions. 
           [0026]      FIG. 19  is a flowchart of a method for detecting business level transactions from events generated by call center components. 
           [0027]      FIG. 20  is a hardware block diagram of a general-purpose computer which can be used to implement any of the methods disclosed herein. 
       
    
    
     DETAILED DESCRIPTION 
       [0028]      FIG. 1  is a block diagram of a call center environment  100 . The call center  100  is staffed by agents who handle incoming and/or outgoing phone calls. An agent workspace (“position”) includes an agent phone  110  (“station”) and a workstation computer  120 . A network  130  connects one or more of the agent workstations  120  to other call system components. Each agent phone  110  is connected by a trunk line  140  to an automatic call distributor (ACD)  150 . Although shown as separate devices, the phone  110  may be integrated into the workstation  120 . In this case (called a “soft phone”), the agent controls telephony functions through the workstation  120 . 
         [0029]    When an agent is ready to receive calls at his phone, the agent first logs into the ACD  150 . This login notifies the ACD  150  that the agent is available to take calls. An agent&#39;s ACD state changes throughout the workday, as the agent takes calls, performs after-call work, takes breaks, etc. An example list of ACD states includes available, busy, after-call work, unavailable. 
         [0030]    The ACD  150  distributes incoming phone calls to available agents. A phone call comes into the call center  100  on an outside trunk  160 . If an agent is not available, the ACD  150  puts the call into a queue, which effectively places the caller on hold. When an agent is available, the ACD  150  connects the outside trunk line  160  carrying the phone call to one of the agents. More specifically, the ACD  150  connects the outside trunk line  160  to the trunk line  140  of the selected agent. 
         [0031]    A call recorder  170 , connected to one or more of the agent trunk lines  140 , provides call recording capabilities. In a typical call center such as that shown in  FIG. 1 , the recorder  170  is a server with specialized hardware (e.g., digital signal processing boards). The recorder  170  receives instructions from a recording server  180 . The recording server  180  maintains an interactions database  190  which stores the recorded content as well as descriptive information about the recording. The recording server  180  provides an interface for searching the interactions database  190 . 
         [0032]    While on a call with a customer, the agent interacts with one or more applications  1100  running on the workstation  120 . Examples are applications that give the agent access to customer records, product information, ordering status, transaction history, etc. The applications may access one or more enterprise databases (not shown) via the network  130 . 
         [0033]    The call center  100  also includes a work force manager (WFM)  195 , which is typically divided among several applications. The WFM  195  comprises the suite of applications. Many of the WFM components have a user interface, which runs on a supervisor workstation  1120 . 
         [0034]    The WFM  195  performs many functions. One such function is calculating staffing levels and agent schedules, based on historical patterns of incoming calls. Another function of the WFM  195  is collecting call center contact statistics and providing this information, both historical and real-time, to the call center supervisor or manager. Yet another function of the WFM  195  is supplying the supervisor with information on how well each agent complies with call center policies. The portion of the WFM  195  that performs this last function is the adherence subsystem. 
         [0035]    In general terms, the function of an adherence subsystem is to determine whether agent activities comply with (“adhere to”) call center policies. An instance where an agent activity does not adhere to a policy is an “exception.” An adherence subsystem may support different levels of adherence, where policies are defined, and agent activities are captured, with different amounts of detail. 
         [0036]    For example, the policy used in a low-level form of adherence might be a schedule: e.g., agent is expected to be working the phone from 10 AM to 11 AM and e-mail from 11 AM to 12 PM. Information about calls or emails handled by an agent is not relevant to this first form of adherence. In contrast, in a higher-level form of adherence, policy includes quality targets: e.g., an agent is expected to have a call duration of less than 5 minutes. 
         [0037]      FIG. 2  is a block diagram showing one embodiment of an adherence subsystem  200  in the WFM  195 . In adherence subsystem  200 , policies are defined in terms of scheduled activities, where these scheduled activities correspond to tasks performed by agents during a workday. Adherence is then determined by comparing the activities actually performed by agents with the activities scheduled to be performed by the agents. The adherence subsystem  200  in  FIG. 2  includes an activity collector  210 , an adherence monitor component  220 , an adherence database  230 , and an adherence application  240  (including a user interface). 
         [0038]    As the agent takes calls throughout the day, the agent&#39;s ACD state changes. The ACD  150  reports these state changes to the activity collector  210  as ACD events  250 . (In some environments, the events may be Computer Telephony Integration (CTI) events instead of ACD events). As an agent interacts with various applications  1100  on his workstation  120 , application events  260  are reported to the activity collector  210 . Events are then mapped into agent activities  270 , using activity mapping definitions  280  provided by a user. 
         [0039]    Example mappings might be: 
         [0040]    ACD_Avail|ACD_Busy|ACD_AfterCallWork|ACD_Hold=Activity_Phone 
         [0041]    ACD_LoggedOut=Activity_Break 
         [0042]    PC_Outlook=Activity_Email 
         [0043]    PC_InstantMessenger=Activity_Chat 
         [0044]    PC_FaxApp=Activity_Fax 
         [0045]    These collected agent activities  270  are “actual” activities which have actually occurred. In contrast, a scheduled activity is scheduled to occur, and may or may not have actually occurred. A manager or supervisor defines scheduled activities ( 290 ) through a WFM application (not shown). As explained above, scheduled activities  290  correspond to tasks performed by agents during a workday (e.g., Phone, E-mail, Chat, Fax, Out). 
         [0046]    Both types of activities ( 270 ,  290 ) are stored in the adherence database  230 . In one implementation, the activity information stored in adherence database  230  includes an agent identifier; an activity code; a start time; and a duration. In another implementation, the activity information stored in adherence database  230  includes: an agent identifier; an activity code; a start time; and a stop time. 
         [0047]    The adherence monitor  220  retrieves actual activities  270  and scheduled activities  290  and compares them on a per-agent basis. If the comparison reveals a discrepancy between an actual activity  270  and a scheduled activity  290  for the same agent, the adherence monitor  220  notes this as a exception. However, the comparison may take into account a guard time for a scheduled activity  290 . For example, a policy could be defined to allow an agent to log into the ACD two minutes early, or one minute late, without reporting the activity as out of adherence. 
         [0048]    The adherence monitor  220  provides information about the scheduled activities  290 , the actual activities  270 , and the exceptions to the adherence application  240 . In this implementation, that information is provided in the form of three timelines: a scheduled timeline  295 S, an actual timeline  295 A, and an adherence exception timeline  295 E. The adherence application  240  displays the timelines for viewing by a call center supervisor, typically in a graphical view. 
         [0049]    The adherence subsystem  200  described above represents only one example of how functionality can be partitioned between components in an adherence subsystem. One of ordinary skill in the art should understand that other partitions are possible. As just one example, another variation of the adherence database  230  stores device events rather than actual activities in the adherence database  230 , and the mapping from events to actual activities is performed by the adherence monitor  220  rather than the activity collector  210 . Furthermore, one of ordinary skill in the art should recognize that the “timeline” produced by the adherence monitor  220  is not required to be a graphical representation, but can be any data structure which conveys the underlying information about activities and occurrence times. In another variation, the adherence exception timeline  295 E is not stored in the database but calculated on the fly. 
         [0050]    In this disclosure, the term “interaction” refers to a record of the content of agent activities related to a call. Note that agent activities are not limited to audio of the call itself. Other forms of media are included, such as video of the agent, the application activity on the agent&#39;s workstations  120 , and messages delivered through e-mail, instant messaging, or other messaging technologies. Also, the agent activities in an interaction are not limited to the duration of the call, but can occur after the call (called “wrap up” or “research”). 
         [0051]    Conventional call center systems provide an “interactions” application that allows playback of recorded interactions and live monitoring of interactions. Importantly, these conventional systems did not integrate interactions with adherence or exceptions to adherence. 
         [0052]      FIG. 3  shows a user interface for an adherence application  240  that displays exceptions to agent adherence together with information about interactions. An adherence window  300  presents a timeline view of exceptions to adherence for a list of agents ( 310 ) during a specified time period. For each agent, one line ( 320 ) shows the agent&#39;s schedule, another line ( 330 ) shows the agent&#39;s actual activity, and another line ( 340 ) shows activities that are adherence exceptions. 
         [0053]    Blocks  350  indicate periods of agent activity (actual or scheduled), occurring at specific times and for specific durations. The location of an activity block  350  is aligned with the timeline axis  360  to show this time and duration. Each activity on these three lines is aligned appropriately with a timeline axis  360  (e.g., an activity starting at 5:00 PM and ending at 5:30 PM would have its left edge aligned with the 5:00 PM marker on the timeline axis  360 ). 
         [0054]    Each different type of activity (e.g., Phone, LoggedOut) is displayed with a different visual attribute (e.g., color, pattern, shading). The combination of timeline alignment and color-coded activities allows a user to quickly get an overall picture of what an agent is spending his time on in a given time period. In one implementation, one color/pattern/shade is used for activities that have one recorded interaction and another is used for activities that have multiple recorded interactions. A legend may be included to show which color/pattern/shade corresponds to each of these types. 
         [0055]    In this view, another line ( 370 ) presents a list of agent interactions during that time period. Interactions differ from activities. On the actual activities line  320 , an activity block merely describes which activity occurred, and its time period. For example, activity block  350 P tells the viewer that an agent was in the Phone activity from 9:00 to 12:00. Interaction block  3501  during that time period tells the user that recorded content is available for calls between 9:45 and 10:45. By presenting exceptions to agent adherence together with, and visually aligned with, information about interactions, a user can quickly discover which exceptions can be further examined by reviewing, or playing back, the corresponding interaction information. 
         [0056]    The list of interactions can be refreshed by activating a Load Interactions button  365 . A user can play back an interaction, record an agent on-demand, or monitor an agent in real-time by activating various buttons ( 375 ,  380 ,  385 ). A user plays back a particular interaction block (e.g.,  3501 ), by selecting the interaction block, and then activating the playback button  375 . When the playback button  375  is activated, the media options dialog box  400 , shown in  FIG. 4 , is displayed. 
         [0057]    The media options dialog box  400  presents the user with choices for an audio playback device ( 410 ). The media type ( 420 ) of the recording is displayed (e.g., call audio, agent video, and agent workstation activity). 
         [0058]      FIG. 5  shows a playback window  500  which is displayed after a user has made choices in the media options dialog box  400 . A playback control  510  contains buttons (e.g., fast-forward, rewind) which allow a user to move to different portions of the interaction, and to pause and resume playback. A progress indicator  520  shows the current position relative to the entire interaction. 
         [0059]    If the media type included workstation activity, then a portion ( 530 ) of the playback window  500  is used to “play back” what appeared on the agent&#39;s workstation screen during the interaction. If the media type included audio, then the audio is played on the chosen audio device (e.g., workstation speaker, phone). In one implementation, a list of events that occurred during the interaction, and the time of each, is displayed in an event list  540 . 
         [0060]    The user interface described in  FIGS. 3-5  allows a supervisor to review interactions that were recorded in the past. Interactions are typically recorded according to a predefined configuration created through the recording server  180 . The adherence window  300  disclosed herein also allows a supervisor to start an immediate (on-demand) recording of a particular agent, or to monitor an agent in real time. 
         [0061]    Each agent in the list  310  has a record-on-demand button  380  if recording is available for that agent. To record a specific agent on demand, the user activates the record-on-demand button  380  associated with this specific agent. A visual indication that the agent is being recorded is then displayed (e.g., the record-on-demand button  380  changes color, the agent&#39;s name flashes, the agent&#39;s name is displayed in a different color). To stop the recording, the user activates the record-on-demand button  380  a second time. 
         [0062]    The live monitor feature works as follows. The user selects an agent from the agent list  310  and activates the live monitor button  385 . Then the user selects an audio playback device as well as content type from media options dialog box  400  ( FIG. 4 ). If the content type includes audio, then audio of the selected agent begins playback on the selected device. If the content type includes workstation activity, another window appears in activity on the agent&#39;s workstation screen is displayed. In one implementation, this workstation activity window is similar to the window  530  in  FIG. 5 . 
         [0063]      FIG. 6  is a flowchart of a method for simultaneous display of multiple types of call agent data. In block  610 , information about exceptions to agent adherence is received. The information describes a period of agent activity, indicating an agent identifier and an occurrence time, that does not comply with a scheduled activity for the agent. In block  620 , information about available interactions for specific time periods and agents is received. In block  630 , the value for a time window and at least one agent is determined. The time window and agent(s) may be solicited from a user, or default values may be used. In block  640 , a view of the exceptions for this agent occurring in the time window is displayed, along with available interactions for this agent. In this view, the exceptions and the interactions are displayed in correlation with a timeline. 
         [0064]      FIGS. 7-9  are sequence diagrams showing the component interactions involved for the list agent interactions, record on-demand and live monitor features described above. The components involved are the adherence application  240 , the recording server  180 , and the recorder  170 . 
         [0065]      FIG. 7  is a sequence diagram for obtaining a list of agent interactions. This list is used, for example, to display the interaction line  370  in  FIG. 3 . The adherence application  240  calls the GetInteractionList function ( 710 ) provided by the recording server  180 . The adherence application  240  passes in an agent identifier and a time frame. The recording server  180  searches the interactions database  190  (see  FIG. 1 ) for interactions corresponding to the requested agent and time frame. The recording server  180  then returns to the adherence application  240  with the list ( 720 ). In this example, the list contains the interaction Name, Identifier, Start, End, AgentRole (e.g., primary or secondary), and ContentType (e.g., audio, workstation activity, both, none). 
         [0066]      FIG. 8  is a sequence diagram for the record on-demand feature. The sequence starts with the adherence application  240  receiving user input ( 810 ) indicating the start of recording for a particular agent. The adherence application  240  calls the GetDevice function ( 820 ) in the recording server  180 , passing in an agent identifier. The recording server  180  examines configuration data to determine the telephone or workstation associated with the requested agent identifier. The recording server  180  then returns  830  the identifier of the associated recorder to the adherence application  240 . 
         [0067]    Next, the adherence application  240  sends a Connected event ( 840 ) to the recording server  180 , passing in the recorder identifier obtained earlier, and a unique session identifier. The recording server  180  creates a new interaction in the interactions database  190  (including the start time and agent), and sends the identified recorder  170  a StartRecording command ( 850 ). 
         [0068]    At some later time, the adherence application  240  receives user input ( 860 ) indicating the end of agent recording. The adherence application  240  sends a Disconnected event ( 870 ) to the recording server  180 , passing in the recorder identifier and the session identifier. The recording server  180  adds the stop time to the interaction in the interactions database  190 , and sends the identified recorder  170  a StopRecording command ( 880 ). 
         [0069]      FIG. 9  is a sequence diagram for the live monitor feature. The sequence starts with the adherence application  240  receiving user input ( 910 ) indicating the start of monitoring for a particular agent. The adherence application  240  passes in the agent identifier and the supervisor identifier to the recording server  180 , which returns a content stream  920 . As explained earlier, the server maintains configuration data which associates recorder(s) with agents. Therefore, the content stream  920  contains a combination of audio, workstation activity, or other media types, depending on the recorder(s) associated with the agent. In one implementation, the recording server  180  provides a web server interface, which allows the adherence application  240  to present the content stream  920  to the user by means of a web browser. 
         [0070]    As described earlier, an adherence subsystem may support different levels of adherence. In the embodiment described earlier in connection with  FIG. 2 , a low-level form of adherence measured whether work tasks actually performed by agents complied with a schedule.  FIG. 10  is a block diagram of another adherence subsystem embodiment which supports a higher-level form of adherence. 
         [0071]    Adherence subsystem  1000  takes into account agent activities associated with different devices (e.g., agent phone activity and agent workstation activity). This particular adherence subsystem  1000  also compares time spent in these activities to thresholds defined in a policy. Note that although this particular adherence subsystem includes both of these features, the features are independent. 
         [0072]    The adherence subsystem  1000  includes an activity collector  1010 , an adherence monitor component  1020 , an adherence database  1030 , and an adherence application  1040 . As the agent takes calls throughout a workday, the ACD  150  reports changes in the state of the agent&#39;s phone as ACD events  1050 P. As an agent interacts with various applications  1100  on his workstation  120 , an application monitor  1060  tracks and reports application events  1050 A. In one implementation, the granularity of application events  1050 A is application-level, so that events describe when applications start and exit, and when a user switches from one application to another. In another implementation, the granularity of application events  1050 A is screen-level, so that events describe a particular screen displayed within an application. In yet another implementation, application events  1050 A are low-level, including input and/or output associated with each application (e.g., keystrokes, mouse clicks, and screen updates). 
         [0073]    The collector  1010  receives events  1050  from multiple sources. An event  1050  has an occurrence time and a descriptor, which includes fields such as event source (e.g., ACD, application monitor), type, and agent identifier. If the event  1050  does not include an agent identifier, the collector  1010  maps the phone or workstation identifier to a corresponding agent identifier, based on information obtained at agent login. Thus, the event  1050  indicates, either directly or indirectly, an agent identifier. 
         [0074]    The collector  1010  maps the events  1050  into agent activities  1070 . In the adherence subsystem  200  described earlier, many different events mapped to the same activity, because the subsystem viewed agent activities in broad categories: Phone, E-mail, Chat, etc. This adherence subsystem  1000  measures agent activities in more detail, distinguishing between an agent available to take calls, talking to a customer and performing after-call work. Thus, events closely correspond to activities in the mapping used by adherence subsystem  1000 : 
         [0075]    ACD_Avail=Activity_ACD_Avail 
         [0076]    ACD_Busy=Activity_ACD_Talk 
         [0077]    ACD_AfterCallWork=Activity_ACD_AfterCallWork 
         [0078]    ACD_LoggedOut=Activity_Break 
         [0079]    PC_Start_Outlook=Activity_PC_Email 
         [0080]    PC_SwitchTo_Helpdesk=Activity_PC_Helpdesk 
         [0081]    The agent activities  1070  are stored in the adherence database  1030 . In one implementation, the activity information stored in the adherence database  1030  includes an agent identifier, an activity source, an activity code, a start time, a stop time, and a duration. 
         [0082]    The adherence monitor  1020  determines adherence by comparing the activities  1070  to policies  1080  in the adherence database  1030 . A policy  1080  describes one or more targets which an agent is expected to meet. Example policies define expectations for time spent in an ACD state, for time spent in an application, for applications an agent is allowed to use, etc. A manager or supervisor defines policies  1080  through one of the WFM applications (not shown). The policies are stored in the adherence database  1030 . 
         [0083]    An agent activity which does not comply with (adhere to) a policy is an exception. Examples of exceptions include: exceeded average time on a call; exceeded expected time in the Helpdesk application while on a call; exceeded expected time in the customer account database after a call. 
         [0084]    As described earlier, a user can define policies which define expected durations for various agent activities. Defining policies manually can be time-consuming and error-prone. Yet another implementation of an adherence subsystem (not shown) uses historical call center data to create policy templates. The user then creates policies from these templates, which saves time and reduces errors. 
         [0085]    This adherence subsystem records agent activities for a period of time (usually several weeks to a month). The subsystem analyzes the recorded data to determine call statistics, such as minimum, maximum, average and standard deviation of various agent activities. These statistics represent typical or normal call center operation. From these statistics, the subsystem creates policy templates which describe expectations for agent activities. 
         [0086]    Agents typically handle calls of various types. For example, some calls are related to product A and others related to product B. Since these different types of calls often exhibit different characteristics, the subsystem analysis can be supplemented by user input which identifies certain calls as belonging to a group. In that case, rather than producing call statistics for all calls in the analysis period, the subsystem instead produces per group statistics, and policy templates for each group. 
         [0087]    The adherence application  1040  receives information about these exceptions ( 1090 ) and information about activities  1070 . The adherence application  1040  uses the information describing activities  1070  from different event sources (e.g., ACD and workstation) to present a novel timeline view of agent activity on a supervisor workstation, where it can be viewed by a call center supervisor. This novel timeline view presents, simultaneously and in the same window, agent activities from different sources, correlated in time.  FIG. 11  shows an example of this novel timeline view  1100  as displayed on a supervisor workstation. 
         [0088]    A timeline axis  1110  is arranged to display time periods across the screen in one direction. In the timeline view  1100  of  FIG. 11 , the granularity of the timeline axis  1110  is 15 minutes, starting at 6:00 AM. Blocks  1120  indicate periods of agent activity, occurring at specific times and for specific durations, and the location of an activity block  1120  is aligned with the timeline axis  1110  to show this time and duration. For example,  1120 A describes an event lasting from 6:12 to 6:17, and is therefore placed under timeline axis  1110  such that the start of the block  1120 A is located to the left of the 6:15 mark, and the end of the block  1120 A is located to the right of the 6:15 mark. 
         [0089]    In the timeline view  1100 , each event source is placed on a different line. Thus, activity blocks for ACD, or call, events (e.g.  1120 A) appear on the Call Track line ( 1130 ) and activity blocks for application events (e.g.  1120 B) appear on the Application Track line ( 1140 ). Within the same source, identifying information about an event is conveyed by displaying the block  1120  in a particular color, shade, or pattern. 
         [0090]    For example, the timeline view  1100  uses different colors when displaying activity blocks  1120  for activities with different ACD states. As another example, the timeline view  1100  uses different colors when displaying activity blocks  1120  for activities with different workstation applications. In this manner, activity blocks  1120  are visually distinguishable from each other, and the color/shade/pattern conveys important identifying information to the user. In one implementation, a legend  1150  is included to show which color/shade/pattern corresponds to each event identifier. The View Details button ( 1160 ), when activated, displays details for a selected activity in a text-based, rather than graphical, format. 
         [0091]    The example shown in  FIG. 11  has been simplified to show only activities for a single agent (identified by label  1170 ). Other implementations display activities for multiple agents by stacking the track lines one under the other. Although specific user interface controls are discussed here, other ways of gathering user input are known (e.g., menus, commands, etc.) and are intended to be included in the scope of this disclosure. 
         [0092]    In this timeline view  1100 , timing relationships between ACD events  1050 P and application events  1050 A are now visible. Blocks  1120 A and  1120 B show one such relationship: an agent using a Helpdesk application during a call. Blocks  1120 C and  1120 D show another relationship: an agent uses a customer account database after a call (“wrap up”). 
         [0093]    The timeline view  1100 , by displaying these timing relationships, allows a call center supervisor to quickly determine whether or not an agent is adhering to call center policies. A few examples of determinations made by a supervisor using this view are: whether an agent is spending too time much during the call in the helpdesk application; and whether an agent is spending too much time after the call in the customer account database. Once discrepancies are identified, the supervisor can address the possible causes (e.g., the agent needs more training on the helpdesk application, or the screens in the customer account application need to be redesigned). 
         [0094]    The information presented in this timeline view  1100  also makes visible to the supervisor areas for further investigation. Examples of areas of supervisor investigation that may be prompted by this view are: what an agent did when the caller was placed on hold; what an agent did while in the ACD After Call Work state; what kinds of transactions are associated with long call times; what agents do while in not-ready states (e.g., Admin or Research). 
         [0095]    Although this disclosure focuses on two event sources, the ACD and the application monitor, the activity timeline view described herein is also applicable to other types of events that describe agent activities. 
         [0096]    As described above, the timeline view  1100  allows a supervisor to visually assess whether or not agents are adhering to call center policies, by examining the timing relationships shown in the view.  FIG. 12  is another implementation of a timeline view which explicitly displays instances where agents are not adhering (called “exceptions”). 
         [0097]    This timeline view ( 1200 ) is similar to the implementation in  FIG. 11 , but includes an additional line that is also correlated with the timeline axis  1110 . The Exceptions line  1210  displays exceptions (activities that are out of compliance) using icons. The example shown in  FIG. 12  assumes that a policy is defined as follows: the Customer Account and HelpDesk applications are allowed during calls; the Customer Account, HelpDesk and Email applications are allowed during after-call work; and the agent is expected to use the customer account application for less than five minutes during after-call work. The Exceptions line  1210  shows that the agent is adhering to this policy for all activities except for two. One exception occurs in block  1220 , when the agent accesses the Email application while on a call. This type of exception, where an agent uses an application that is not allowed, is represented using an X icon. Another exception occurs in block  1230 , when the agent spends longer than five minutes in the customer account application during after-call work. This type of exception, where an agent spends longer than allowed in an application, is represented using a clock icon. 
         [0098]      FIG. 13  shows the timeline view plus exceptions as displayed in a window and integrated with an additional set of controls. A user selects one or more agents through an agent list box control  1310 . A user may choose agents from different locations through a location list box control  1320 . A user also selects a time period for display through the Time/Date control  1330 . The timeline view  1100  is the same as in  FIG. 11 . The sort criteria list box  1340  allows the timeline view  1100  to be sorted by various criteria such as agent name, location, etc. Although specific user interface controls are discussed here, other ways of gathering user input are known, and are intended to be included in the scope of this disclosure. 
         [0099]      FIG. 14  is a flowchart of a method for simultaneous display of multiple types of call agent data. In block  1410 , activity descriptors for call center agents are received. The activities originate from at least two sources. Each of the descriptors describes a period of agent activity, indicating an agent identifier and an occurrence time. In block  1420 , the value for a time window and at least one agent is determined. The time window and agent(s) may be solicited from a user, or default values may be used. In block  1430 , a view of activities that are associated with this agent or agents, and that occur during the time window is displayed. In this view, activities of both types are displayed in correlation with a timeline. 
         [0100]      FIG. 15  is a flowchart of a method for simultaneous display of multiple types of call agent data. In block  1510 , activity descriptors for call center agents are received. The activities originate from at least two sources. Each of the descriptors describes a period of agent activity, indicating an agent identifier and an occurrence time. In block  1520 , the value for a time window and at least one agent is determined. The time window and agent(s) may be solicited from a user, or default values may be used. In block  1530 , information about activities that are exceptions to adherence is received. In block  1540 , activities associated with the agents are displayed in the time window, together with exceptions to adherence. In this view, adherence information and activities of both types are displayed in correlation with a timeline. 
         [0101]    As described earlier, an adherence subsystem may support different levels of adherence. In the embodiment described earlier in connection with  FIG. 2 , the adherence monitor compared work tasks actually performed to a schedule. In the embodiment described earlier in connection with  FIG. 10 , activities were associated with multiple devices, and the adherence monitor compared time spent in activities associated to thresholds in a policy.  FIG. 16  is a block diagram of another embodiment which supports an even higher-level form of adherence, in which sequences of agent activities are mapped to business-level transactions, and transactions are compared to a policy. 
         [0102]    Adherence subsystem  1600  subsystem includes a transaction detector  1610 , an adherence monitor component  1620 , an adherence database  1630 , and an adherence application  1640 . The transaction detector  1610  receives reports of events  1650  from various sources, such as events ( 1650 A) from the application monitor that describe an agent&#39;s workstation state. In this example, the application events  1650 A are screen-level. That is, an application event  1650 A describes a particular screen in a particular application. 
         [0103]    In this subsystem, activities  1660  can be derived directly from events: each event  1650  has an occurrence time, and an activity  1660  occurs between two events. Thus, an activity  1660  has a start time, a stop time, and a duration derived from start and stop times. 
         [0104]    The transaction detector  1610  examines sequences of events  1650  to find matches to defined transactions. When a match is found, the transaction detector  1610  creates a transaction  1670  from the event sequence and stores the transaction  1670  in the adherence database  1630 . Transaction definitions  1680  are business-specific, and are created by manager or supervisor through a WFM application (not shown). Transactions  1670  can best be explained by means of an example, which follows. 
         [0105]    A particular call-center campaign involves taking orders from customers. To place a new order, an agent interacts with a “customer entry” screen in the customer relationship manager (CRM) application, followed by a “product entry” screen in the CRM. Other CRM screens may be accessed between the “customer entry” and “product entry” steps, except for the “cancel order” screen. This NewOrder business transaction can then be defined as:
       NewOrder=CRM_Cust+[NOT (CRM_Cancel)]+CRM_Prod+[NOT (CRM_Cancel)]       
 
         [0107]    In the notation used above, the transaction name appears to the left of the equal sign, and the event sequence appears to the right of the equal sign. In order to match the transaction, events must occur in the order they appear in the definition. Events which are optional appear in brackets. In this example, the combination of bracket and the NOT operator means that any event other than the CRM_Scr_CancelOrder event can occur between the CRM_Scr_CustEntry event and the CRM_Scr_ProdEntry event. 
         [0108]    The transactions  1670  detected by the transaction detector  1610  are stored in the adherence database  1630 . (In some implementations, the underlying events  1650  and/or activities  1660  are also stored in the adherence database  1630 .) The adherence monitor  1020  determines adherence by comparing the transactions  1670  to transaction policies  1685  in the adherence database  1630 . Just as the definition of a transaction is specific to a campaign, business, or enterprise, so are the policies applied to that transaction. A transaction policy  1685  is a rule that defines correct or proper execution of a transaction, in terms of event sequences. Many event sequences may map to a particular transaction (according to the transaction definition  1680 ), but only a subset of those event sequences represent a properly executed transaction (according to the transaction policy  1685 ). 
         [0109]    The following example, building on the previous example of transaction definitions, will illustrate the use of transaction policies  1685 . A policy for the NewOrder business transaction (described above) can be defined as:
       NewOrder=CRM_Cust+[CRM_NewCust|CRM_OldCust+Helpdesk]+Inv_Check+CRM_Prod       
 
         [0111]    This notation is similar to the one used above. Events must occur in the order listed in the policy definition. Events in brackets are optional. When events are separated by a vertical line, any of the events matches. So this policy says that to properly execute a new order, an agent must go to the CRM_Cust screen, followed by either the CRM_NewCust or the CRM_OldCust screen, followed by the Inv_Check screen, followed by the CRM_Product screen. 
         [0112]    The adherence monitor  1020  compares detected transactions  1670  to transaction policies  1685  and generates adherence exceptions  1690  for discrepancies between the two. In the example above, a transaction which includes a CRM screen other than NewCust or OldCust will be detected as a NewOrder transaction, but will also be reported as an exception. As another example, a transaction which does not include the Inv_Check screen will be detected as a NewOrder transaction, but will also be reported as an exception. 
         [0113]    The adherence application  1640  receives information about activities  1660 , transactions  1670  and (optionally) exceptions  1690 . The adherence application  1640  uses the information describing the activities  1660  and the transactions  1670  to present a novel timeline view of agent transactions, against a timeline, on a supervisor workstation. 
         [0114]      FIG. 17  shows an example of this timeline view  1700  as displayed on a supervisor workstation  1120 . For each agent, one line ( 1710 ) shows the agent&#39;s workstation activities ( 1660 ), and line ( 1720 ) shows the business transactions ( 1670 ) corresponding to the workstation activities. Each activity or transaction is represented by a block  1730 . Each activity or transaction has an occurrence time and a duration, and the location of each block  1730  is aligned with a timeline axis  1740  to show this time and duration. 
         [0115]    Different colors (or patterns, or shadings) are used to display blocks  1730  representing different workstation activities. In this manner, activities are visually distinguishable from each other, and the color/shade/pattern conveys important identifying information to the user. Blocks  1730  representing detected transactions are identified by a label within the block. This example assumes the transaction definitions described above. Therefore, the Transactions line  1720  beneath Activities line  1710  displays two detected NewOrder transactions ( 1730 N 1  and  1730 N 2 ) 
         [0116]    A conventional adherence subsystem presents the call center supervisor with a timeline view of agent activity throughout the workday. This allows the supervisor to see when an agent is adhering to call center policies, such as adherence to schedule, adherence to time limits spent on specific activities, and adherence to usage of specific applications. However, the underlying purpose of agent activities is to perform business transactions, and the conventional adherence subsystem does not provide any information about adherence to transaction processing policies. 
         [0117]    This novel timeline view  1700  allows a supervisor to see call center operations in terms of high-level business transactions rather than low-level agent activities. A view focused on business transactions allows the supervisor to detect situations that might otherwise be missed. For example, an agent may complete an order without checking inventory, which is an exception to call center business policy. But a supervisor would not detect that in a conventional adherence system, because the agent is adhering to schedule (taking calls) and is using the right app (CRM) while on the call. In contrast, the novel timeline view gives the supervisor insight into transactions, which allows the supervisor to detect the problem. 
         [0118]      FIG. 18  is timeline view of transactions which also displays exceptions. Timeline view  1800  is similar to the implementation in  FIG. 17 , but includes an additional line that is also correlated with the timeline axis  195 . The Exceptions line  1810  displays exceptions—transactions that are out of compliance—with an icon. Other implementations could use a different color/shade/pattern rather than an icon. 
         [0119]    The example shown in  FIG. 17  assumes the transaction and policy definitions described above. The Transactions line  1720  shows that two NewOrder transactions have been detected ( 1730 N 1  and  1730 N 2 ). Furthermore, the Exceptions line  1810  shows that an exception occurred during the second transaction ( 1730 N 2 ). An “X” icon ( 1820 ) beneath the CRM_Prod workstation activity ( 1730 P) indicates an exception at this point in the transaction, since the Inv_Check screen activity did not appear before the CRM_Prod activity. 
         [0120]      FIG. 19  is a flowchart of a method for detecting business level transactions from events generated by call center components. In block  1910 , events are received from call center components. Each of the events describes an agent activity, including an agent identifier and an occurrence time. In block  1920 , a received event sequence to transaction definitions stored in the adherence database  1630  is matched. In block  1930 , a transaction from the matching sequence is created. In block  1940 , the detected transaction is displayed in a call center workforce management system. 
         [0121]      FIG. 20  is a hardware block diagram of a general purpose computer  2000  which can be used to implement any of the functionality disclosed herein. The system  2000  contains many components that are well-known in the art of call center software, including a processor  2010 , a network interface  2020 , memory  2030 , and non-volatile storage  2040 . Examples of non-volatile storage include, for example, a hard disk, flash RAM, flash ROM, EEPROM, etc. These components are coupled via bus  2050 . Memory  2030  contains instructions which, when executed by the processor  2010 , implement the methods disclosed herein. 
         [0122]    Omitted from  FIG. 20  are many conventional components, known to those skilled in the art, which are not necessary to explain the operation of the system  2000 . The foregoing description has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. Obvious modifications or variations are possible in light of the above teachings. The implementations discussed, however, were chosen and described to illustrate the principles of the disclosure and its practical application to thereby enable one of ordinary skill in the art to utilize the disclosure in various implementations and with various modifications as are suited to the particular use contemplated. All such modifications and variations are within the scope of the disclosure as determined by the appended claims when interpreted in accordance with the breadth to which they are fairly and legally entitled.