- Exploring the System Architecture
- Crystal Enterprise Architecture Overview
- Introduction to the Crystal Enterprise Framework
- Overview of the Crystal Enterprise Servers
- The Crystal Enterprise Architecture in Action
- Taking Advantage of the Crystal Enterprise Distributed Architecture
- Extending Crystal Enterprise
Overview of the Crystal Enterprise Servers
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. Each server operates as an NT service or as a daemon when on Unix.
An overview of Crystal Enterprise on Solaris is provided in Appendix A, "Running Crystal Enterprise on Sun Solaris."
The following list shows the servers that are delivered with Crystal Enterprise. These servers can be thought of as "core servers." Crystal Enterprise also supports add-on servers such as the Report Application Server, which is introduced in this chapter and explained in more detail in Appendix B, "Using the Report Application Server." These additional servers do not ship as part of the default Crystal Enterprise but can be added to a deployment if an organization chooses to use the additional functionality they provide. The "core" servers available with Crystal Enterprise are
Automated Process Scheduler
Web Component Server
File Repository Server
These servers can be seen in the architecture diagram in Figure 3.3.
Figure 3.3 The core server architecture for Crystal Enterprise.
With these servers in place, Crystal Enterprise can manage any reporting content, such as Crystal Reports or Crystal Analysis Professional, as well as offer 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 is fully supported. By doing this, Crystal Enterprise provides a scalable, reliable, and fault-tolerant system.
Crystal Automated Process Scheduler
The Crystal Automated Process Scheduler (APS) is the server that provides some of the core services that the Crystal Enterprise framework uses, such as allowing other servers to register with the framework, users to be authenticated with the system, and the storage mechanism for persisting the metadata about each object. The services provided by the APS could be categorized into three main categories, which are
Controlling access to system content
Managing servers that have the capability to process content
The services provided by the APS are
Object metadata storage
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 APS interacts with these third-party authentication mechanisms by using the following authentication plug-ins, described earlier in the chapter:
Crystal Enterprise security plug-in
Windows NT security plug-in
LDAP security plug-in
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 security plug-in allows a customer to map any number of users and groups into Crystal Enterprise. An administrator is required to go into the Crystal Management Console (see Chapters 5 and 10) or use an application written using the SDK and define the default NT domain as well as any NT groups that might need to be mapped to Crystal Enterprise resources. 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 security plug-in will ask the NT security database if this is a valid NT 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
iPlanet Directory Server
Novell Directory Services
Crystal Decisions might provide support for additional directory servers, so it's helpful to check its Web site for updates.
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's planned 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.
Crystal Enterprise can aggregate or group users in two ways, as Chapter 10, "Administering and Configuring Crystal Enterprise," 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 taken, a native group could contain a mapped group. The use of mapped groups is important because as users are added or removed from groups in the external systems, the changes in group membership will be reflected in Crystal Enterprise. It's also possible to create a hierarchy of groups to better organize the end users of the system.
After configuring Crystal Enterprise with external users and groups is complete, it's necessary to determine which objects within the system an end user has the authority to see. After all, that's the whole point in deploying Crystal Enterprise, providing a central mechanism to control who has access to certain reports. Setting up authorization rules or access control is straightforward once users and reports have been added to the system. Chapter 10 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 an administrator 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).
Object Metadata Storage
One of the tasks that the APS performs is storing in a repository information about each object. After this information is stored, it becomes available to other objects or servers within the system. This persistent information is what is used to describe an object (such as a Crystal Report) and makes it possible to dynamically query the system and discover the properties of an object.
If the information was not stored in a repository, the system would not scale because it would be dependent on the information being stored in memory on one physical server. The APS stores this information by writing it to a relational database. The storage service is able to access these databases by using ODBC or by a direct interface to the database. The following shows databases supported by the APS and how they are accessed by Crystal Enterprise 8.5 when the APS is operating on Windows NT:
Databases Supported By Using ODBC
Microsoft Data EngineMSDE
Microsoft SQL Server 2000 SP1
Microsoft SQL Server 7 SP3
Sybase Adaptive Server 12.5
Informix Dynamic Server 2000 v 9.21
Databases Supported via a Direct Interface
Oracle 8i (8.1.7)
DB2 UDB 7.2
The databases that the APS can access on Unix are a subset of what's available on NT. If the APS is operating on Unix, it's able to use the following databases. All database connections for the APS repository are done by a direct interface.
Oracle 8i (8.1.7)
The default database that the APS will use if one is not provided is the MSDE. Because performance of the APS 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 Nameserver is a service of the APS that allows all other Crystal Enterprise servers to register with the Crystal Enterprise Framework. After the server has registered through the Nameserver, it is able to discover the other servers active within the framework and use any services it needs from those servers.
One of the key benefits of Crystal Enterprise is how it manages objects. After an object (such as a Crystal Reports) 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.
The concept of managed objects is a critical benefit because it facilitates the manageability of Crystal Enterprise. After an object is managed by the system, the actual location of the object becomes unimportant (that is, it doesn't have to be on a network share). If a server needs access to the object, it asks the APS for an ID to the object. If a client Web application wants to display the object, it doesn't need to know where the object lives and whether it has the appropriate machine-level mappings, such as network shares, available to it. This also makes it possible for Web applications displaying content from Crystal Enterprise to become much more dynamic.
In typical Web applications, a developer will provide access to an object through a hyperlink, which is pointing to a document on disk. Such is the case with a Crystal Report, where a hyperlink on an ASP page can call a standalone RPT file using a URL line, similar to http://servername/reportname.rpt?init=dhtml.
By having objects managed, a Web application developer can simply ask Crystal Enterprise for a listing of objects. Rather than having to know the filename or network share location, the developer can ask for all objects 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 into Crystal Enterprise.
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 application end users through the Crystal Management Console.
It's much easier for users to find the report content important to them if it is organized. Otherwise, users would end up spending their time looking for the content that contains the information rather than leveraging the information within these reports or objects to make decisions that affect their business.
Although navigating categories of information can be time-consuming, Crystal Enterprise offers the capability for users to subscribe to objects and place them in a home folder. This "home folder" also happens to be managed and stored by Crystal Enterprise. When users are added to the system (see Chapters 5 and 10), a home folder is created for them. When users find some contenta report for examplethat they would like to access on a frequent basis, they can easily add it to their home folder by either copying it or creating a shortcut to it. When copying it, a new object is added to the system. The user then is able to make any changes to the object that she desires without affecting what other users might see. If the user creates a shortcut, it points to the actual object and inherits any changes made to the original object. ePortfolio, the out-of-the-box Crystal Enterprise end-user application, demonstrates all this capability.
For objects that can be scheduled, such as Crystal Reports, object management is extremely important to ensure that the system remains organized and performs at peak efficiency at all times. When objects are scheduled, they produce a new version of the object known as an instance. If the object is scheduled many times, it might become necessary to clean up older, unused instances. Rather than having an administrator manually clean up these instances, the system can be configured to automatically do this by setting object quotas in the Crystal Management Console.
Quotas can determine how often instances are removed from the system. Instances can be removed based on their age or how many instances exist per object. These quotas can be configured at three different levels:
The global level affects all objects within the system.
The folder level enables an administrator to set different quotas for each folder or subfolder.
The third level is at the object itself. This setting allows the administrator to set quotas that are unique to each individual object within Crystal Enterprise.
At each level, the administrator can configure different quotas for different groups or users within the system. See Chapter 10 for details on object instance quotas or limits.
The scheduling service of the APS 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 an object gets processed using the Job Server. When a schedule occurs, the two main servers that interact with the object are the Job Server and the Event Server.
When scheduling a job, the scheduling service gathers information from various objects before being ready to run. 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 be run at a particular date/time or on a recurring basis. 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, all the data-connection information, as well as formatting and distribution settings. Although it knows whether a specified Job Server is required, if that Job Server is not available, the schedule can be configured to retry the job.
A scheduled object can be dependent on an event to occur within the Crystal Enterprise system before the schedule can run. By using events with schedules, it's possible to control the necessity for a schedule to be 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.
In a typical Crystal Enterprise system, it's important to have a small group of people schedule an object and then have the object owned by particular 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 their system to only show instances of objects to a user if he or she "owns" that instance. Without the capability to schedule on behalf of another user, an organization would need to give each Crystal Enterprise user formal scheduling rights.
Crystal Enterprise supports three types of events. Events make it possible for users to ensure that scheduled jobs are processing only when external systems, say a database, are ready to be accessed. All events interface with the APS Event service when an event has been triggered.
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 whether a report should run depending on whether the preceding report was successfully completed or if it failed. An end user could easily configure a schedule event condition such that if report 1 is successful, run report 2. If report 1 is not successful, then run report 3. This can continue so that a process flow is established.
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 to run. A good example of this would be a database update trigger user event for Crystal Enterprise. Another might be an action performed by a user trigger event.
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 more mission critical to an organization, it's important that the system be fault-tolerant, ensuring that end users are always able to access their information.
The APS can be clustered to provide load balancing and fault tolerance for the services that it provides. When two or more APSs are clustered, they perform as an active-active collection of servers. By being active-active, they are sharing the workload, which translates into increased scalability and performance.
Crystal Enterprise can be licensed to operate in three configurations: Named User, Concurrent Access, or Processor. The APS manages access to the system based on the type of license key provided. Although a brief overview is provided here, Chapter 10 reviews this in detail.
A Named User license enables an organization to assign licenses to specific users. Using this license method ensures that these users always have access to the system. It requires that the organization obtain a license for the number of users required to access the system.
A Concurrent Access license is more flexible for organizations that might not know exactly how many users need access to Crystal Enterprise. By using the Concurrent Access license model, an organization can add as many users to the system as it likes, but Crystal Enterprise will only allow users to access the system concurrently up to the actual number of licenses. For example, if 100 concurrent access licenses (CAL) are available and there are already 100 active users in Crystal Enterprise, the 101st user would be denied access until one of the first 100 logged out or a session expired.
Crystal Enterprise can easily be configured to use both Named User and Concurrent Access license models at the same time. This gives an organization the best of both worlds. As many users as necessary can be defined in the system, and then Crystal Enterprise can determine, based on the licenses available to the system, which users are treated as concurrent access users or as named users. Following the scenario used previously with the 100 CAL licenses, if this same system also had 10 Named User licenses the administrator could define up to 10 users as a named user. When the system has 100 active users, the 10 users configured as named users are still able to log on to Crystal Enterprise because they are not counted in the concurrent access number. A typical deployment of Crystal Enterprise has higher-level organizational executives as named users.
The Processor license allows an organization the greatest degree of flexibility in regards to the number of users that can be active in the system at any one time. The level of activity is based on the hardware given to Crystal Enterprise. With the license tied to the number of processors being used by Crystal Enterprise, an organization should determine the expected user load on the system to ensure that sufficient resources are available. If hardware resources become strained as load increases and the processor license model is being used, additional licenses will need to be obtained. A Processor license model cannot be mixed with a Named User or Concurrent Access license.
Each license model is useful depending on the requirements of the system. An organization should determine how the system is expected to be used and any anticipated growth plans should be considered before choosing the model best suited for the system. The following section on scaling the system describes scenarios when one license is used over another.
Crystal Decisions updates the licensing model occasionally, so refer to its Web site for updated information.
Web Component Server
The Web Component Server 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. For more information on Crystal Server Pages, refer to Chapters 6 and 13.
The Web Component Server interacts with Web servers through a component known as the Web connector. 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 empress provides Web connectors for
Microsoft Internet Information Server
iPlanet Enterprise server
Domino Web server
The purpose of the Web connector is to redirect certain Web requests from a Web server to the Web Component Server. By having the Web connector reside on the Web server and communicate with the Web Component Server, possibly on another physical server, it allows the deployment of the Web Component Servers 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 objects.
Crystal Server Pages
The first of these requests is for a Crystal server page (CSP). The Crystal server page is analogous to an active server page but runs on the Web Component Server rather than directly on the Web server and provides the customization services for the Crystal Enterprise Framework. The benefit of using Crystal server pages is that they give the capability to author server-side business logic, have a process on one platform and enable the integration with a Web server of choice. The use of Crystal server pages does not tie one to a particular Web server. By using Crystal server pages, it is quite simple for a Web application developer to quickly author a dynamic Web application populated with Crystal Enterprise content (such as a corporate portal, which can have many different types of content, one portion being Crystal Enterprise content). CSP provides a way of direct interaction with the Crystal Enterprise application programming interface. An example of an application written using Crystal server pages is ePortfolio, an application delivered with Crystal Enterprise. Chapter 13 provides details on how CSP pages can be used.
Accessing CSP Applications
Because of the distributed nature of Crystal Enterprise, it's likely that the Web Component Server is not on the same physical server as the Web server. If this is the case, it becomes necessary to provide two copies of the application: one on the Web server to handle any requests for HTML pages and images, and the other on the Web Component Server to handle requests for CSP pages. It's much more efficient on a corporate network to do this because it avoids files being transferred between the Web server and Web Component Server. It's necessary to map the location of the CSP pages located on the Web Component Server to a virtual folder located on the Web server. This virtual path mapping makes it possible for a Web server's virtual folder to be translated into the path on the Web Component Server where the CSP pages exist and enable the Web Component Server to properly run the CSP.
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 Web Component Server and provides access to managed objects contained within the Crystal Enterprise repository.
As mentioned earlier, managed objects are a way for Crystal Enterprise to understand and interact with a given object. However, Crystal Enterprise can also interact with unmanaged objects, although they do not have access to the same services that managed objects do, such as scheduling. An unmanaged object is one that exists outside of Crystal Enterprise and is referenced directly by a URL to the report object. Chapter 7, "Publishing Content with Crystal Enterprise," provides a good example of using an unmanaged object.
Unmanaged object interaction is a mechanism that an organization can use to leave their reports outside the system and access these reports through a URL. This is most useful for organizations using Crystal Reports that have created an application before investing in Crystal Enterprise. Interacting with objects in an unmanaged way allows the customer to keep their existing application working without interruption, while at the same time giving them the capability to move those reports to the Web in a seamless way.
To use a report in an unmanaged way the reports must be accessible from a virtual directory on a Web server and a URL needs to be constructed. This URL references the report directly and can contain several URL querystring parameters.
In order for an application to use unmanaged reports, the system first must have a valid license. When the report is requested, the Web Component Server will ask for a license from the license service.
The Job Server is responsible for processing jobs that have been scheduled in the system. It provides services to the framework that allow objects being scheduled to access the necessary datasource required, be analyzed for proper access control to that data by providing row-level data security services, and then distribute the content to a location set by the user. 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 8.5 the only Job Server plug-in is for Crystal Reports.
Essentially, the Job Server provides three main services to Crystal Enterprise:
Distribution of objects
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 and stored back into the system as an 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. This service receives the necessary information that was set at schedule time to perform its tasks. 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 10 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 uses SMTP as its e-mail distribution mechanism. SMTP is a protocol that all mail servers support, 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
The FTP Server capabilities of the distribution service allow organizations to 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 that is needed 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 that is 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 is distributing the scheduled report to a disk location that's 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 what 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 Job Server during a schedule or by the Page 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.
Processing extensions are just that, an extension of Crystal Enterprise. Some examples of processing extensions are available for Crystal Enterprise with the product.
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 important to performance and scalability of viewing reports because it only ever sends a single page of the report to the viewers rather than the entire report. 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 know as on-demand viewing as well as the capability to download a report in another format.
Page on Demand
The Page on Demand service, (also mentioned in Chapter 1) receives a request to view a certain page of a report and then generates just enough information to have the report viewers display the page. As described previously, it's much more efficient in a multiuser 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, 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 deliver 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 their 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 Microsoft Word, Microsoft Excel, Adobe Acrobat, rich text format, text, or XML. The user can request these formats by either using the querystring described previously or by selecting the Export button in the report viewers. The text and XML formats are not available when using the export feature of the viewers. Using the Crystal Enterprise SDK, there are a number of ways to export a report into any format supported by Crystal Enterprise, including XML.
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 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 Web Component Server 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 Web Component Server to complete the request. If it is not, the request is sent to the Page Server to have it generated.
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 will return 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:
Row-level security is being enforcedIf row-level security is being used, the page of information is valid only for the user who requested it; therefore, the Cache Server is unable to pass this page onto another user.
The query within the report has changedThe query for the report can change if a user chooses to view a report and change the filter already previously defined or change a parameter value. When this occurs, the cached page is invalidated and must be regenerated.
As you learned earlier in the chapter, events are actually managed by a formal server in Crystal Enterprise. The Event Server provides a way for Crystal Enterprise to monitor events that are occurring outside its environment. It enables an organization to trigger the running of scheduled jobs that are dependent on a certain event in their environment to occur.
The main service that the Event Server provides is the capability to monitor the outside system for the existence or modification of a file. Using a file to trigger an event is a useful way of determining when the event is triggered because the generation of a file is a common thing for a lot of systems to do. For example, an organization might perform a nightly data warehouse update.
An organization would want the reports to wait until this load is complete because if they run when the data warehouse is offline, all the scheduled jobs would fail and the users would be upset when they went to view their reports. To ensure that reports don't run until the load is complete, they configure the Event Server to monitor the file system for a log of the completed update to be created. When this file is created, an event in Crystal Enterprise is triggered and the Event Server notifies the APS. Any reports that are dependent on this event are initiated and sent to the Job Server for processing.
File Repository Server
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 other 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. An input FRS is used to store any content that has been published to Crystal Enterprise by the Publishing Wizard or from the design tool. When content is published to Crystal Enterprise, the object is copied from the client to a location on the FRS. This location is set by the installation of Crystal Enterprise but can be controlled by the administrator by modifying the root directory of the FRS. 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 provides a powerful way of abstracting the actual location of the objects from the other framework services. This abstraction is delivered by using Uniform Resource Identifiers, or URIs. The FRS uses the URIs as a way of providing a virtual location to 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.
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 viewing content over the Web. The Report Application Server provides three new components for the framework: a new viewer that can be embedded more directly into Web applications, a full object model for creating and modifying a Crystal Report, and a dedicated server for handling the creation and modification requests. The Report Application Server is discussed in detail in Appendix B.
Note - Based on the current licensing model for Crystal Enterprise, the SmartReporting (Report Application Server) add-in must be purchased in addition to Crystal Enterprise. Refer to Crystal Decisions for updates to their licensing models.
Ad Hoc Query 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 ad hoc query capabilities to their Web applications. The Report Application Server makes it possible to connect to a server-side datasource, query for information, and then display that information, all with a zero client viewer in a Web browser. 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 take ad hoc querying to the next step by formatting the data into a presentable report.
Web Report Design
The Report Application Server can take the data returned as part of the previously mentioned ad hoc query issued by an application user and allow them to begin to format the report. The user is able to modify the query in many ways to format it into a quality report. End users can sort data, group it, and create calculated fields to manipulate data into a view that is suitable for them. After retrieving the data from a database, additional visual components can be applied to the report. The user can modify font information on the report for a more visually appealing look.
A report style can be applied to quickly update the entire report view to a preformatted style. Many times a report requires visual elements, such as charts, to be added for users of the report to quickly understand the data within the report. The Report Application Server also provides end users with the capability to embed a chart. The charts can be any type supported in Crystal Reports. The major benefit is that none of this detracts from Crystal Enterprise's major appeal: a zero-client environment. The embedded ePortfolio sample for Report Application Server is entirely DHTML.
Integrated, Embedded Viewing
When it comes to viewing the results of a recently created report or query, organizations have the flexibility to deeply embed the Crystal Enterprise report viewer into their Web applications. There is no need to use frames and dedicate one of the frames to the report viewer application. There is no need to have the report loaded into a new window. The report viewer that is delivered with the Report Application Server has the capability to be embedded into a <DIV> statement. This makes it possible for a Web application developer to place the viewer exactly where he wants it to appear. Another benefit of this viewer is that it provides an object model that enables it to be manipulated on the server. The application developer has the capability to modify the viewer with properties that allow the toolbars and navigation trees to be turned off.
The viewer supports an event model that provides application developers 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 is using Crystal Enterprise to present their product catalog to their users. The reports are very useful and allow users to browse the catalog, drill in for more details on items, and so on. 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 their 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 will allow 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 their transaction.
Rich Object Model
The Report Application Server provides a powerful object model 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 their tasks.
With the Report Application Server and its object model, an organization can determine the best way to present ad hoc reporting capabilities to their user base. For example, an organization might decide to deploy an ad hoc tool that allows end users to determine what data elements they need to see but there is no facility to apply a filter. This is because the administrator of this organization established a filter for the users and has stored this in a hidden database. The application developer takes this value and applies it to the user's query programmatically, all without the user knowing that this is occurring.