The Crystal Enterprise Framework, the backbone of Crystal Enterprise, provides a distributed mechanism that manages the interaction and communication of the Crystal Enterprise services that make up the server tier, as well as communication between this server tier and the CE-SDK. Each Crystal Enterprise service uses the framework to describe the capabilities it offers and to discover other services that are registered with the framework. The framework treats each of the registered services as equals, which enables one service to use the capability of another Crystal Enterprise server directly, thus enhancing scalability.
The Framework's foundation is a communication bus that handles dialogue between the various services and facilitates automatic load-balancing and fault tolerance. This communication bus registers each service, categorizes the type of service, and maintains a tally of the status of each service. For scalability reasons, much of this service interaction is distributed and decentralized. This is one of the reasons Crystal Enterprise leads the industry in scalability.
The Crystal Enterprise Framework uses programmatic components, known as plug-ins, to represent each object type within Crystal Enterprise. Plug-ins contain the appropriate properties and methods needed to handle a particular object within Crystal Enterprise, and determine how Crystal Enterprise should treat it. For instance, a service might require information about a Crystal Report, and will use the properties of the Crystal Report plug-in to retrieve the information. The Crystal Report plug-in properties include things like the report title, the database login information for that report, and the report thumbnail image. In contrast, a user plug-in might have the username, the type of login, and the group membership as its properties.
Although plug-ins become much more important as you start to explore application development using the CE-SDK, they are a great way to start to explore the capabilities of Crystal Enterprise. Figure 24.2 shows how a plug-in is used. They help you to categorize the types of objects you find in Crystal Enterprise, and understand what you can do with each of them.
Figure 24.2. A plug-in is the way Crystal Enterprise exposes the services of a server on the framework.
The object types that are part of the Crystal Enterprise Framework are classified in the following groups:
Administration plug-ins provide a way to manage the Crystal Enterprise servers. Each plug-in exposes the control and configuration properties of a server within the Crystal Enterprise system so that you can configure the behavior of each Crystal Enterprise server. These plug-ins also provide activity metrics for each server.
Authentication plug-ins provide a mechanism for Crystal Enterprise to interact with external security systems and treat these systems as native authentication sources. The authentication plug-ins provided with Crystal Enterprise are
These authentication types are discussed in more detail in "The Server Tier: Overview of the Crystal Enterprise Services," later in this chapter.
Content plug-ins describe the types of objects that end users (report viewers) would typically interact with, such as, but not limited to, a Crystal Report. The content types that are provided as part of Crystal Enterprise are
A distribution plug-in allows anyone who is scheduling an object such as a Crystal Report to be able to send that report outside the Crystal Enterprise environment. This facility enables the application to schedule reports to destinations such as e-mail. Distribution plug-ins that are provided with Crystal Enterprise are
Crystal Enterprise also provides the capability for a Crystal Report to be scheduled to a printer. The printer object is not exposed as a distribution object, but rather as a function of the Crystal Report content plug-in.
These plug-ins play a fundamental role in the Crystal Enterprise Framework by encapsulating and exposing the knowledge of the object type that they represent. The remainder of this chapter discusses how these plug-ins are used by the Crystal Enterprise servers within the Crystal Enterprise Framework.