Managing Sessions

In CCF 2009, session management is part of the functionality. This was accomplished by adding a Session Manager and Session classes to the new Session.cs code module.

A session is a conversation between a call center agent and a customer. The session can be associated with a phone call or, if there is no CTI, it may involve another means of communication.

CCF can be configured to permit only one session at a time or to allow multiple, concurrent sessions. The state and customer data for each session is independent of other sessions.

There are two classes of application in a session: global applications and instance applications.

  • Global applications have a single instance that exists while CCF is being used. A global application is shared between sessions.
  • Instance applications are created when a session is created and closed when the session is closed. If there is more than one session that is running concurrently, then there are multiple, independent instances of the application.

CCF hosted applications are instance applications by default. To make an application global, the XML tag <global/> is added to the database Application table initialization string. You should use the Admin Console application to make an application global.

The Session Manager keeps track of sessions that are active, and the rest of the CCF desktop uses the active session for its operations.

Each session has its own instance of the ApplicationHost class to manage applications, interactions between applications, and context.

The Session Manager can be enumerated to give the list of sessions within it, as shown in the following example.

foreach ( Session session in Sessions )

A session can be enumerated to give the list of hosted applications as shown in the following example.

foreach ( IHostedApplication app in session )

Most applications are implementations of IHostedApplication2 or IHostedApplication3 (which inherits from IHostedApplication2 ), or IHostedApplication4 (which inherits from IHostedApplication3). We recommend that you use the HostedControl base class.