Now that it's clear that the functionality of individual Crystal Enterprise servers is exposed through plug-ins, it's important to understand exactly what that functionality is. The Crystal Enterprise servers are designed to register themselves with the Crystal Enterprise Framework and provide one or more services that can be consumed by other servers or by the plug-ins described in the last section. The services offered by each of the servers is dependent on the type of task that the server is expected to perform.
The following list shows the servers that are delivered with Crystal Enterprise. These servers can be thought of as core servers:
These servers can be seen in the architecture diagram in Figure 24.3.
Figure 24.3. The core server architecture for Crystal Enterprise.
With these servers in place, Crystal Enterprise manages reporting and business intelligence content (such as Crystal Reports, Crystal Analysis Reports, Excel, Word, PDF, and PowerPoint documents) and offers rich customization services allowing organizations to deeply embed and integrate Crystal Enterprise into their already established applications or Web services.
It's important to note that multiple instances of the same server operating in the Crystal Enterprise Framework at the same time are fully supported. This provides a scalable, reliable, and fault-tolerant system.
Crystal Management Server
The Crystal Management Server (CMS) provides a number of the core services that the Crystal Enterprise Framework uses. These services include allowing other servers to register with the framework, allowing users to be authenticated with the system, and providing a storage mechanism for maintaining the metadata about each object. The services provided by the CMS fit into four main categories:
The CMS provides for the following:
The security service breaks security down into three main elements:
Crystal Enterprise provides mechanisms to allow for third-party authentication services to be used as the basis of user and group/role definition. The CMS interacts with these third-party authentication mechanisms by using the following authentication plug-ins, described earlier in the chapter:
The Enterprise security plug-in enables organizations to define users and groups directly within Crystal Enterprise and restrict use of an external source for those users. This is useful if an organization has chosen not to use an external security source or has not yet defined one. All authentication information is stored in Crystal Enterprise and does not rely on an outside source to determine whether a user is valid.
The NT and Active Directory security plug-ins enable a customer to map any number of users and groups into Crystal Enterprise. Although these two are separate plug-ins, they function in similar manner and so are discussed here together.
An administrator is required to go into the Crystal Management Console (see Chapter 26, "Deploying Crystal Enterprise in a Complex Network Environment") or use an application written using the SDK and define the default NT or Active Directory (AD) domain as well as any user groups that might need to be mapped into Crystal Enterprise. After this initial mapping is complete, Crystal Enterprise will dynamically query for users within that group and establish those users as Crystal Enterprise users. When a user logs on for the first time, the security service using the NT or AD security plug-in asks the NT or AD security database if this is a valid NT or AD user and whether the user belongs in any of the mapped groups. If the user is indeed a valid user, he will be granted access to Crystal Enterprise. If at any time in the future that user is removed from that NT group, he will not be granted access to Crystal Enterprise (and, hence, reports within the system) because the security service would be told that this user is no longer a valid NT user. There's no requirement for the administrator to manually inform Crystal Enterprise that the user is no longer a valid NT user.
The LDAP security plug-in operates in a similar manner to the NT security plug-in; however, instead of talking to the operating system for a list of valid users or groups, this security plug-in communicates with a directory server using the LDAP protocol. Crystal Enterprise does not require the LDAP schema in the directory server to be modified in any way for use with Crystal Enterprise. This security plug-in provides default mappings for several directory servers, including
When the Crystal Enterprise solutions kits for PeopleSoft and SAP are installed, they provide additional authentication plug-ins for each system, respectively.
Users and groups are queried by leveraging attributes within the LDAP schema, such as InetOrgPerson, which is an attribute used by iPlanet Directory Server. If the directory server that is to be used with Crystal Enterprise is not in the preceding list, it's also possible to create a custom mapping of LDAP attributes. The attributes that are used to define a group or user must be mapped to the LDAP security plug-in for these attributes to be used when querying for a user or a group.
Application-specific authentication plug-ins enable Crystal Enterprise to validate a user's credentials against an ERP system such as SAP or PeopleSoft. Installing a Crystal Enterprise Solution Kit installs the respective plug-in, which then appears next to the default authentication tabs in the Crystal Management Console. Each of these application-specific plug-ins requires configuration to enable Crystal Enterprise to interact with the application, and require information on group mapping.
After configuring Crystal Enterprise with external users and groups, it's necessary to determine which objects within the system an end user has the authority to view. This central mechanism of controlled access to certain reports is a key component of the system. Setting up authorization rules or access control is straightforward after users and reports have been added to the system. Chapter 27 reviews how to apply access control on objects in the system.
Authorization within Crystal Enterprise is enforced through a strong inheritance model throughout the system. This enables you to set desired access levels at a root folder for a large group and have that setting be respected, regardless of how many new subfolders are created or objects are added to those folders (as well as any new users added to groups or subgroups).
Crystal Enterprise can aggregate or group users in two ways, as Chapter 27 reviews in some detail. A group can be created directly in Crystal Enterprise or it can be mapped from one of the external authentication sources. The grouping within Crystal Enterprise is quite powerful because native and mapped groups can be used at the same time. If this method of user aggregation is implemented, a native group would contain a mapped group. The use of mapped groups simplifies administration: As users are added or removed from groups in the external systems, this will be automatically reflected in Crystal Enterprise. It's also possible to create a hierarchy of groups to better organize the end users of the system.
Object Metadata Storage
Among other tasks, the CMS stores a repository of information about each object in the Crystal Enterprise system. After this information is stored, it becomes available to other objects or servers within the system. This persistent data describes an object (such as a Crystal Report) and makes it possible to dynamically query the system and discover the properties of that object. This repository expanded in version 10 of Crystal Enterprise to include storage of objects used to design Crystal Reports as well as Crystal Business Views Objects (see Chapter 18, "Crystal Reports Semantic LayerBusiness Views").
This information is stored in a repository to enable scaling; to do otherwise would require dependence on the information being stored in memory on a physical servernot scalable. The CMS stores this information by writing it to a relational database. Version 10 uses database-querying capabilities more than in previous versions of Crystal Enterprise, resulting in even faster request processing and enhanced scalability. However, this changed functionality also requires that more attention be paid to database optimization than in previous versions.
The CMS service is able to access these databases by using ODBC or by a direct, also known as native, interface to the database. Because the CMS also provides auditing capability, the database compatibility is the same for the auditing database (you will consider the auditing capability itself later in this chapter). Although the Crystal Enterprise system database and the audit database can be on the same or separate database servers, the actual databases are separate.
The following list shows databases supported by the CMS and how they are accessed by Crystal Enterprise 10 when the CMS is operating on Windows NT:
The databases that the CMS can access on Unix are a subset of what is available on Windows. If the CMS is operating on Unix, it's able to use the following databases:
All database connections for the CMS repository are done by a direct interface.
The default Windows-platform database that the CMS will use if one is not provided is the MSDE, a simple implementation of Microsoft's SQL Server. Because performance of the CMS database can dramatically affect system performance, MSDE is used to provide an organization a useful out-of-the-box experience. The repository is set up and configured without the need for interaction with a database administrator. If Crystal Enterprise is initially configured to use the default repository database and the need arises to move the repository to a different database server, Crystal Enterprise provides tools (the Crystal Configuration Manager) to easily migrate the data from one server to another.
The CMS allows all other Crystal Enterprise servers to register with the Crystal Enterprise Framework. After each service has registered through the CMS, it is able to discover the other servers active within the framework and use any services it needs from those servers.
New Crystal Enterprise services can be added to the system from either the Crystal Management Console or the Crystal Configuration Manager. The addition of these new services provides additional scalability and higher availability.
One of the key benefits of Crystal Enterprise is how it manages objects. After an object (such as a Crystal Report) is published to Crystal Enterprise, the properties of that object are read and added to the repository. The object is then represented by metadata in the repository, which makes it possible for other services to interact with the object, and the object is formally considered a "managed object" by the system.
Managed objects facilitate simplified administration of an Enterprise Business Intelligence system and represent a principal benefit of Crystal Enterprise. After an object is managed by the system, all of that object's properties become managed from a single access point. For instance, if a server needs access to an object, it asks the CMS for an ID to the object. Additionally, if you want to maintain a certain number of reports in the system, or only keep objects more recent than a certain date, this can be automated within the system. If you want to schedule a report, or organize similar reports into folders, or control access rights, or link reports, or change database properties of multiple reportsall of this and other similar actions are possible when you manage the objects within Crystal Enterprise.
By having objects managed, a Web application developer can use Crystal Enterprise to manage and provide access to all objects. Rather than requiring knowledge of object filenames or network share locations, or even which objects or reports are available at all, developers can simply query Crystal Enterprise for the desired objectsperhaps those kept in a certain folder or of a certain type. Each time a user accesses the Web application, the content might be different, depending on the actual reports (objects) published by or scheduled into Crystal Enterprise. Web developers are not required to make changes such as adding and maintaining reports. This can be done by a report developer or system administrator through delegated administration and provides a logical separation of tasks.
Managed objects can be categorized into folders, which themselves are managed objects. This categorization adds to the manageability of Crystal Enterprise because content can be easily organized into something that is meaningful to end users.
Crystal Enterprise 10 adds several new types of objects to the system, such as program objects and third-party objects such as Microsoft Word objects (please see "The Server Tier: Introduction to the Crystal Enterprise Framework" earlier in this chapter for a complete list). The system database also includes a report component repository that simplifies access to corporate objects such as logos, images, disclaimers, and so on, and a rich semantic layer called Crystal Business Views.
If you were to look at the database directly, you would see that these additional capabilities have altered the database tables from previous versions of Crystal Enterprise, and you now see four tables in the system database instead of the previous two. The two additional tables represent the report component repository.
For performance and security reasons, the vast majority of the information about objects is stored in a binary format in the database, making it unreadable to direct database access. Instead, the CMS provides access to database objects via the CE-SDK via a SQL-like query language. This system ensures authenticated and authorized access only; the application provides access to objects based on their authenticated identity only.
The scheduling service of the CMS makes it possible for objects such as Crystal Reports to be processed at a particular time or on a recurring basis. This service determines when a report object gets processed using the Report Job Server, or a program object gets processed using the Program Job Server. When a scheduled event occurs, the two main servers that interact with the object are the relevant Job Server and the Event Server. Additionally, an object package combines objects such as reports or programs for simplified scheduling.
When scheduling a job, the scheduling service gathers information from various objects before running. It needs information from the report object regarding how to connect to the database, the desired format to output the report to, where it might be delivered (such as an e-mail address), and which server is going to process it (if there are multiple Job Servers). An object can be scheduled to run at a particular date or time, on a recurring basis, or perhaps according to a custom calendar. This information is then stored in the system as a scheduled instance of the object. This is known as a ProcessingInfo object.
The ProcessingInfo object contains all the properties set on the report object when it was scheduled. It knows when the job will run as well as all the data-connection information and all the formatting and distribution settings.
A scheduled object can be made to be dependent on an event occurring within or outside the Crystal Enterprise system before it will run. By using events with schedules, it's possible to provide meaningful control around when a schedule should actually run. If an object is due to run every day but the databases that it queries are updated sporadically, an event can be used to initiate the running of the scheduled job and eliminate unnecessary scheduled jobs or reports.
New to Crystal Enterprise 10, a notification capability provides the capability to send e-mail upon a scheduled job completion, either in the case of success or failure. Common use cases include an administrator receiving notification of a report processing failure, or an end-user group being notified of the latest quarterly results.
In some instances, batch scheduling can take place via a custom program. In these cases, report instances might be distributed to many users. The scheduling service makes this possible by allowing a job to be scheduled on behalf of another user. This is useful when an organization wants to configure its system to only show instances of objects to a user if she "owns" that instance. This is exposed in the CE-SDK in the ScheduleOnBehalfOf property of the SchedulingInfo object.
Events make it possible for users to ensure that scheduled jobs are processing only when external systems, like a database, are ready to be accessed. All events interface with the CMS Event service.
Crystal Enterprise supports three types of events. The first event type is a scheduled event. The scheduled event allows an organization to create dependency chains when scheduling reports. This enables the user to determine the schedule of a report based on a preceding report successfully completing or failing. Users can easily configure scheduled event conditions such that if report 1 is successful, run report 2. If report 1 is not successful, run program object 3. This can continue so that a process flow is established.
With the inclusion of Program Objects in version 10 of Crystal Enterprise, it should become apparent that these scheduling daisy chains could now include workflow that reaches outside of the Crystal Enterprise environment and could affect external systems or applications.
The next event type is a custom event. The custom event is sometimes also called a generic event in the predecessor to Crystal Enterprise, known as Seagate Info. This event requires application developer interaction to trigger the event by using the Trigger() method via the Crystal Enterprise SDK. This event type gives an organization a great deal of flexibility. Having an event that can be triggered by code makes it possible to have an external system determine when the event is triggered and the scheduled jobs that are dependent on it will run. A good example of this would be a database update trigger user event for Crystal Enterprise.
The third type is a file-based event. These events are managed by the Event Server and are discussed later in the chapter.
As a Crystal Enterprise system grows and access to information that it contains becomes increasingly mission critical, it's important that the system be fault tolerant, ensuring that end users are always able to access their information.
The CMS can be clustered to provide load balancing and fault tolerance for the services that it provides. When two or more CMSs are clustered, they perform as an active-active collection of servers. By being active-active, they are sharing the workload and this translates into increased scalability and performance.
New to Crystal Enterprise 10, the auditing capability simplifies gathering statistics on system performance and enables administrators to profile the usage of reports or system resources. Because the auditing database is separate from the CMS/system database, you must create the "blank" database and any necessary ODBC DSN first. From within the Crystal Configuration Manager (CCM) you then stop the CMS, click on the Specify Auditing Source icon (the fourth icon from the right in the toolbar), specify the database or DSN you want to use, and then restart the CMS, whereupon the CMS creates the auditing database structure and connection. On Unix platforms you take the same approach, except that you stop and start the CMS with the ccm.sh script and use the cmsdbsetup.sh script with the selectaudit option to specify the audit database, including the connection port (which is 6400 by default).
After the CMS starts and connects to the audit database, you can specify which items you want to audit. The administrator enables auditing of each of the following items by entering the Crystal Management Console (CMC), navigating to the Servers, choosing the particular server you want to affect, and then checking the appropriate boxes in the Auditing tab. Table 24.1 shows each server's auditing features. Note that the table does not include the Page Server; the Page Server's auditing occurs through the Cache Server, which takes reports from the Page Server and passes them to the appropriate viewer. Note also that although the Job Servers are treated as one, they must be specified on each server. Additionally, you must specify auditing on each instance of a server if multiple instances exist.
Folder creation, deletion, modification
User logon (concurrent and named)
User password change, logon failure, logoff
Report or Program Job communication lost (that is, timeout on Program/Report JobServer)
Report view success/failure
Report open success/failure and which viewer was used
Report creation success/failure, and which viewer/application was used
Report save success/failure and which viewer/application was used
Event registered, updated, or unregistered
Job success/failure, failure-retry state
Note that the CMS periodically broadcasts a request to all system services requesting audit information to be returned for writing to the database. The default is every five minutes. Your Crystal Enterprise documentation describes several command-line flags to specify this and other audit-specific CMS parameters. You must specify the same command lines on all CMSs if clustered.
Web Component Server
The Web Component Server (WCS) is an application server provided by Crystal Enterprise that delivers seamless integration of Crystal Enterprise content into any Web application. This integration can be hosted on a variety of Web servers and provides a robust scripting interface known as Crystal Server Pages that enables the creation of rich server-side Web applications.
At the time Crystal Enterprise was introduced many organizations already had licensed and installed Web servers, but did not possess an application server. Crystal Decisions found it necessary to provide this application server so that applications could be written against the CE-SDK on any operating system platform. With the maturation and consolidation of the Web server market many of the functions that the WCS provides are now supplanted by the combination Web and application servers common in the marketplace, rendering the WCS application-serving capabilities unnecessary for most organizations.
However, the WCS did provide some capabilities in addition to CSP processing, and these functions, if desired in an installation, are now provided by the Web Component Adapter. In summary, the WCS capabilities include the following:
To provide these capabilities, should they be required by the use case, Crystal Enterprise includes the Web Component Adapter (WCA) that provides all the above, except the processing of CSP pages.
Crystal Enterprise 10 no longer requires the WCS for all installations. A typical installation on a Unix system, for example, would use client applications such as the Web Desktop written in Java Server Pages (JSP), rather than in Crystal Server Pages (CSP), and so would not require the WCS to process CSP pages but would use a Java application server to process the JSP against the Java version of the CE-SDK. On a Unix installation, then, you use the WCA to take over the functions listed above that might be required on that platform, given that you no longer install the WCS.
A custom application written using the Microsoft .Net version of the CE-SDK would also not require the WCS as the application-processing functions would be carried out by Microsoft Internet Information Services (IIS) Web server and the .Net Framework application serving capability, along with the Crystal Enterprise Primary Interop Assemblies.
The Web Component Server interacts with Web servers through a component known as the Web Connector. So whenever a WCS is required, the Web Connector also must be installed. The Web Connector typically operates as an in-process extension of the Web server. The only exception to this rule is the CGI engine.
Crystal Enterprise provides Web Connectors for
The Web Connector redirects certain Web requests from a Web server to the Web Component Server (WCS). By having the Web Connector reside on the Web server and communicate with the WCS, possibly on another physical server, it allows the deployment of the WCSs in a way that will facilitate scaling out, or adding additional physical servers to the Crystal Enterprise architecture.
The Web Connector is listening for several potential requests, including Crystal Server Pages and accessing certain objects.
Crystal Server Pages
For future application development, most organizations will derive benefit from using an alternative development approach such as coding against the CE-SDK in Java or a .Net language, rather than developing applications in CSP. Although CSP is not specifically deprecated in the version 10 release of Crystal Enterprise, Business Objects has indicated in the help file that CSP will be deprecated in a subsequent release.
Another request that the Web Connector will send to a Component Server is known as a Crystal Web Request, or CWR. A CWR is a server-side object that exists on the WCS and provides access to managed objects contained within the Crystal Enterprise Repository.
Support for URL-based requests to directly view a Crystal Enterprise object such as a report is deprecated within Crystal Enterprise 10 because the report viewing model has changed to a Crystal Report viewing control within the Application tier. Certain legacy applications might still use .cwr requests, but this method is not recommended for new installations to ensure forward-compatibility.
Web Component Adapter
In configurations on Unix, or where an organization wants to use a Java application server (or servlet container like Tomcat) in conjunction with Crystal Enterprise, a Web Component Adapter replaces the Web Connector and WCS. No WCS or Web Connector is required in this configuration. Specifically, the Web Component Adapter
The Web Component Adapter supports the following Java application servers:
Job Servers (Report and Program)
The Job Servers process scheduled jobs. Job Servers are informed about the content that they process by loading a Job Server plug-in. This plug-in, like all other Crystal Enterprise plug-ins, describes what capabilities it exposes to the service using it. In Crystal Enterprise 10, there are two different Job Server plug-ins: one for Crystal Reports and one for Programs. When the system administrator adds a new Job Server to the Crystal Enterprise system, he must choose which type of plug-in, and thus which type of Job Server it will be.
Report Job Server
The Report Job Server allows scheduled objects to access the necessary data source required, provides row-level data security services, and distributes the content to a location chosen by the user.
Essentially, the Job Server provides three main services to Crystal Enterprise:
When a scheduled job is about to be processed by the Job Server, it gathers the appropriate information from the ProcessingInfo object mentioned earlier. This information includes database connection information and any filters or parameters required that determine what the final query is. After it has this, it opens the object and queries the database for the appropriate information. The data is retrieved, compressed, and stored back into the system as a report instance.
Distribution of Objects
It's the Job Server's responsibility to distribute the object to the destination set by the user scheduling the job. To do this, the distribution service interacts with the distribution plug-ins mentioned earlier and receives the information appropriate to each plug-in type. For example, if a user scheduled a job to be delivered by e-mail, the distribution service would get the To:, Cc:, subject, and body properties as well as the SMTP server that is configured for use with Crystal Enterprise. Chapter 26 shows how to configure the distribution service.
This service enables a user to send a report outside the Crystal Enterprise environment and deliver it to one of four destinations using the distribution plug-ins mentioned earlier.
E-mail as a Destination
Crystal Enterprise supports SMTP as its e-mail distribution protocol. Virtually all Internet mail servers support SMTP, so it's easy for an organization to integrate Crystal Enterprise into its mail system, regardless of platform. By supporting standards such as SMTP, organizations are not restricted in the e-mail server types that can be used with Crystal Enterprise.
FTP Server as a Destination
Organizations send objects directly to an FTP server location so that it's available for other users or applications. This is useful for getting information that can be used offline by customers, partners, or suppliers. A report can also be scheduled to update information at an FTP location on a regular basis to drive another application or business process. For example, a report could be designed to provide a product pricing list, including dynamic calculations of discounts that vary by customer, and then deliver it automatically to an FTP folder on a customer's Web server. Another example might be a scheduled Crystal Report output to an XML document sent via FTP to an external server for a business partner's application to pick up.
Unmanaged Disk as a Destination
The unmanaged disk distribution service is used in the same fashion as the FTP server except that this service distributes the scheduled report to a disk location that is available on an organization's internal network. Building on the preceding example, an organization could have Crystal Enterprise distribute a general pricing list to a location on disk and have this information populated on a purchase form or as a way of populating values into a Web service.
Printer as a Destination
Distributing reports to a printer available on the network is as simple as deciding which printer is to be used when the report is processed. Printing reports often is necessary when the information on the report needs to be shared with people who don't have access to a computer during analysis of that information. Situations such as team or board meetings often require that each member have a printed copy of the information to be covered.
Interacting with External Systems
Sometimes, it's necessary for a job to be intercepted before being run. Typically, organizations choose to do this so that information from an external entitlement database can be queried, and they can determine what data the user is allowed to view and modify the filter to reflect their restrictions. This is done in Crystal Enterprise using a component called a processing extension. The processing extension is loaded by the Report Job Server during a schedule or by the Page Server or Report Application Server if being viewed. This extension allows for row-level security. Row-level security makes it possible for organizations to have content, such as a Crystal Report, shared by many users but the actual data that they see is targeted to them. It's also important to note that defining row-level security does not affect the content template but rather filters the view that the user sees based on the data that user has the right to see. There is no need to go into Crystal Reports and modify the report to affect which pages a user can see.
With the inclusion of Business Views in version 10 of Crystal Enterprise, it is now possible to directly include external entitlement databases into Business Views and easily provide both column- and row-level security through that mechanism.
Processing extensions are just that, an extension of Crystal Enterprise. Some examples of processing extensions are available for Crystal Enterprise with the product.
Program Job Server
Much in the same way that the Report Job Server processes Crystal Reports, the Program Job Server processes programs. These programs consist of three types:
These objects are published to the Crystal Enterprise Framework, scheduled to be run by the Program Job Server, and executed. The goals of the programs differ as organizations can write programs according to their needs. Although processing a report results in a report instance, processing a program results in only a record that the program was run. The results of the program will depend on the program itself. Some programs might do maintenance on the Crystal Enterprise system and some programs might have functions totally unrelated to Crystal Enterprisea powerful new capability to integrate Crystal Enterprise functionality into an organization's workflow.
The Page Server is responsible for delivering three services to the framework. The primary service is to generate pages for viewing reports. This capability is relevant for performance and the scalability of viewing reports because it only ever sends a single page of a report to the viewers. It does this by using a service known as Page on Demand. Other services performed by the Page Server are refreshing a report's data using a service known as on-demand viewing as well as the capability to export a report to another format for end-user download.
Page on Demand
The Page on Demand service receives a request to view a certain page of a report and then generates just enough information to have the report viewers display that page. As described previously, it's much more efficient in a multiuser or low bandwidth environment to have pages of a report rather than the entire report sent to the viewer. This service not only ensures a positive user experience by getting them the view of the report they're after quickly, it also is important to administrators.
Page on Demand minimizes demand on network bandwidth. Each page of the report generated by the Page Server is approximately 2KB in size. A report is usually much larger than this, especially if it's many thousands of pages containing thousands, if not millions, of rows of data. It should now be apparent why Page on Demand is a useful service. This service goes one step further by ensuring a positive user experience through a technology known as report streaming.
Report streaming builds on Page on Demand by determining which objects in the page might take longer to calculate than others and then delivering them to the viewer slightly behind objects that can be generated quickly. For example, the report might contain summaries or charts that require additional calculations to be performed before rendering for the end user who is viewing the report. Report streaming will ensure that the rest of the information, such as the details making up the chart or summaries, is sent to the user right away. The remaining portions of a report are sent as soon as they are calculated on the server. Report streaming is similar to the placeholder technologies that browsers use when loading images.
The Page Server allows a user to refresh the view of the report dynamically instead of scheduling the report. To take advantage of this service, users first must be granted the proper access level for the object that needs to be updated.
If a user has this access level, he has the capability to force the report to connect to the database upon his request. When the user refreshes the report, he will be prompted to enter any relevant information the report requires, such as database connection information or parameter values. Before enabling on-demand viewing for all users, the use of the system and size of reports must be taken into consideration. If many users are querying the database at the same time, are they asking for similar information? If so, the report could be run once and then shared among many users. What amount of data is expected to be returned or how long is the report expected to run? Often, a report might be too complex to enable all users in an organization to run it themselves. Based on the amount of time spent in the database, on the network, and in the report engine, a report can take several seconds, or even minutes, to complete. If this situation occurs, it makes sense to schedule any complex reports that spend a lot of time processing and allow that report to be shared among the users.
Exporting to Other Formats
The Page Server makes it possible for users to request to have the report presented to them in a format other than Crystal Reports. These formats are Crystal Reports, Microsoft Word, Microsoft Excel with formatting, Microsoft Excel data only, Adobe Acrobat, Rich Text Format, text, or Comma Separated Value (CSV) format. The user can request these formats typically by selecting the Export button in the report viewers.
In the same manner as the Job Server, the Page Server is able to restrict information presented to users based on a row restriction set by a processing extension. The main difference here is the Page Server is providing this capability at view time rather than at schedule time. Each method has its benefits. If a report has a row restriction applied to it during scheduling, the amount of data being returned to the report is filtered during the query. This means that the report instance only contains data that is relevant to the user who scheduled it. Another method is to apply the row restriction at view time.
If restrictions are applied at view time, the report instance contains the data necessary for the report, regardless of who is viewing it. When a user requests the report, the Page Server communicates with the processing extension to determine the row restriction to be applied for the user viewing the report. The data is then dynamically filtered so that the user is seeing only the data that he is able to see.
The Cache Server is an integral component to the overall scalability of Crystal Enterprise. It establishes a cache of report pages generated by the Page Server, which are called encapsulated page format (EPF) files, and promotes the sharing of this information. This is an important facet of the Crystal Enterprise Framework because, instead of having the report page regenerated for each user who requests it, the Cache Server determines whether the page can be shared among users. If it can, it will return the cached page. The Cache Server receives these requests from the report viewer and when the request is received, it checks to see whether the page requested is available in cache. If it is, the page is returned to the report viewer to complete the request. If it is not, the request is sent to the Page Server to have it generated.
In the case that the Report Application Server serves the view request, caching occurs inside the Report Application Server itself, and the Cache Server does not interact with it. The Report Application Server would service view requests requiring interaction; for instance, when using the Interactive Viewer, the Report Application Service renders reports, as it has the additional capabilities that the Interactive Viewer requires.
The Cache Server is responsible for maintaining a cache of report pages generated by the Page Server on disk. When a request for a page is received, the Cache Server checks to see whether the page is available in its cache and whether it can be shared. If it is a sharable page, the server returns the page to the user. If the page cannot be shared, the request is sent to the Page Server to generate a new page.
Sometimes, pages are not sharable. The Cache Server determines that a report page is not sharable if it meets one of these conditions:
The Event Server provides a way for Crystal Enterprise to monitor and use events that are occurring outside of its environment. It enables an organization to trigger the running of Crystal Enterprise scheduled jobs dependent on external events.
The Event Server monitors the operating system for the existence or modification of a file. Using a file to trigger an event is a useful way of determining when an event is triggered because the generation of a file is a simple thing to achieve. For example, an organization might perform a nightly data warehouse update, and have the same program that does the database load create a file after finishing the load. Upon file creation or update, the event server then reports to the CMS that the required trigger is present, allowing the scheduled job to be processed.
File Repository Servers
The File Repository Server provides the Crystal Enterprise Framework with two core services. The first is the capability to provide a centralized content storage facility, and the second is the capability to abstract the location of these objects from other services within the framework.
Centralized Storage of Content
Crystal Enterprise provides two File Repository Servers (FRS). An input FRS is used to store any content that has been published to Crystal Enterprise by the Publishing Wizard or from the content creation tools. When content is published to Crystal Enterprise, the object is copied from the client to a location in the FRS. This location is set by the installation of Crystal Enterprise but can be controlled by the administrator through modification of the FRS root directory. The objects are placed into unique folders on the server and are given unique names to ensure that there will not be any conflicts with other objects.
An output FRS is used to store the content generated by a scheduled job. The output server operates in the same manner as the input server by generating a unique name and location for each object.
Abstraction of Content Location
Now that the content is centrally stored and managed, the FRS abstracts the actual location of the objects from the other framework services. By using Uniform Resource Identifiers, or URIs, the framework sees a virtual "location" for the content. This makes it easy for services to request an object from the FRS without the need to ensure that it has access to the actual physical disk location. From a deployment and administration perspective, the job is much easier if objects are referred by URI. There is no need for complex network configurations, such as setting each service to run as a user account so they can access network shares.
However, this means that the system administrator must ensure that the account privileges of the FRS daemon or service include access to the disk location(s). This concept, of appropriate privileges for services, echoes throughout the entire system. The various services or daemons all interact with the operating system in different ways, and each requires the appropriate rights to function.
Report Application Server
The Report Application Server is a powerful add-on server to the Crystal Enterprise Framework. It enables organizations to take their Web reporting a step or two further than the simple viewing of report content over the Web. The Report Application Server provides three new components for the framework: an alternative processing component for the report, a full object model for creating and modifying a Crystal Report, and a dedicated server for handling the creation and modification requests.
Although Crystal Enterprise includes the Report Application Server, appropriate licensing must be purchased to use the report modification and creation capabilities within the Crystal Enterprise Framework. This license can be purchased in addition to Crystal Enterprise licenses, or as part of a Crystal Enterprise Premium bundle.
Crystal Report Modification and Creation Concepts
One of the main benefits of adding the Report Application Server to the Crystal Enterprise Framework is that organizations can quickly and easily add Crystal Report creation and modification capabilities to their Web applications. The Report Application Server makes it possible to connect to a server-side data source, query for information, and then display that information, all within a zero-client Web viewer. By using any of the built-in clients that are delivered with the Report Application Server or using the object model to create a custom user interface, it's possible to provide ad hoc Crystal Report creation and modification to the system end usersand essentially provide self-service reporting.
Web Report Design
The Report Application Server can take the data returned as part of the previously mentioned ad hoc report query issued by an application user and allow her to begin to format the report. The user is able to modify the query in many ways to format it into a quality report. Many people, after seeing these capabilities within a Web browser, remark that the experience is similar to a Web-based version of Crystal Reports. The Report Application server enables the making of database connections, selecting and joining tables, choosing fields, grouping and summing, creating formulas and charts, and formatting fields and sections.
Interactive Report Viewing
In addition to the capabilities of the Crystal Enterprise report viewer connected to the Page Server, a benefit of connecting to the Report Application Server from a report viewer is that it provides an object model that enables the report to be manipulated on the server. You can modify the viewer to provide a flexible viewing experience.
The viewer supports an event model that provides you with the information selected by the user in the viewer. This makes it easy for organizations using the Report Application Server to make closed loop systems.
This means that when the event model is used, a report can become much more interactive and drive more business value. For example, a retail organization uses Crystal Enterprise to present its product catalog to its users. The reports are very useful and allow users to browse the catalog or drill in for more details on items. If the user wants to order something, he needs to navigate to another form to enter his order and he has to keep looking back to the catalog report to remember the part number he wants to order.
Using the event model of the Report Application Server this organization can, without changing its catalog report, enable the user to click on the item he wants right within the view of the catalog. This event captures the data that the user clicked on and enables the Web developer to populate the order screen with this information with no user interaction. If the report also displayed inventory counts, the report could be updated as soon as the user finished his transaction.
Rich Object Model
The Report Application Server provides a powerful object model (covered in detail in Chapters 3133) that allows an organization to control any aspect of how a user performs an ad hoc query or formats it. In typical ad hoc tools the users are given the same tool and the organization deploying the tool has no say in how the user is able to perform her tasks.