The present invention relates to generating customized reports.
Many firms have a need to prepare periodic reports for their clients. This is particularly true in the financial services industry, e.g., where an investment firm is performing wealth management services for investors. Prior art systems allow for the generation of customized reports. However, such reports can only be generated on an ad hoc basis. Prior art systems also provide for generating high volumes of reports; however, such reports are not individualized for a given client.
The present invention is directed to a system and method for generating customized reports. Data is retrieved from one or more repositories. The data is consolidated to form a data file. Configuration information from a template file is applied to the data file to produce a report file. One or more customized reports are generated based on the report file.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are intended to provide further explanation of the invention as claimed.
The accompanying drawings, which are included to provide further understanding of the invention and are incorporated in and constitute a part of this specification, illustrate embodiments of the invention and together with the description serve to explain the principles of the invention.
In the drawings:
Reference will now be made in detail to the preferred embodiments of the present invention, examples of which are illustrated in the accompanying drawings. The preferred embodiments are described herein with reference to reports generated by, e.g., an investment firm and its clients. However, the invention is equally applicable to any type of report that is to be generated on a high-volume basis and would provide benefit if customized, and is not limited to the particular embodiments described herein. Also, the present invention is described herein as using XML to define various vocabularies; however, other industry standard markup languages can be used within the scope of the present invention.
Large volumes of customized reports may be produced as a result of the systems and methods described herein. A report markup language is used, based upon XML in the preferred embodiment, to fully describe a report and all the elements that make up a report (e.g., different sections, and the components that comprise each section, down to the level of each individual element). This language is also used to describe the different ways in which a report can be structured and formatted. Specifying each element of a report in XML, with the ability to easily manipulate it with XSLT, results in a report structure that is extensible and flexible. Establishing a standard way of describing a report (including its structure, data, and styles) allows for the easy exchange of information between different systems, as long as each system understands and adheres to the report XSD schema. The reporting engine can accept data from any data provider, and data providers can export information to any downstream system, as a result of the standard created. Because this standard is based on XML in the preferred embodiment, the data can be easily transported and manipulated, and the structure can be easily checked and enforced.
In general, a business schema is developed which describes the raw business data. This schema drives the remainder of the process, through multiple steps of transformations of the business data, through to the actual rendering of reports. The transformations include, e.g., addition of styles, labels, data types etc. These transformations are achieved through the use of sub-schemas, which are all driven by the business schema and describe how to add attributes to elements in the business schema. Transforming the business data in this way is extendible to any number of transformations in view of the fact that the system described herein provides a platform and a vocabulary to insert data points.
An exemplary report mark-up language is shown in
Reports that can be generated into a PDF can be considered to be made up of two main parts—the report data and the report configuration files. Each is defined by an XSD schema.
A report template is a set of customized report configuration files. A series of standard report templates are available to firm representatives, who have the option to choose from any of these templates from which to generate a report and, within each template, have the option to change some configuration settings.
Given the report data and report configuration files are defined by an XSD schema, and stored as XML files, the entire report can be easily modified and extended. XML data can be, e.g., easily consumed by other applications using .Net or Java, transported through http, stored in databases such as UDB or SQL Server, and manipulated and transformed through XSLT or XSL-FO. In view of the fact that the elements of the report are defined, any individual element can be formatted, transformed, manipulated and modified. For example, with reference to
In the preferred embodiment, in order for the system to accept data from existing firm systems, the data from those systems must be transformed into a format and a schema that conforms to the report data defined schema using a data adapter. For example, one type of adapter takes data from a spreadsheet and through a series of XSLT transformations, thereby creating an XML report data document that conforms to the defined schema. Different Data Adapters (i.e., unification platforms) can be used to accept data from other sources.
One embodiment of the system includes a data combiner, which accepts data feeds from multiple sources and combines them into an XML data document. In particular, the data for each section of a report may come from different data sources. The data combiner takes the data for each section, keeps track of the data, and combines it into one XML data document, fully compliant with the defined XML data schema.
An embodiment of the system may also include a consolidator/pre-renderer to prepare the report data XML for rendering, and apply the report configuration XML files to it. In particular, once the data file is ready, the configuration files for that report template are applied to the XML data file. This means that the data file is transformed by applying each of the configuration files to it (style, layout, configuration files). However, the data itself is not changed; instead, style, layout and configuration information is attached to each element. This prepares the report file for rendering into, e.g., PDF format.
A report validator may be included to provide a mechanism for report validation. Before the xml document is sent to be rendered into a PDF, the report validator may run a series of checks on that file, which can include business logic, intra-report, or options checks. The validator can cross-foot totals and portfolio positions, by way of example, for consistency checks. Thus, the validator can programmatically inspect the data for visible inconsistencies, which is typically a human function. The streamlining that is yielded by engaging the XSD schemas makes this possible in large volumes as the customizations are not an impediment given that they are compliant to the master (i.e., report schema).
When a data XML document ready to be rendered, a final transformation occurs. In particular, a template is applied to the data document. The data document is transformed by the template into an XSL-FO document, in the preferred embodiment. This template is designed to transform an XML document that conforms to a specific schema. This template is extensible and flexible to accommodate all current and future report sections, and all configuration options. In a final step, the XSL-FO document generated by the template and is transformed into a PDF document.
The system can be used to produce reports on an ad hoc or a batch basis. In a batch processing system, data is delivered in aggregated data files. An aggregated data file, or data file with data for multiple reports, is processed and rendered to produce reports in batch.
With reference to
In step 201 of the process, package, template and client configuration information 200 are added. Broadly described, such information is that which is specific to each individual client/investor. For example, package information introduces the concept of an account and ownership of that account. Thus, this data may describe the number of recipients of the report, and the name and address of the account owner. Each client's package points to a particular template. A template is a collection of instances of mark-up language driver files that dictate how the report is to be laid out. For example, a template defines the sections that are in the report (e.g., a page) and which components are in those sections (e.g., with reference to
Thus, a client relationship manager who knows each of his clients, and the manner in which such clients would want their reports rendered, can specify the same in connection with generating reports. By defining those portions of the configuration that need to be exposed as customizable, creating a new driver file relating to such customization, and creating a process to insert it, generating large volumes of highly customized reports can be achieved.
At step 301 in the process, style/layout/format components 300 are added. Vocabularies 302 are defined to call out aspects of the data such as font, color, data format, and page breaks, by way of example. These components are interjected into an instance of the business data as it works its way through the assembly line.
At step 401 in the process, the output 400 is comprised of an XML document that contains the business data 100, the package and configuration information 200, and the style/layout/format components 300. The XML document is then rendered into an industry standard format (e.g., PDF), using commercially available software packages such as Assentis, as will be known to those skilled in the art.
Data consolidator 317 retrieves data from one or more Adapters 318, using information from Portfolios file 319, and combines all the data into a Business Data file 320. Each adapter is configured to retrieve data from a given system. The Report Assembler 312 applies Report Configuration file 310 and Display Configuration file 311 information from the Report Template file 313 to the Business Data file 320 to produce a Report file 324. Report Renderer 325 uses the Report file 324 to produce a Report PDF 326.
While the invention has been described in detail and with reference to specific embodiments thereof, it will be apparent to one skilled in the art that various changes and modifications can be made therein without departing from the spirit and scope thereof. Thus, it is intended that the present invention cover the modifications and variations of this invention provided they come within the scope of the appended claims and their equivalents.