United States Patent5870746
Knutson , ; et al.February 9, 1999

Title

System and method for segmenting a database based upon data attributes

Abstract

A system and method for allowing a user to segment and partition a database based upon attributes associated with the data in the database. Also, a system and method for generating a report for a user which allows the user to make decisions, without requiring the user to understand or interpret data itself. A database computer includes a database containing the data. The data includes a collection of information about an enterprise of the user. A server computer is coupled to the database computer and executes a database management program. A client computer is coupled to the server and executes an application program. The application program allows a user to define predetermined data types, to define relationships between the data types, to define parameters for the report, to define a method of analysis for the report, and to create the report. The report summarizes the data in terms of the data types, the data relationships, and the method of analysis.


Inventors:Knutson; James F. (Roswell, GA), Anand; Tejwansh S.  (Roswell, GA), Taheri; Sheila  (Decatur, GA), Coulter; Scott D.  (Marietta, GA), Copas; Kevin W.  (Lawrenceville, GA)
Assignee:NCR Corporation (Dayton, OH)
Appl. No.:08/742,007
Filed:October 31, 1996

Current U.S. Class:707/101 707/10 
Current International Class:G06F 17/30 (20060101)
Field of Search:707/1-5,10 1/100-102

U.S. Patent Documents
4318184March 1982Millett et al.
4868743September 1989Nishio
5088052February 1992Spielman et al.
5404506April 1995Fujisawa et al.
5414838May 1995Kolton et al.
5455945October 1995VanderDrift
5471611November 1995McGregor
5537590July 1996Amado
5544298August 1996Kanavy et al.
5546529August 1996Bowers et al.
5644740July 1997Kiuchi
Other References
Korth and Silberschatz, "Database System Concepts" 2/E, McGraw-Hill Inc., 1991, pp. 97-98..~
Primary Examiner: Von Buhr; Maria N.
Attorney, Agent or Firm:Needle & Rosenberg Priest; Peter H.

Parent Case Text



CROSS-REFERENCE TO RELATED APPLICATIONS

This patent application is a continuation-in-part of U.S. patent application Ser. No. 08/542,266, filed Oct. 12, 1995, and entitled "System and Method For Generating Reports From a Computer Database", now abandoned. This patent application is also related to co-pending U.S. patent application Ser. No. 08/742,006, filed Oct. 31, 1996, and entitled "System And Method For Performing Intelligent Analysis Of A Computer Database", now U.S. Pat. No. 5,832,496, and Ser. No. 08/742,003, filed Oct. 31, 1996, and entitled "Hypertext Markup Language (HTML) Extensions For Graphical Reporting Over An Internet" now U.S. Pat. No. 5,748,188.

Claims


What is claimed is:
1. A system for managing a database hierarchy, comprising:
(a) a database computer, including a data warehouse comprising data entities having associated attributes, wherein the data entities are arranged in a first hierarchy, each level of the first hierarchy being associated with at least one attribute;
(b) a server computer coupled to the database computer, wherein the server computer includes a data abstraction intelligence subsystem and a data and schema manipulation subsystem having:
(1) means for receiving an attribute restriction value for restricting a selected attribute; and
(2) means for partitioning and segmenting the database, wherein a second hierarchy is created, the second hierarchy being associated with the attribute restriction value; and
(c) a client computer coupled to the server computer, wherein the client computer includes:
(1) means for inputting from a user of the client computer the attribute restriction value; and
(2) means for transmitting the attribute restriction value to the receiving means of the data abstraction intelligence subsystem and the data and schema manipulation subsystem.

2. The system of claim 1, wherein the data abstraction intelligence subsystem and the data and schema manipulation subsystem further include means for transmitting the second hierarchy to the client computer, and the client computer further includes means for receiving the second hierarchy from the data abstraction intelligence subsystem and the data and schema manipulation subsystem and displaying the second hierarchy to the user of the client computer.

3. The system of claim 1, wherein the data abstraction intelligence subsystem and the data and schema manipulation subsystem further include means for querying the data entities within the database having the first hierarchy.

4. The system of claim 1, wherein the data abstraction intelligence subsystem and the data and schema manipulation subsystem further include means for querying the data entities within the database having the second hierarchy.

5. The system of claim 1, wherein the data abstraction intelligence subsystem and the data and schema manipulation subsystem further include means for querying the database.

6. The system of claim 5, wherein the querying means comprises a SQL server.

7. The system of claim 5, wherein the client computer further includes means for transmitting a query request to the querying means.

8. In a computer system comprising a client computer, a server computer coupled to the client computer, and a database coupled to the server computer, wherein the database contains data entities, and wherein the server computer includes a data abstraction intelligence subsystem and a data and schema manipulation subsystem, a process for managing a hierarchy associated with the database, comprising the steps of:
(a) associating attributes with the data entities;
(b) arranging the data entities in a first hierarchy, wherein each level of the first hierarchy is associated with at least one attribute;
(c) inputting from a user of the client computer an attribute restriction value;
(d) transmitting the attribute restriction value from the client computer to the data abstraction intelligence subsystem and the data and schema manipulation subsystem, the attribute restriction value restricting a selected attribute; and
(e) segmenting the database, wherein a second hierarchy is created, the second hierarchy being associated with the attribute restriction value.

9. A system for managing a database, comprising:
(a) a hierarchical database comprising data arranged in tables having columns;
(b) a server computer coupled to the database, the server computer including a data abstraction intelligence subsystem and a data and schema manipulation subsystem;
(c) a client computer coupled to the server computer, the client computer including means for receiving input from a user of the client computer,
wherein the system creates metadata concerning a particular business for use in partitioning and segmenting the database, the metadata being created by the following method:
(1) receiving as an input from the user a specified business concept;
(2) receiving as an input from the user one or more attributes for the specified business concept;
(3) providing to the user a list of columns of tables in the database;
(4) receiving as an input from the user a mapping of each attribute to a column in a table in the database.

10. A system according to the claim 9, wherein the method for creating metadata includes the following additional steps:
(5) receiving as an input from the user one or more business indicators;
(6) providing to the user a list of columns of table in the database;
(7) receiving as an input from the user a mapping of each business indicator to a column in a table in the database;
(8) receiving as an input from the user an aggregate method for the mapped business indicators;
(9) receiving as an input from the user a selected unit of measurement for the mapped business indicators;
(10) ensuring that tables having mapped business indicator columns can be joined with tables having mapped business attribute columns.

Description

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to expert systems and reporting systems, and more specifically to a system and method for generating reports from a computer database.

2. Description of the Prior Art

Storing large amounts of transaction-level data for later analysis (data warehousing) is becoming recognized as an enabler for businesses that are seeking a competitive advantage. Tightening competitive environments and global economic trends are forcing businesses and entire industries to search for a means to gain an advantage. This advantage can be realized through the use of strategic data relating to their business--allowing better and more timely decisions, leading to a better understanding of their business and support for their customers, that ultimately leads to growth. To make use of data warehouses, the data must be retrieved, organized and then presented in an understandable format.

Discovery tools are used to retrieve, analyze and present data from data warehouses. These tools can range from very complex modeling tools to relatively simple end user query tools designed to do no more than mask the complexity of the SQL database programming language from the user. Automated tools that search the data for trends or relationships are also considered discovery tools.

The marketplace is comprised of various tool vendors whose products provide solutions for a portion of the entire knowledge discovery process. Therefore, to effectively utilize their data, the user community is forced to pick multiple, disjointed tools. In addition, these tools are targeted toward the expert user who has an in-depth knowledge of the data and database formats or the various analytic methods that are implemented in the tool. Existing products also do not let the business user explicitly and iteratively represent business knowledge. Finally, the output of existing tools consists of tables of numbers that users have to analyze and interpret.

Data warehouses, and databases in general, typically have complex structure organized for efficiency of data retrieval, not ease-of-use by the end user. Users, especially business users, desire reports in their vocabulary, not the vocabulary of the database. While some tools in the marketplace allow a user to define new terms and map those terms to the database, the management of related sets of new terms is not supported. That is, the relationship of a new term to existing terms is not automatically detected for the user.

In addition to these difficulties, it is common for the contents of a report to cause a user to desire another, similar report. Saving and re-using sets of related reports (re-generating the reports over a new set of data) is also desired. The generation of related reports and the re-generation of reports over new data is a capability not adequately available in the marketplace.

Therefore, it would be desirable to provide a system and method for generating reports from a computer database which allow a user to retrieve and analyze data with one tool without requiring the user to have knowledge of underlying data structures or of the SQL database programming language, which allow a user to define new terms and detect and manage relationships between terms, which allow a user to easily generate related reports, and which allow a user to re-run sets of related reports over new data. It would also be desirable to provide a system and method for allowing the a user to segment and partition a database based upon attributes associated with the data in the database.

SUMMARY OF THE INVENTION

In accordance with the teachings of the present invention, a system and method for generating reports from a computer database are provided. A system and method for allowing a user to segment and partition a database based upon attributes associated with the data in the database are also provided.

A database computer includes a database containing the data. The data includes a collection of information about an enterprise of the user. A server computer is coupled to the database computer and executes a database management program. A client computer is coupled to the server and executes a metadata management and SQL generator program. The application program allows a user to define predetermined data types, to define relationships between the data types, to define parameters for the report, to define a method of analysis for the report, and to create the report. The report summarizes the data in terms of the data types, the data relationships, and the method of analysis.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of the system of the present invention;

FIG. 2 is a block diagram of a client subsystem within the system of FIG. 1;

FIG. 3 is a block diagram of a data abstraction intelligence subsystem within the system of FIG. 1;

FIG. 4 is a block diagram of a data and schema manipulation subsystem within the system of FIG. 1;

FIG. 5 is a block diagram of a scheduler subsystem within the system of FIG. 1;

FIGS. 6-12 are views of a tool for creating reports which employs a graphic user interface;

FIG. 13 is a flow diagram illustrating how metadata is created.

FIG. 14 is another block diagram of a client subsystem within the system of FIG. 1.

FIG. 15 is yet another block diagram of a client subsystem within the system of FIG. 1.

FIG. 16 is a database heirarchy that may be created according to the teachings of the present invention.

FIG. 17 is another heirarchy that may be created according to the teachings of the present invention.

FIG. 18 is yet another heirarchy that may be created according to the teachings of the present invention.

FIG. 19 is a general, high-level data flow between the DAI and the other subsystems and components of the system of the present invention.

FIG. 20 is an architecture of a Serial DAI subsystem of FIG. 1.

FIG. 21 is a flow diagram for the Serial DAI system of FIG. 1.

FIG. 22 is another flow diagram for the Serial DAI system of FIG. 1.

FIG. 23 is a depiction of the addition of a database segment in the system of the present invention.

FIG. 24 is a depiction of the deletion of a database segment in the system of the present invention.

FIG. 25 is a description of the processes performed by the server of FIG. 1.

FIG. 26 is a diagram showing the relationships and operations with respect to metadata.

FIG. 27 is a diagram showing the relationships and operations with respect to the scheduler queue.

FIG. 28 is a diagram showing the relationships and operations with respect to the return area.

FIG. 29 is a diagram depicting the requests performed by an analyst.

DETAILED DESCRIPTION OF THE INVENTION

1. Overview of Basic Invention

Referring now to FIG. 1, system 10 includes four major subsystems: client subsystem 12, data abstraction intelligence (DAI) subsystem 14, data and schema manipulation (DSM) subsystem 16, and scheduler subsystem 18.

In connection with the description of system 10, the following definitions are provided:

An Alert Condition is a user-defined condition or set of conditions that when satisfied returns an Alert Message. For instance, an Alert Condition may be defined so that when the inventory of brand A shirts drops below 200 units for a given week, system 10 produces an Alert Message, InfoFrame or runs another analyst.

An Alert Message is a message that notifies the user that an Alert Condition has been satisfied. From an Alert Message the user can select the corresponding InfoFrame to be run. An example of an Alert Message would be "Alert: the inventory of brand A shirts is below 200."

An Alert InfoFrame is a type of InfoFrame that describes an Alert Message in detail. The Alert InfoFrame has a description of what happened, when, and probable reasons why it occurred.

An Analyst specifies an event in the data which must trigger an Alert; or specifies the type of analysis and the business measures and segments to be reported on in an InfoFrame, and optionally the schedule on which this InfoFrame is to be generated or the event in the data which must trigger the InfoFrame.

An attribute is a characteristic or feature of an entity represented in the warehouse. For example, Color, Manufacturer, or Size are all attributes of the product category of Clothing.

An attribute restriction is an expression that restricts the value that attribute can have. For example, in "Price is less than $10.00", the "less than $10.00" is a restriction on the Prices attribute. Another example might be: "Woman's Clothing or Men's Clothing" is a restriction on the Department Attribute. A single attribute value, like "Blue" or "Men's Clothing", is also an attribute restriction.

A specific entity (like a product) in the data warehouse is represented as a set of attributes and values. For example, the product "Perry Ellis men's shirt, size 42, color blue", might be represented as "Product: Department: Men's Clothing; Manufacturer: Perry Ellis; Size: 42; Color: blue". These values are members of a specific domain for each attribute (see below).

Business Indicators are classifications across Business Concepts that are usually related to numerical values (e.g. Sales Volume, Inventory, Price). Business indicators have methods and formulae that pertain to their computation (e.g. Total Sales) and causal associations between Business Indicators (e.g. If Price increases Sales Volume should decrease). Within a Business Indicator, segments can be defined which describe a specific group of Business Indicators of interest (e.g. Senior Customer, Company A Products).

A Change Analysis Report is a compound document describing Business Indicators over two time periods. Within system 10, one can specify two periods of time and see the difference of a chosen Business Indicator for that period (e.g., How did this year's sales of textiles compare to last years sales?) Change Analysis Reports can report results for a day, week, month, quarter, year, or other defined period.

A Comparison Analysis InfoFrame is a type of InfoFrame helps a business user compare the value of two Business Indicators across the same time period or compare the value of the same Business Indicator across two sibling segments across the same time period.

Compound Business Indicators are user-defined Business Indicators created by combining primitive Business Indicators with arithmetic and set operations.

A Data Warehouse is a very large collection of data that is housed in one or more databases. These databases usually reside on database server computers and can be either in one location or distributed geographically.

A Dimension defines the high-level categories of entities. For example, in a Retail domain, the dimensions might be: Product, Market, and Time (Time is a universal dimension applicable to any domain). A dimension has associated with a set of attributes that can be used to describe its entities; for example, Brand, Manufacturer and Size describe the dimensions of a product.

Every attribute has an implicit or explicit domain of values. For example, the domain of values for the Department attribute is an encoding of the legitimate departments for the enterprise, and the domain of values for the Size attribute is a non-zero number representing the size in specified units.

A Drill Down Heuristic specifies some relation between the measure values of the segments of a free attribute of a segment which must be reported to the user.

End Users are users for which system 10 is specifically designed. End users typically have knowledge of a business' operations and for this example have used Microsoft Windows (Windows 3.1, Windows NT & Windows 95, etc.). End users typically do not have expertise in SQL code generation or the specific data structures of the databases they want to access.

Enterprise Information Factory (EIF) is a commercial software package that allows typical business users to access their data warehouse data. The data warehouse is essentially a passive environment that usually requires the use of SQL code and knowledge about the structure of the database to access data. The EIF differs from the data warehouse by providing a foundation for providing tools to allow users without SQL or database knowledge to get data out of their databases.

An Exception Analyst is specifically an Analyst which runs regularly to test for a trigger condition, and which returns an Alert or a Report when the trigger condition occurs.

If the domain of an attribute is a finite set (like Department above), it is called a finite domain. The alternative is an infinite or continuous domain, like Price.

A Free Attribute is an attribute of a segment which has not been restricted to define that segment. Color, Cost, and Weight might all be free attributes of the segment "Expensive Shirts"

A Heuristic Rule specifies some condition of data, some relation between the segment measure values found by an analyst, that should be reported to the user in the completed InfoFrame.

HyperText Markup Language (HTML) is an emerging standard format for software documents that allows for the inclusion of hyperlinks and graphics (pictures, graphs, tables) in text documents. A hyperlink is a "hot" area in the document (usually text in a different color than the surrounding text), that when clicked on, shows another document that is related or linked to the original HTML document.

InfoFrame Definitions are System Templates that have been customized to include particular Business Concepts, Business Indicators, Time Intervals, Analysis Type, and segments. InfoFrame Definitions can be immediately "run" to produce a "InfoFrame", saved to be run later, saved and scheduled to be run later, or triggered by another analyst.

A Knowledge Worker is typically a person familiar with SQL, who knows the structure of the Data Warehouse and who has an analytical background. In addition, the Knowledge Worker may use statistical and data analysis packages and data modeling tools.

Managament Discovery Tool (MDT) refers to the overall system of the present invention.

Metadata is the collection of information about the end user's particular business, and may be one of three types: core, public or private. After installation this information is stored in the end user's database and is used to tailor reports to the end user's particular business needs. Metadata includes, but is not limited to, Business Concepts, Business Indicators, Segments, Attributes, Attribute Values and Measure Relationships.

The core set of metadata is typically set up at installation by professional services personnel and the MDT Administrator. Core metadata consists of Dimensions, Attributes, Basic Measures, Segments and Year definitions.

Public metadata is only changeable by the MDT Administrator and Knowledge Worker user types and is defined and modified after installation. Public metadata includes Public Composite Measures, Public Measure Relationships and Public Segments.

Private metadata belongs to each user and is only changeable by the end user (Business/executive user) user type. Private metadata includes Private Composite Measures, Private Measure Relationships and Private Segments.

If an attribute has a finite domain, the Natural Partition is the partition where each segment corresponds to each element of the domain. For example, the natural partition of the Department attribute is the set of segments "Men's Clothing", "Woman's Clothing", etc.

Object Linking and Embedding (OLE) is a computer format that allows objects (e.g., graphs, tables) in computer documents to, when double clicked on, bring up the software application that created the object (graph, table, document).

If the user-defined segments for a given partition do not cover the domain, then an "Other" segment will stand for the rest of the partition.

A partition is an implicit or explicit division of the dimension by the restriction of a single attribute. For example, of one takes the Price attribute, and the "less than $10.00" restriction, this defines a partition of products into two sets or segments: those products with Price less than ten dollars, and those products with Price greater to or equal to ten dollars. Note that the sets or segments of a partition must cover the original set and not overlap, i.e., "Price <$10.00" and "Price <$15.00" do not define a partition.

Primitive Business Indicators are Business Indicators that are directly mappable to data in the data warehouse. They are set up during installation of the present invention and are not changeable by the end user.

Reports or InfoFrames are compound documents that display data from a database in text and graphics (e.g., graphs, tables). Reports are the result of running a InfoFrame Definition. InfoFrames may be in the HTML format and may be OLE 2.0
compliant.

A Restricted Attribute is an attribute of a segment which has be restricted to defined the segment. Product and Price might be the restricted attributes of "Expensive Shirts"

Segments are user-defined groups that are defined within a Business Concept having a meaningful attribute or attributes in common. For instance, the segment "Senior Customers" might be those customers whose age is greater than 65 years.

A segment is one part of a partition. Actually, a segment is a subset of data defined by restrictions on one or several attributes. If a segment is defined by several attributes, it can be part of several partitions, one for each restricted attribute (as shown shortly. This means that, given a segment in isolation, one cannot determine which partition it "should" belong to, and thus, one cannot determine its natural parents in the hierarchy).

A set of segments forms a segment hierarchy under the subset relation, with a root that is the "top-level segment", which contains all of the members of the dimension.

Structured Query Language (SQL) is a structured language for viewing the contents of a relational database.

Summarization InfoFrame is a type of InfoFrame that shows a roll-up or summarization of a specified Business Indicator across one or more specified segments. By selecting a particular Business Indicator in this report a InfoFrame showing the "winners" and "losers" for the specified period can be automatically produced.

System Administrators (MDT Administrators, or MDTA) are those users of system 10 who have an intimate knowledge of the databases and data structures of an organization. Often the System Administrator has the title of "database administrator" (DBA).

A Text Generation Rule specifies the text that must be inserted into an InfoFrame when the some heuristic rule is satisfied.

A Trend Analysis InfoFrame is a type of InfoFrame that, when defined, shows the trend for a specific Business Indicator or indicators over a specified period of time. This analysis can aid in forecasting the future by identifying patterns in past activities.

Client subsystem 12 is a single application program which has a graphical user interface (GUI) 40 and which allows a user to select and specify parameters for InfoFrames, view InfoFrames, print InfoFrames, and save InfoFrames. Finally, the user can define Composite Business Indicators and Segments, create Analysts, define Measure Relationships, or modify the schedule of Analysts.

DAI subsystem 14 provides intelligent middleware for translating graphical user requests, selecting system templates, manipulating data views, and generating dimensional queries for retrieving data from data warehouse 24. It also contains rules for choosing default parameters, for choosing layout and display formats, and for generating text from data. DAI subsystem 14 is responsible for instantiating user selected InfoFrames and managing several kinds of metadata 25 used in this instantiation. This metadata 25 represents Business Concepts and Business Indicators that provide a customizable "dimensionalization" of the relational data in data warehouse 24. DAI subsystem 14 also processes updates to this metadata 25 that originate in client subsystem 12 and handles several other kinds of user updates, primarily by passing them to DSM subsystem 16.

DSM subsystem 16 reads schema from data warehouse 24, creates data views, and creates a mapping between the two. It also uses that mapping to translate the Dimensional Queries received from DAI subsystem 14 into SQL and package and return the results.

Scheduler subsystem 18 is responsible for for starting Analysts which are to run at a scheduled time or on a regulare schedule; or Exception Analysts which must regularly test for a trigger condition in the database. When the requested time interval occurs, the Scheduler starts up, requests a list of scheduled InfoFrame Requests from DAI subsystem 14. From those lists, scheduler subsystem 18 determines which should be run during the current time interval and sends those requests to DAI subsystem 14 as if they were sent by client subsystem 12.

Thus, system 10 is implemented as a three-tier architecture. Client computer 30 executes client subsystem 12. Client computer 30 preferably executes Windows NT, or Windows 95, although other operating systems are also envisioned by the present invention. Client subsystem 12 (FIGS. 6-12) is suitable for use with these operating systems. Display 22 and input device 21 allow a user to view GUI 40 and enter choices of metadata 25 used in creating Analysts. Input device 21 may be a keyboard, mouse, or other pointing device. Printer 23 allows a user to print a InfoFrame. Storage medium 26 allows a user to store an InfoFrame or Alert Message.

Server computer 32 executes DAI subsystem 14, DSM subsystem 16, and scheduler subsystem 18. These three subsystems combine to satisfy user requests from client subsystem 12 using information from data warehouse 24. Server computer 32 is preferably a multi-processor computer and executes the UNIX operating system or Windows NT, although other computer and operating system configurations are also envisioned by the present invention.

Client and server computers 30 and 32 are preferably coupled asynchronously for report requests; all other requests are satisfied synchronously. Communication between client and server computers 30 and 32 is preferably through transmission control protocol/internet protocol (TCP/IP), although other transmission protocols are also envisioned by the present invention.

Database computer 34 includes one or more storage media 36 containing data warehouse 24. Database computer 34 is preferably a massively parallel processor computer and executes the UNIX operating system or Windows NT, although other computer and operating system configurations are also envisioned by the present invention. Data warehouse 24 is suited to run on any computer which supports an Open Database Connect (ODBC) interface to data warehouse 24. Communication between server computer 32 and database computer 34 is preferably via ODBC, although other database interfaces are also envisioned by the present invention.

Turning now to FIG. 2, client subsystem 12 is an application program which gives a user control over system 10 and is suitable for execution on top of the Windows NT, or Windows 95 operating systems. Client subsystem 12 includes log-in module
50, folder management subsystem 54, segment builder 55A, measure builder 55B and measure relationship builder 55C, analyst definition subsystem 56, InfoFrame viewing subsystem 53 and MDT Administrator interface 57.

Log-in module 50 verifies that only one copy of the client subsystem 12 is running on computer 30, checks the localization of computer 30, connects to computer 32, and interacts with the user to log him onto client subsystem 12. During logon, log-in module 50 verifies a user's name and password and then retrieves any user preferences that may have been earlier defined. The only request from a user that is handled by log-in module 50 is a request to log onto client subsystem 12.

Log-in module 50 issues the following requests:

______________________________________ .cndot. single program running to Operating System (DOS, NT, Windows 95, etc.) .cndot. retrieve localization to Operating System (DOS, NT, Windows 95, etc.) .cndot. connect to server to Client/Server module .cndot. disconnect from server to Client/Server module .cndot. authenticate user to Metadata API 60 .cndot. run main menu to Main Menu 51 .cndot. run admin menu to MDT Administrator Interface 57 ______________________________________

If the user is the System Administrator, log-in module 50 displays MDT Administrator interface 57 "Setup" menu item. If the user is an end user or knowledge worker, a Main menu and toolbar interface 51 are displayed, as are the interfaces associated with subsystems 53-55.

MDT Administrator interface 57 is used by a System Administrator to perform system administration tasks, such as making user-defined segments available globally and creating and editing Business Concepts. Interface 62 is preferably only available to System Administrators during system installation.

Folder management subsystem 54 handles all functions related to manipulating, storing, and retrieving Folder hierarchies, and the InfoFrames and Agents that are stored in those Folders. It also handles querying from DAI subsystem 14 for newly-completed InfoFrames, both when client subsystem 12 starts up, and then periodically thereafter.

Folder management subsystem 54 also handles User requests for operations on:

Folders (new, delete, rename)

Agents (edit, delete, run now, print)

InfoFrames (view, delete, annotate, print [in cooperation with the InfoFrame View Window])

Each folder is represented by one folder object. A folder stores a list of child folders, a list of InfoFrames, and a list of Agents. Folder objects are created and deleted by folder management subsystem 54 in response to user requests.

Subsystems 55B provides a user with the ability to create new measures, update measures, or delete existing measures. This information is sent to a Metadata API 60 and thereafter to DAI subsystem 14 for updating the user's Metadata 25.

Subsystem 55A provides a user with the ability to create new Segments, update segments, or delete existing Segments. This information is sent to a Metadata API 60 and thereafter to DAI subsystem 14 for updating the user's Metadata 25.

Finally, Subsystem 55C provides a user with an interface to modify measure relations and to constrain measure relations. The user selects the current measure and whether to evaluate that measure's relationships when it increases or decrease. Then the user can then select from a list of other measures and define their relationship to the current measure. These relationships are in the form of "decreases", "increases", or "is unrelated to the current measure". Also, every relationship between two measures can be constrained. The relationship between measures and the constraints placed upon them are saved on computer 32 for use in generating InfoFrames.

Analyst definition subsystem 56 handles all functions related to user selection of parameters needed to generate specific reports. It also allows the user to define and schedule Alerts for scheduled reports.

The user may invoke an existing Analyst, delete one from within the folder management subsystem 54, or create a new Analyst. The five types of Analysts are:

Summarization

Segment Comparison

Measure Comparison

Change Analysis

Trend Analysis

The Summarization Analyst requires the following user selection requirements:

Analyst name

Primary measure, other optional measures

Primary segment, other segments

Time period

Optional schedule

Optional trigger

type of year used

optional trigger event (Alert Message, InfoFrame, Run another analyst)

The Segment Comparison Analyst requires the following user selection requirements:

Analyst name

Primary measure

Primary segment, a comparison segment

Time period

Optional schedule

Optional trigger

type of year used

optional trigger event (Alert Message, InfoFrame, Run another nalyst)

The Measure Comparison Analyst requires the following user selection requirements:

Analyst name

Primary measure, Comparison measure

Primary segment, other optional segments

base time period, comparison time period

Optional schedule

Optional trigger

type of year used

optional trigger event (Alert Message, InfoFrame, Run another nalyst)

The Change Analysis Analyst requires the following user selection requirements:

Analyst name

Primary measure

Primary segment, Other optional segments

base time period, comparison time period

Optional schedule

Optional trigger

type of year used

optional trigger event (Alert Message, InfoFrame, Run another nalyst)

The Trend Analysis Analyst requires the following user selection requirements:

Analyst name

Primary measure

Primary segment, other optional segments.

Time period, Time interval.

Optional schedule

Optional trigger

type of year used

optional trigger event (Alert Message, InfoFrame, Run another nalyst)

The user can save or run the analyst definition. The user is restricted to choosing one Segment from within each Business Concept with the exception of Target Segment, in which case he may select only one segment and more than one child partition of the selected segment. The user may choose to schedule an Analyst or to modify or delete an existing schedule. Unscheduled Analysts will be run when the user commands. Scheduled Analysts will be submitted to the server for execution at a later date or periodic execution.

The user may specify a trigger condition for the Analyst to specify an Exception Analyst. When submitted to the server it will be run regularly to test for its trigger condition, and will return an Alert or an InfoFrame whenever the trigger condition occurs.

The Analyst definition subsystem 56 makes the following requests to the folder management subsystem 54:

______________________________________ Save Check if the user has selected the appropriate parameters for the selected analyst. Send a request to the folder management subsystem 54 to save an existing Analyst Definition Save As Check if the user has selected the appropriate parameters for the selected analyst. Send a request to the folder management subsystem 54 to save an existing Analyst Definition Submit Check if the user has selected the appropriate parameters for the selected analyst. Send a request to the folder management subsystem 54 to submit a report generation ______________________________________

The Analyst definition subsystem also makes the following requests to Metadata API 60:

______________________________________ Get all Measures The request will be made to Metadata API 60 each time there is a need for it at the initialization point of a dialog Get all Business Concepts The request will be made to Metadata API
60 subsystem each time there is a need for it at the initialization point of a dialog Get a Business Concept's The request will be made depending on a Partitions user's selection of a business concept Get Partitions The request will be made depending on a user selection of a defined Segment. Get Segments The request will be made depending on a user selection of a partition. ______________________________________

InfoFrame viewing subsystem 53 includes a WYSIWYG browser which displays a selected InfoFrame on screen, when InfoFrame viewing subsystem 53 gets a notification from folder management subsystem 54 to view a InfoFrame. If the user decides to drill down from the current InfoFrame, InfoFrame viewing subsystem 53 notifies the folder management subsystem 54 to send a new report request.

When the user double-clicks on an InfoFrame or chooses "menu item--View" from the File menu Folders, the folder management subsystem 54 notifies the InfoFrame viewing subsystem to view the InfoFrame. When the user clicks on a hypertext to drill down from the current InfoFrame, the InfoFrame viewing subsystem 53 passes the drill down information to the folder management subsystem 54 to send a new report request to DAI subsystem 14.

InfoFrame viewing subsystem 53 includes a parser which parses the InfoFrame, and extracts the completed report, which is written in HTML. In an HTML file, HTML tags indicate document elements, structure, formatting, and hypertext linking to other documents or resources. The parser then outputs all the information for display. In the current invention, the hyperlink may instance a new Analyst and a new InfoFrame

The InfoFrame viewing subsystem 53 allows a user to display and format text, tables, and graphs displayed by display 22 based on the information gathered by the parser. A header, a footer, and annotations can be added to a InfoFrame. The user can save the viewed InfoFrame. The user can also save an InfoFrame as a HTML file in either UNICODE or ASCII code format. A saved HTML InfoFrame can be attached to an e-mail to mail out. Any HTML version 3.0 browser, or equivalent, can read the HTML InfoFrame.

Metadata API 60 handles most of the communications between client subsystem 12 and DAI subsystem 14. These communications involve four basic types of data: metadata 25, InfoFrames, user profiles, and data warehouse schema. For metadata communication, Metadata API 60 provides the ability to add, delete and update metadata 25. For InfoFrames, Metadata API 60 provides the ability to request a report, get the status of a report, retrieve a report and cancel a report request. For user profiles, Metadata API 60 provides the ability to add a user, authenticate a user and delete a user. The communication for data warehouse schema is to retrieve it.

Metadata API 60 allows a user to define new ways of looking at a business. A user cannot modify the public segments, the basic measures or the public measures. However, the user can create new Business Indicators and new Segments. In a typical organization of users and system administrators, only system administrators can create or change basic business measures. Administrators and knowledge workers can create, edit or delete public composite measures, public segments and public measure relationships.

The MetaData API 60 will handle the following requests from other client subsystems:

______________________________________ update metadata from subsystems 55A/55B/55C get report status from Folder management subsystem 54 generate report from Folder management subsystem 54 retrieve report from Folder management subsystem
54 retrieve schema from MDT Administrator Interface 57 update schedule from Analyst Definition subsystem 56 cancel a report from Analyst Definition subsystem 56 authenticate user from Log-in module 50 add a user from MDT Administrator Interface
57 delete a user from MDT Administrator Interface 57 update user password from MDT Administrator Interface 57 ______________________________________

Metadata API 60 sends the following requests directly to DAI subsystem 14:

disconnect from computer 32

send data to DAI subsystem 14

receive data from DAI subsystem 14

Turning now to FIG. 3, DAI subsystem 14 includes return area manager 70, InfoFrame generator 72, metadata request module 74, metadata repository 76, and metadata load and update module 78.

Metadata repository 76 contains a representation of metadata 25 within data warehouse 24. This metadata 25 is the core of system 10; it provides a customizable business view over the relational data in warehouse 24 and is the primary vocabulary for the specification of InfoFrames. Metadata repository 76 gets populated at startup time by DSM subsystem 16 from the persistent metadata representation in data warehouse 24.

There are four fundamental kinds of metadata 25 in metadata repository 76, listed and described below:

Business Concepts: business concepts represent the business dimensions along which the data can be viewed. Each dimension imposes a hierarchy over the underlying data, and dimensions can be combined to drive "drill-down" or "drill-up" operations. For example, a simple retail application might have two Business Concepts: Market and Product. The Market hierarchy is composed of Sales Regions, each of which consists of several States, each of which consists of a set of Stores. The Product Hierarchy is composed of a set of Departments (Home Electronics, Men's Clothing, Hardware), each Department is composed of product Categories (Shirts, Shoes, Slacks), and each Category is composed of individual manufacturer's product lines. Time is a dimension that is important in all applications, and will be represented in system 10. Users can add new Business Concepts (see below). These, as all of the metadata 25 in metadata repository 76, must be mapped into relational form (that is, into SQL) in order to actually query data warehouse 24. Mapping is done by DSM subsystem 16 during the process of processing Dimensional Queries (see below).

Business Indicators: Business Indicators are the important measures of data of interest. For example, product Volume, Price, or Current Stock are all Business Indicators. The use of time in a query further refines the idea of a Business Indicator; for example, "Change in Volume" applies between two time periods.

Alerts: Alerts are essentially tests over the data, but they are not part of the metadata. They are specified in the Analyst in terms of the metadata. For example, a user might specify that if the available stock of a product falls by some percentage, to generate the appropriate InfoFrame. The user also specifies how often to check the Trigger condition. A list of Alerts is maintained by DAI subsystem 14 and executed by scheduler subsystem 18. This metadata 25 is also available to DAI subsystem 14 and is used to generate InfoFrame information.

Measure Relationships: Measure Relationships are simple expressions of business causality; for example, "Increased Sales mean Increased Profit". This kind of metadata 25 is used to generate supporting information for a InfoFrame or, alternatively, alert the user to trends that run counter to the set of Measure Relationships.

Metadata 25 is initially created during installation of the present invention at the customer's site. The process of creating the metadata 25 is illustrated in more detail in FIGS. 7A-7E. What is included within metadata 25 depends on the industry (some metadata 25 will be industry-specific and usable by all companies in that industry), the specific customer of the present invention, and the structure of the customer's data warehouse 24. During installation, some industry-specific metadata 25 is used, some company specific metadata 25 may be created, and the mapping information needed to map metadata 25 to data warehouse 24 is created. All metadata 25, including the mapping information, is stored in a set of relational tables. These relational tables are kept in data warehouse 24 and used by the present invention to create reports for the user.

Metadata request module 74 handles all requests for metadata 25, either from client subsystem 12 or DAI subsystem 14. Client subsystem 12 requests metadata 25 from DAI subsystem 14 to be presented to the end users. InfoFrame generator 72
requests metadata 25 in order to create Dimensional Queries as part of instantiating a InfoFrame for a user. A request for metadata 25 might be, for example, a request for all sub-concepts of a particular Business Concept.

Metadata request module 74 also handles metadata updates from client subsystem 12. A user adds new Segments by specifying a new dimension from which to group the data. This dimension must be supported by an existing data attribute in the warehouse data. For example, a Product may include a List-Price and a Discount-Price. The user can specify a new dimension called "Discount-Factor", specified using the percent difference between the Discount-Price and the List-Price, and use that to create three new Segments: Heavily-Discounted Products, Slightly-Discounted Products, and Non-Discounted Products. These new Segments can now be used in subsequent InfoFrame requests, and, if indicated by the user, made persistent by writing them back into data warehouse 24 by metadata load and update module 78.

Request Structures are passed from one subsystem to another when one subsystem requires processing and results from another. Request Structures vary according to the type of request being sent. Most requests, however, have some common attributes, such as an identification field, an owner, a name and a description of the request.

Business Concept Update Requests are sent from client subsystem 12 to DAI subsystem 14 and are preferably issued only by the System Administrator. Business Concept Update Requests are requests for adding a new Business Concept to the metadata
25. The requests have the following format:

______________________________________ BC.sub.-- ID: ID which uniquely identifies this Business Concept BC.sub.-- NAME: The name of this Business Concept BC.sub.-- DESC: The description of this Business Concept MAPPING: Mapping of this Business Concept to data warehouse ______________________________________ tables

Business Indicator Update Requests are sent from client subsystem 12 to DAI subsystem 14. Business Indicator Update Requests are requests for adding a new Business Indicator to the metadata 25.

Business Indicator Update Requests primarily include primitive and compound requests. Primitive requests have the following format:

______________________________________ BI.sub.-- ID: ID which uniquely identifies this Business Indicator OWNER: The user who created this Business Indicator BI.sub.-- NAME: The name of this Business Indicator BI.sub.-- DESC: The description of this Business Indicator MAPPING: Mapping of this Business Indicator to data warehouse tables ROLLUP.sub.-- OP: Operator for performing the roll-up operation ______________________________________

Compound requests have the following format:

______________________________________ BI.sub.-- ID: ID which uniquely identifies this Business Indicator BI.sub.-- NAME: The name of this Business Indicator BI.sub.-- DESC: The description of this Business Indicator EXP: The expression which describes this Business Indicator function ______________________________________

Causal Indicator Update Requests are sent from client subsystem 12 to DAI subsystem 14. Causal Indicator Update Requests add a new Causal Indicator to the metadata 25. The request has the following format:

______________________________________ CI.sub.-- ID: ID which uniquely identifies this Casual Indicator OWNER: The user who created this Causal Indicator CI.sub.-- NAME: The name of this Causal Indicator CI.sub.-- DESC: The description of this Causal Indicator BI.sub.-- ID1: Business Indicator which is the independent variable of this causal relationship OP: The operator for this causal relationship BI.sub.-- ID2: Business Indicator which is the dependent variable of this causal relationship RANGE: When OP is +/-, the range where it is + and the range where it is - ______________________________________

Schema Requests are sent from client subsystem 12 to DAI subsystem 14 and may only be issued by the System Administrator. Schema Requests are requests to retrieve the data base schema from data warehouse 24. This type of request is just a simple unformatted message to DAI subsystem 14.

Segment Update Requests are sent from client subsystem 12 to DAI subsystem 14. Segment Update Requests are requests for adding a new Segment to the metadata 25. Segment Update Requests have the following format:

______________________________________ SEG.sub.-- ID: Id which uniquely identifies this Segment OWNER: The user who created this Segment SEG.sub.-- NAME: The name of this Segment SEG.sub.-- DESC: The description of this Segment SEG.sub.-- LEVEL: Level in the Segment Hierarchy of this Segment BC.sub.-- ID: The Business Concept for this Segment ATTR.sub.-- ID: The Attribute(s) for this Segment OP: The operator(s) for this Segment VALUE: The value(s) for this Segment ______________________________________

InfoFrame Requests are sent from the Client subsystem to the DAI subsystem. This type of request is to create a new InfoFrame based on user specified selections. The request has the following format:

______________________________________ SR.sub.-- ID: ID which uniquely identifies this InfoFrame OWNER: The user who created this InfoFrame SR.sub.-- NAME: The name of this InfoFrame SR.sub.-- DESC: The description of this InfoFrame SR-TYPE One of the four types of InfoFrames BC.sub.-- ID: The Business Concept for this InfoFames SEG.sub.-- ID: The Segment(s) for this InfoFrame TIME: The time interval(s) for this InfoFrame ______________________________________

Dimensional Queries are sent from DAI subsystem 14 to DSM subsystem 16. Dimensional Queries formulate requests for data from data warehouse 24. DSM subsystem 16 converts Dimensional Queries into SQL statements.

The DAI subsystem 14 communicates a dimensional query to the DSM subsystem 16 as a list of metadata segment definitions or partition definitions, a list of metadata measure definitions and a Measure Value Table. The DSM subsystem 16 converts these to SQL Queries and submits them to the Data Warehouse 24. The results returned by the Data Warehouse to the DSM are returned to the DAI in the Measure Value Table.

Client subsystem 12 produces the following outputs to DAI subsystem 14:

Business Concept Update Requests

Business Indicator Update Requests

Causal Indicator Update Requests

Schema Requests

Segment Update Requests

InfoFrame Requests

Cancel Requests

DAI subsystem 14 provides the following outputs to client subsystem 12:

Business Concept Structures

Business Indicator Structures

Causal Indicator Structures

Schema Structures

Segment Structures

InfoFrames

Error/Status Codes

DAI subsystem 14 provides the following outputs to scheduler subsystem 18:

Schedule Analyst Request

Delete Analyst Request

DAI subsystem 14 provides the following outputs to DSM subsystem 16:

Dimensional Queries

Metadata Retrieval Requests

Schema Requests

DSM subsystem 16 provides the following outputs to DAI subsystem 14:

Updated Metadata

Data from the Data Warehouse

Database Schema

DSM subsystem 16 provides the following outputs to data warehouse 24:

SQL Statements

DSM subsystem 16 receives the following inputs from data warehouse 24:

Metadata

Database Schema

Warehouse Data

Scheduler 18 provides the following output to DAI subsystem 14:

Analyst Definitions

Metadata load and update module 78 populates metadata repository 76 from the persistent metadata stored in data warehouse 24 upon system startup. In addition, when a user specifies new Business Concepts and indicates that he wants them saved, metadata load and update module 78 writes them back into data warehouse 24 for future use.

InfoFrame generator 72 fulfills the primary purpose of DAI subsystem 14. Report generation begins when a user's Analyst containing an InfoFrame definition is received by the DAI. The type of Analyst is used to select appropriate Drill Down Heuristics and Text Generation Rules from the set implemented in the DAI. Drill Down Heuristics are used to determine if there any data relationships between the segments of the free attributes of the target segment which must be reported. Text Generation Rules are used to determine what features of the target segment ought to be reported and what relationships to sibling segments, other segments in the restricted attributes of the target segment, ought to be reported. Text Generation rules may specify localizable text, graphs or tables as appropriate output. The output of the Report Generation process is a fully instantiated InfoFrame returned to client subsystem 12 in the form of HyperText Markup Language (HTML), a widely-used standard for building portable compound documents.

InfoFrame generator 72 has several kinds of knowledge:

Knowledge of how to map Abstract Queries into Dimensional Queries

Knowledge of how to use metadata 25 to generate default choices (choices not made by the user in the InfoFrame Request)

Knowledge of how to use both metadata 25 and data returned from the warehouse to guide the selection of both text components

Knowledge of how to use both metadata 25 and data returned from the warehouse to guide the selection of different types of graphical presentations.

For example, the Summary InfoFrame may take as arguments a Business Concept, a Business Indicator, and a time period. The Report Generation Module uses the user selected parameters, for example, the Business Concept "Product", the Business Concept Segment "Men's Shirts", the Business Indicator "Volume", and the time period "December 1994" to create a Dimensional Query. This Dimensional Query is sent to the Data and Schema Manipulation subsystem, which translates this query into SQL and actually executes it. It returns the computed data to DAI subsystem 14, where other Abstract Queries might embed the actual number in a bullet.

Other Abstract Queries have conditionals associated with them. To build off the previous example, another part of the summary System Template might specify the creation of a graph, showing how the target-business-indicator (volume) is apportioned among the segments of the target-business-concept (shirts). In this case, report generator 72 makes a metadata request to return the set of segments, in this example, the dimension that specifies the shirt manufacturer. All volume information is requested for each manufacturer of shirts. Now, additional information guides report generator 72 in the selection of a choice of graph. For example, if the number of segments (manufacturers in this case) is small, like 7 or less, then a pie graph is appropriate, otherwise, a bar graph is preferred. If the number of segments is very large, then aggregate the bottom 20 percent (in terms of the Business Indicator, in this case, Volume) and use that aggregate with the label "Other" in the graph.

Return area manager 70 keeps track of InfoFrames and Alert Evaluations with positive results by user that are waiting for delivery to client subsystem 12. When a user logs into system 10, client subsystem 12 issues a request to DAI subsystem 14
to return all data for that user in the return area. Return area manager 70 retrieves the information from the return area on server computer 32 and sends it back to client computer 30 through DAI subsystem 14.

Turning now to FIG. 4, DSM subsystem 16 includes SQL generator 80 and metadata query module 82.

SQL generator 80 translates dimensional queries received from DAI subsystem 14 into SQL statements used to retrieve data from data warehouse 24. A mapping from business concepts to database entities is stored in the metadata 25 and is used in the formatting of the SQL statements. SQL generator 80 provides to DAI subsystem 14 for use in creating InfoFrames.

Metadata query generator 82 processes requests for metadata 25 submitted by DAI subsystem 14. At system startup, DAI subsystem 14 requests all metadata 25 in order to initialize the knowledge base. Metadata query generator 82 is also invoked whenever the user modifies his Segments, causing DAI subsystem 14 to issue an update metadata request.

Turning now to FIG. 5, scheduler subsystem 18 includes alert and report scheduler 90. The scheduler periodically tests queued Scheduled Analysts and will dispatch those to the have come due to the DAI subsystem 14. It will periodically dispatch all submitted Exception Analysts to the DAI subsystem 14 so that they can test for trigger conditions. The schedule and trigger periods are independently configurable by the MDT Administrator. The scheduler passes analysts to the CDAI 14B, by way of the Dispatcher 2513 (FIG. 27).

Turning now to FIGS. 6-12, client subsystem 12 and its operation are illustrated in more detail.

Client subsystem 12 includes a primary overlay 98 which appears when client subsystem 12 is executed. Overlay 98 includes three display areas 100-104 within a common Folders window, pull-down menus 106, and buttons 110-120. The Folders window may be maximized (as it is shown in FIG. 6) to eliminate its borders, resized, or minimized as an icon within client subsystem 12. The Folders window cannot be closed.

Display area 100 contains a list of folders, which represent the metaphor used by client subsystem 12 in organizing InfoFrames and the analysis that creates them. A folder is opened by highlighting it and selecting it with input device 21. The first folder in the list is opened by default when client subsystem 12 is executed.

Display area 102 contains a list of InfoFrames within a selected folder. A InfoFrame may be viewed by highlighting it and selecting it with input device 21. An Analysis window 136 appears containing the InfoFrame. The title bar of the window indicates the type of preselected analysis that has been performed. For example, in FIG. 12, "change" analysis was preselected by a user to be the type of analysis to run. The Analysis window 136 may be maximized (as it is shown in FIG. 12) to eliminate its borders, resized, or minimized as an icon within client subsystem 12. The Analysis window 136 may be closed by selecting button 122 (FIG. 12) or by a manner well known to users of Windows 3.1, Windows 95, and other windows operating environments.

Display area 104 contains a list of Analysts within a selected folder. An Analyst is a personification of preselected operations performed on preselected data for the purpose of generating a InfoFrame. An Analyst may be viewed by highlighting it and selecting it with input device 21. Analyst Builder windows 130 (FIGS. 7A-7E) appears containing the preselected settings saved within the Analyst and used to generate the corresponding InfoFrame listed in display area 102. (The InfoFrames listed in display area 102 are arranged in the same order as the Analysts listed in display area 104, and have the same titles as the corresponding Analysts). The Analyst Builder window 130 may be not be maximized, resized, or minimized as an icon; it may only be closed in a manner well known to users of Windows 3.1, Windows 95, and other windows operating environments.

Buttons 110-122 (FIG. 6) implement the primary operational commands within pull-down menus 106 and are activated using a pointing device. Button 110 calls the Analyst Builder windows 130 (FIGS. 7A-7E).

Button 112 calls a Segments divider within a Business Information Setup window 132 (FIG. 8A). Button 116 deletes a selected file or folder within display areas 100-104. Button 118 creates a new folder. Button 120 calls the Analysis window 136
with a selected InfoFrame from display area 102. Button 122 closes client subsystem 12. Button 150 is a print button, button 151 allows the user to create measures, and button 152 allows the user to create or edit measure relationships.

With reference to FIGS. 7A-7E, Analyst Builder window 130 allows a user to define how selected data is analyzed. An Analyst is named under the Analyst Name field. A type of analysis is chosen under the Type of Analysis field. A primary measure to be used in implementing the analysis is chosen under the Primary Measure field. Segments to be reported on are chosen from the list of Defined Segments. Finally, a period for the InfoFrame is defined under the Time Slice Considered fields. A InfoFrame can be created immediately by selecting the Report Now button, or can be scheduled as part of a batch of InfoFrames by selecting the Schedule Analyst button.

With reference to FIG. 8A, the Segments divider within the Business Information Setup window 132 allows Segments to be created, modified, or deleted. A description of the segment appears in the Description field. Upon activation of button 801
by the user, the window 132 of FIG. 8B is launched, allowing the user to edit segment definitons.

With reference to FIG. 9A, Measures of information may be created and modified within the Measures divider of the Business Information Setup window 132. A name for each Measure appears in the Measure Name field. A definition of a Measure appears in the Definition field. Mathematical operators, Time Slice constraints, Segment constraints, and constraints from other Measures may be inserted into the Definition using the corresponding buttons below the Definition field. With respect to FIGS. 9B and 9C, windows 132 may be displayed to select measures and select segments, respectively.

With reference to FIG. 10, Measure relationships may be defined and modified within the Measure Relations divider of the Business Information Setup window 132. Measure relationships are defined in terms of an if-then statement. A primary measure and whether it increases or decreases is selected in the Measure field, which represents the "If" part of the If-Then statement. Measures within the Unrelated field may be moved to either the Decreases field or the Increases field to form the "Then" part of the If-Then statement. With respect to FIG. 11, measure relationships may be restricted by means of the window 132 of that figure.

A batch of InfoFrames may be individually scheduled for automatic production. Scheduling of InfoFrames is particularly useful to those users that require periodic InfoFrames. InfoFrame time intervals may be selected under the Time Interval field, which provides daily, weekly, and monthly reporting options.

With reference to FIG. 12, a sample InfoFrame is shown within Analysis window 136. The type of analysis performed is indicated in the InfoFrame and in the title bar as "Change Analysis". The Segment (previously defined within the Segments divider of the Business Information Setup window 132) is "Store Ages Greater than 3 Years". The Measure (previously define within the Measures divider of the Business Information Setup window 132) is "Same Store Sales". The Time Slice (previously defined in the Time Slice Considered fields of the Analyst Builder window 130) is "Year to date 1995 vs. Last Year".

The InfoFrame provides a concise statement of changes that have occurred in the Primary Measure, Same Store Sales, and changes that have occurred in Measures related to the Same Store Sales, Stores Remodeled, and previously defined within the Measure Relations divider of the Business Information Setup window 132. The InfoFrame then contains an explanation, including a graph, for the change in the Primary Measure, Same Store Sales.

InfoFrame may include multiple instances of HTML associated with a Measure, representing hyperlinks to text data or graphic data representing the results of the Measure.

Turning now to FIG. 13, a method for creating metadata 25 using client subsystem 12 is illustrated beginning with START 140.

In step 141, the user specifies a Business Concept.

In step 142, the user specifies one or more attributes for the Business Concept.

In step 144, client subsystem 12 provides the user with the list of columns of tables in data warehouse 24.

In step 146, the user maps every attribute to a column. The user can provide a textual description of the business concepts and the attributes.

In step 148, the user specifies one or more Business indicators by "mapping" a Business Indicator to a column in a table within data warehouse 24.

In step 150, client subsystem 12 provides the user with a list of columns for the purpose of mapping Business Indicators as well.

In step 152, user selects an "aggregate method" for the Business Indicator that is mapped, which specifies how values for the Business Indicator are aggregated. The system supports the following aggregate methods:

Add

Average

Min

Max

Count

Last in period

First in period

In step 154, the user selects the unit of measurement, and specifies whether the Business Indicator is a currency. The user can optionally specify a plural form of the Business Indicator, a verb to describe change in the value of the Business Indicator, the precision for reporting the Business Indicator and a textual description of the Business Indicator.

In step 156, client subsystem 12 ensures that tables having Business Indicator columns can be joined with tables that have Business Attribute columns.

In step 158, client subsystem 12 determines whether the user wishes to enter additional Business Concepts. If so, the method returns to step 142. If not, the method ends at step 160.

The preceding description forms an overview of the present invention. The following sections describe the invention in further detail, broken into further sections.

2. Client Subsystem 12

The client subsystem 12 is described in further detail below.

FIG. 14 illustrates a more detailed block diagram of the client subsystem 12. Client subsystem 12 contains three subsystems: User Interface (UI) 1401, Manager 1402, and Server APIs 1403. As its name implies, the user interface subsystem 1401
allows the user 1405 to interact with the client 12. At this level of detail, it can be seen that the User Interface subsystem 1401 uses services of both the Manager 1402 and the Server APIs 1403; the Manager 1402 also uses services from the Server APIs
1403. The Server APIs subsystem 1403 provides high level APIs which abstract all client 12 interactions with the DAI subsystem 14. All communications between the client 12 and the DAI subsystem 14 are sent through the Client Server Module (CSM) 1404, which is described in further detail below.

FIG. 15 illustrates a block diagram of the client subsystem 12 having an increased level of detail over the block diagram of FIG. 14. The user interface subsystem 1401 contains all portions of the program that are visible to the user 1405. Because this subsystem may be implemented as a standard MS-Windows style program, most of the units within the interface are either windows or dialog boxes. Each window or dialog box in the interface has one main class which defines its behavior, as detailed below. Some window or dialog classes also use other utility classes, which will also be defined below, where appropriate.

The "top level" of control within the client subsystem 12 is the Application object 1511. The application object 1511 is constructed automatically by the Microsoft Foundation Class (MFC) library's start-up code. The application object has two primary responsibilities: performing login validation, and displaying the main frame window. The frame window in a Multiple Document Interface (MDI) application owns the Menus, Toolbar, and Statusbar, and creates child window objects.

The User Login process consists of two steps: getting a User Name and Password from the User, and sending them to the Connect function of the Server APIs subsystem 1403. There are four possible results from an attempted Connect to the server 32:

login succeeded

login failed

too many login failures

no response from server 32; network down

Upon an unsuccessful login, the login dialog is re-displayed, and the user 1405 may re-enter his/her name and/or password. After a certain number of unsuccessful attempts (number determined by server 32, not client 12), the server 32 will return the "too many failures" result, and the client 12 program will inform the user 1405 of this result, and then exit. If the network or server are down, the client 12 will start up in "off-line" mode, which allows the user 1405 to view saved InfoFrames, but not to create or edit Analysts, or send InfoFrame generation requests.

Upon a successful connect, the application will display the main frame window. A successful Connect result additionally returns an indication of whether the user 1405 has Administrator (MDTA) privileges; if so, the frame window is informed, so that special menu items may be enabled.

The Application object 1511 may make the following requests of other subsystems:

______________________________________ Function Used Subsystem ______________________________________ Connect Session Management API [Server APIs subsystem 1403] Disconnect Session Management API [Server APIs subsystem 1403] Display ManagerWindow Manager Window [UI subsystem 1401] ______________________________________

The Application object 1511 is an instance of the clnt.sub.-- App class. It creates one instance each of clnt.sub.-- UserLoginDlg and clnt.sub.-- MainFrame.

Class clnt.sub.-- App is a subclass of the MFC class CWinApp. We inherit most of the standard behavior of the CWinApp, but override the InitInstance function, in which we run the User Login process, and if successful, construct our main window, an instance of clnt.sub.-- MainFrame.

clnt.sub.-- MainFrame is a subclass of MFC class CMDIFrameWnd. We override the OnCreate function, in order to initialize the Toolbar, and Menus, and to create the initial Manager Window instance 1512.

The clnt.sub.-- MainFrame instance handles some of the Menu and Toolbar requests, while others are handled by whichever Child Window is active (one of the four Manager Windows 1512 or the InfoFrame Viewer window 1517, as described below). The clnt.sub.-- MainFrame instance is also responsible for enabling/disabling menu items that vary depending on which Child Window is active.

The User Login dialog is controlled by an instance of the clnt.sub.-- UserLoginDlg class, a subclass of the MFC class CDialog. The clnt.sub.-- UserLoginDlg instance displays a dialog which asks the User to enter a name and password. The name and password strings are returned to the calling function when the User clicks the "OK" button.

The Toolbar is controlled by an instance of class clnt.sub.-- Toolbar, a subclass of MFC's CToolBar. Class clnt.sub.-- Toolbar inherits all functionality from CToolBar, and adds support for drag-and-drop. Instances of clnt.sub.-- Toolbar accept drops of one Folder (onto Trash button), one or more Analysts (onto Trash, RunNow, or View buttons), and one or more InfoFrames (onto Trash, View, and Print buttons).

The Business Information Definition 1515 includes all functionality related to addition, modification or deletion of Segments, Measures, and Measure Relationships.

Three dialog boxes are used in the Business Information Definition 1515 process; one for each type of Business Information to be edited. The dialogs are controlled by instances of the following classes which are instantiated by clnt.sub.-- MainFrame (in response to User requests through the Menu or Toolbar).

clnt.sub.-- BuildMeasureDlg

This dialog allows the user to update or delete an exisiting measure, or create a new Measure.

clnt.sub.-- BuildSegmentDlg

This dialog allows the user to update or delete an exisiting segment, or create a new segment by defining attribute restrictions.

Clnt.sub.-- BuildRelationDlg

This dialog allows the user to update or delete an exisiting MeasureRelation, or define a new relationship.

The Measure Relationship dialog uses the following services from other subsystems:

______________________________________ Function Used SubSystem ______________________________________ GetMeasureRelationship Metadata API [Server APIs subsystem 1403] AddMeasureRelationship Metadata API [Server APIs subsystem 1403] DeleteMeasureRelationship Metadata API [Server APIs subsystem 1403] UpdateMeasureRelationship Metadata API [Server APIs subsystem 1403] ______________________________________

The Measure dialog uses the following services:

______________________________________ Function Used SubSystem ______________________________________ AddMeasure Metadata API [Server APIs subsystem 1403] DeleteMeasure Metadata API [Server APIs subsystem 1403] UpdateMeasure Metadata API [Server APIs subsystem 1403] GetAllAnalysts Metadata API [Server APIs subsystem 1402] ______________________________________

The Segment dialog uses the following services:

______________________________________ Function Used SubSystem ______________________________________ AddSegment Metadata API [Server APIs subsystem 1403] UpdateSegment Metadata API [Server APIs subsystem 1403] DeleteSegment Metadata API [Server APIs subsystem 1403] GetAllAnalysts Metadata API [Server APIs subsystem 1402] ______________________________________

The Business Information Setup section 1515 is controlled by instances of the following classes: clnt.sub.-- BuildRelationshipDlg, clnt.sub.-- BuildMeasureDlg, clnt.sub.-- BuildSegmentDlg and clnt.sub.-- BuildRestrictDlg (all subclasses of the MFC's CDialog). If the user 1405 selects to modify a private segment or measure, the clnt.sub.-- MeasureDefDlg and clnt.sub.-- SegmentDefDlg objects will be responsible for traversing through the list of existing Analysts and InfoFrames and if the segment or measure is found, the objects will take the following actions:

In case of Delete

A message will be displayed to the User 1405 that deleting will cause some Analysts to no longer run correctly. The User 1405 will be presented with a list of Analysts that will be affected by this deletion. When an Analyst runs on a deleted segment or measure an error message will be returned.

In case of Modify

The newest segment/measure definition will always be used. The old definitions will be replaced.

The User change requests will be transferred to DAI (through the Server APIs subsystem) for immediate update of the Metadata.

The Analyst Builder dialog box 1513 allows the User 1405 to select the parameters needed to generate a specific InfoFrame (see below). It also allows the User 1405 the option of Scheduling and/or defining Trigger conditions for an Analyst. To allow this to happen, the main Analyst dialog will prompt the User 1405 to complete a sequence of sub-dialogs: Measures, Segments, TimeSlice, Schedule, and Trigger.

Other portions of the User Interface subsystem 1401 (i.e., Menus, Toolbar, or a Manager Window) invoke the Analyst Builder dialog 1513 either by passing it an existing Analyst object to view/edit, or by passing a NULL parameter, indicating that a new Analyst is to be created.

The clnt.sub.-- AnalystSheet dialog will instantiate a clnt.sub.-- InfoFrameRequest object when the User 1405 requests to "Save" on a new Analyst or "Save As" on an existing Analyst.

The clnt.sub.-- AnalystSheet dialog makes the following requests to other subsystems:

______________________________________ Function Used SubSystem ______________________________________ NewAnalyst Manager API [Manager subsystem 1402] UpdateAnalyst Manager API [Manager subsystem 1402] RunAnalystNow InfoFrame Generation API [Server APIs subsystem 1403] SetFrameDefinition InfoFrameRequest API [Manager subsystem 1402] GetFrameDefinition InfoFrameRequest API [Manager subsystem 1402] ______________________________________

The clnt.sub.-- AnalystSheet class instantiates sub-dialogs of the following classes: clnt.sub.-- AnalystMeasurePage, clnt.sub.-- AnalystSegmentPage, clnt.sub.-- AnalystTimeSlicePage, clnt.sub.-- AnalystSchedulePage, clnt.sub.-- AnalystTriggerPage (all subclasses of MFC's CPropertyPage). These correspond to five panels within the main dialog box which the User 1405 will be led through in sequence.

Also, the Analyst subsystem 1513 will use clnt.sub.-- MetaTree class and clnt.sub.-- MeausreMap class which will provide access to the Metadate tables through MetaData API's.

The clnt.sub.-- AnalystSheet subdialogs will be dynamically populated with the proper controls according to the User's 1405 selection of the Analyst type. The User input from the Dialog interfaces will be saved in a clnt.sub.-- infoFrameRequest object and returned to Manager subsystem to be saved (and submitted for scheduling, if a Schedule is present--see below regarding further details of the scheduler subsystem 18).

The clnt.sub.-- AnalystMeasurePage makes the following requests to the other subsystems:

______________________________________ Function Used SubSystem ______________________________________ GetName InfoFrameDefinition API [Manager subsystem 1402] SetName InfoFrameDefinition API [Manager subsystem 1402] GetFrameType InfoFrameDefinition API [Manager subsystem 1402] SetFrameType InfoFrameDefinition API [Manager subsystem 1402] GetTargetMeasure InfoFrameDefinition API [Manager subsystem 1402] SetTargtMeasure InfoFrameDefinition API [Manager subsystem 1402] GetComparisonMeasure InfoFrameDefinition API [Manager subsystem 1402] SetComparisonMeasure InfoFrameDefinition API [Manager subsystem 1402] GetAdditionalMList InfoFrameDefinition API [Manager subsystem 1402] SetAdditionalMList InfoFrameDefinition API [Manager subsystem 1402] ______________________________________

The clnt.sub.-- AnalystSegmentPage makes the following requests to other subsystems:

______________________________________ Function Used SubSystem ______________________________________ GetTargetSegment InfoFrameDefinition API [Manager subsystem 1402] SetTargetSegment InfoFrameDefinition API [Manager subsystem 1402] GetComparisonSegment InfoFrameDefinition API [Manager subsystem 1402] SetComparisonSegment InfoFrameDefinition API [Manager subsystem 1402] GetAdditionalSList InfoFrameDefinition API [Manager subsystem 1402] SetAdditionalSList InfoFrameDefinition API [Manager subsystem 1402] GetPartitionList InfoFrameDefinition API [Manager subsystem 1402] SetPartitionList InfoFrameDefinition API [Manager subsystem 1402] GetParentPartition InfoFrameDefinition API [Manager subsystem
1402] GetParentPartition InfoFrameDefinition API [Manager subsystem 1402] ______________________________________

The clnt.sub.-- AnalystTimeSlicePage makes the following requests to other subsystems:

______________________________________ Funciton used Subsystem ______________________________________ GetPeriodType InfoFrameTimeSlice API [Manager subsystem 1402] SetPeriodType InfoFrameTimeSlice API [Manager subsystem 1402] GetAnalysisType InfoFrameTimeSlice API [Manager subsystem 1402] SetAnalysisType InfoFrameTimeSlice API [Manager subsystem 1402] GetYearType InfoFrameTimeSlice API [Manager subsystem 1402] SetYearType InfoFrameTimeSlice API [Manager subsystem
1402] GetTrendInterval InfoFrameTimeSlice API [Manager subsystem 1402] SetTrendInterval InfoFrameTimeSlice API [Manager subsystem 1402] GetDuration InfoFrameTimeSlice API [Manager subsystem 1402] SetDuration InfoFrameTimeSlice API [Manager subsystem 1402] GetNumDuration InfoFrameTimeSlice API [Manager subsystem 1402] SetNumDuration InfoFrameTimeSlice API [Manager subsystem 1402] GetBasePeriod InfoFrameTimeSlice API [Manager subsystem 1402] SetBasePeriod InfoFrameTimeSlice API [Manager subsystem 1402] GetBaseThruPeriod InfoFrameTimeSlice API [Manager subsystem 1402] SetBaseThruPeriod InfoFrameTimeSlice API [Manager subsystem 1402] GetCompPeriod InfoFrameTimeSlice API [Manager subsystem 1402] SetCompPeriod InfoFrameTimeSlice API [Manager subsystem 1402] Operator= InfoFrameTimeSlice API [Manager subsystem 1402] GetTimeSlice InfoFrameTimeSlice API [Manager subsystem 1402] ______________________________________

The clnt.sub.-- AnalystSchedulePage makes the following requests from other subsystems:

______________________________________ Funciton Subsystem ______________________________________ GetNumInterval InfoFrameSchedule API [Manager subsystem 1402] SetNumInterval InfoFrameSchedule API [Manager subsystem 1402] GetInterval InfoFrameSchedule API [Manager subsystem 1402]. SetInterval InfoFrameSchedule API [Manager subsystem 1402] GetStartDate InfoFrameSchedule API [Manager subsystem 1402] SetStartDate InfoFrameSchedule API [Manager subsystem 1402] GetNumLimit InfoFrameSchedule API [Manager subsystem 1402] SetNumLimit InfoFrameSchedule API [Manager subsystem 1402] GetLimit InfoFrameSchedule API [Manager subsystem 1402] SetLimit InfoFrameSchedule API [Manager subsystem 1402] GetScheduleFlag InfoFrameSchedule API [Manager subsystem 1402] SetScheduleFlag InfoFrameSchedule API [Manager subsystem 1402] GetTriggerFlag InfoFrameSchedule API [Manager subsystem 1402] SetTriggerFlag InfoFrameSchedule API [Manager subsystem 1402] Operator= InfoFrameSchedule API [Manager subsystem 1402] SetSchedule InfoFrameReuest API [Manager subsystem 1402] ______________________________________

The clnt.sub.-- AnalystTriggerPage makes the following requests from other subsystems:

______________________________________ Function Subsystem ______________________________________ GetTriggerList InfoFrameTrigger API [Manager subsystem 1402] SetTriggerList InfoFrameTrigger API [Manager subsystem 1402] GetMessageFlag InfoFrameTrigger API [Manager subsystem 1402] SetMessageFlag InfoFrameTrigger API [Manager subsystem 1402] GetFrameFlag InfoFrameTrigger API [Manager subsystem 1402] SetFrameFlag Update the state of the frame generation action GetAnalystList InfoFrameTrigger API [Manager subsystem 1402] SetAnlystList InfoFrameTrigger API [Manager subsystem 1402] Operator= InfoFrameTrigger API [Manager subsystem 1402] GetMeasure Trigger API [Manager subsystem 1402] SetMeasure Trigger API [Manager subsystem 1402] GetOperator Trigger API [Manager subsystem 1402] SetOperator Trigger API [Manager subsystem 1402] GetOperand1 Trigger API [Manager subsystem 1402] GetOperand2 Trigger API [Manager subsystem 1402] SetOperand1 Trigger API [Manager subsystem 1402] GetOperand2 Trigger API [Manager subsystem 1402] GetValue1 Trigger API [Manager subsystem 1402] GetValue2 Trigger API [Manager subsystem 1402] SetValue1 Trigger API [Manager subsystem 1402] SetValue2 Trigger API [Manager subsystem
1402] Operator= Trigger API [Manager subsystem 1402] SetTrigger InfoFrameRequest API [Manager subsystem 1402] ______________________________________

The following is a list of user input requirements for each InfoFrame Type:

(R=Required, O=Optional)

clnt.sub.-- MeasureDlg

______________________________________ Analysis Target Additional Comparison Type Measure Measures Measure ______________________________________ Change R O Segment R O Comparison Measure R R Comparison Summarization R O Trend R O ______________________________________

clnt.sub.-- SegmentDlg

______________________________________ Analysis Target Additional Comparison Type Segment Measures Measure ______________________________________ Change R O Segment R O R Comparison Measure R O Comparison Summarization R O Trend R O ______________________________________

clnt.sub.-- TimeSliceDlg

______________________________________ Analysis Base Comparison Type Period Period Time Interval ______________________________________ Change R R Segment R Comparison Measure R Comparison Summarization R Trend R R ______________________________________

The InfoFrame Viewer Window 1517 displays an InfoFrame on screen (see below). In addition to displaying the InfoFrame data, the Viewer 1517 supports the "Drill Down" capability by presenting hot spots to the User 1405, and generating the appropriate requests when a hot spot is selected. The InfoFrame Viewer also gives the User a capability to Annotate an InfoFrame.

When InfoFrame Viewer 1517 is created, it receives the name of the InfoFrame file and a pointer to the InfoFrame object. This data is parsed (further processing is also done, including generating graphs from embedded data), then displayed.

The Parser capability within the InfoFrame Viewer module 1517 is also used for the SaveAs requests; the raw InfoFrame data is translated to standard HTML data (i.e., MDT-specific graph data is translated into a graphical image in a standard format), and is written to a file in either ASCII or Unicode characters. The InfoFrame Viewer Window 1517 also supports the InfoFrame Print function. This functionality is built on the capabilities provided by the CDocument and CScrollView classes of MFC.

The InfoFrame Viewer subsystem 1517 makes the following requests to other subsystems.

______________________________________ Function Used SubSystem ______________________________________ UpdateInfoFrame Manager API [Manager Subsystem 1402] DrillDown Manager API [Manager Subsystem 1402] ______________________________________

Parser: the clnt.sub.-- Parser class provides the HTML parsing capability for the Client 12 through the following three functions:

______________________________________ Service Provided Description ______________________________________ doParse Called by the InfoFrame Viewer, this function parses the given HTML data, and returns a list of clnt.sub.-- Tag objects, each representing an element of the HTML Data. The clnt.sub.-- Tag objects can contain lists of sub-Tags, so that nesting is preserved. SaveAsHTML.sub.-- Unicode Called by the Manager 1402 when the User 1405 requests to Save an HTML file. Parses the HTML data to replace any non- standard HTML elements with standard HTML data (for example, raw graph data must be transformed into a graphic image). Writes transformed data into a file, using Unicode characters. SaveAsHTML.sub.-- ASCII Same as above, except characters are written out as ASCII. ______________________________________

Viewer: the Viewer is implemented using the MFC Document/View architecture. Class clnt.sub.-- Viewer is a subclass of CScrollView (MFC), which provides the automatic scrolling. Class clnt.sub.-- ParserDoc is a subclass of CDocument. On creation, it instantiates a clnt.sub.-- Parser object to parse the HTML Data. The clnt.sub.-- Viewer then traverses the returned list of clnt.sub.-- Tag objects and places their visual representations in the Window.

The following collection of controls are used by the user interface subsystem 1401:

clnt.sub.-- TreeCtrl

All dialog controls which will be representing segments and/or partitions inherit from this class rather than from the MFC's CTreeCtrl. clnt.sub.-- MetaTree control also inherits from this class.

clnt.sub.-- MetaTree

This control is used to represent the Metadata segments and partitions in a hirerchical format. The following dialogs subclass this control: clnt.sub.-- AnalystSegmentPage, clnt.sub.-- BuildSegmentDlg, clnt.sub.-- RestrictMeasureDlg.

clnt.sub.-- TopLevelSegmentCombo

This conttrol is used to represent all Metadata top level segments in a DropDown ComboBox. The following dialogs subclass this control: clnt.sub.-- AnalystSegmentPage, clnt.sub.-- BuildSegmentDlg, clnt.sub.-- RestrictMeasureDlg.

clnt.sub.-- DurationCombo

This control represents the user's conditional operator choices in a dropdown combobox format. The following dialogs subclass this control: clnt.sub.-- AnalystPeriodPage, clnt.sub.-- AnalystSchedulePage.

clnt.sub.-- OperatorCombo

This control represents the user's conditional operator choices in a dropdown combobox format. The following dialogs subclass this control: clnt.sub.-- AnalystPeriodPage, clnt.sub.-- AnalystSchedulePage.

clnt.sub.-- DateEdit

This control is used to represent the locale date. It validates the user entry and formats the date properly for the locale. The following dialogs subclass this control: clnt.sub.-- AnalystPeriodPage, clnt.sub.-- AnalystSchedulePage.

lnt.sub.-- ReadOnlyListBox

This control is used for a non-select listbox. There is no dependencies from other subsystems. The following dialog subclasses this control: clnt.sub.-- BuildSegmentDlg

The clnt.sub.-- MetaTree control uses the following services from other subsystems:

______________________________________ Function Used SubSystem ______________________________________ GetSegment Metadata API [Server APIs subsystem 1403] GetPartition Metadata API [Server APIs subsystem 1403] ______________________________________

The clnt.sub.-- TopLevelSegmentCombo uses the following services from other subsystems:

______________________________________ Function Used SubSystem ______________________________________ GetSegment Metadata API [Server APIs subsystem 1403] ______________________________________

The clnt.sub.-- MeasureCombo uses the following services from other subsystems:

______________________________________ Function Used SubSystem ______________________________________ GetBasicMeasure Metadata API [Server APIs subsystem 1403] GetCompositeMeasure Metadata API [Server APIs subsystem 1403 ] ______________________________________

The Administrator Interface 1516 consists of two tasks: User Account setup, and Metadata Builder. The User Accounts setup dialog allows the MDTA (Administrator) to create and manager User accounts, including login name, password, and User type. The Metadata Builder allows the MDTA to define Dimensions, Attributes, and Basic Measures, to create Segments, map columns for Time values, and define Year types.

The User Accounts screen utilizes the clnt.sub.-- UserLogin class from the Server APIs subsystem 1403. The Metadata Builder screens utilize nearly all metadata functions provided by the Server APIs subsystem 1403. This includes the services of classes clnt.sub.-- Communications, clnt.sub.-- Dimension, clnt.sub.-- Attribute, clnt.sub.-- BasicMeasure, and clnt.sub.-- Segment. It also uses the clnt.sub.-- Schema class for access to the Data Warehouse schema.

The User Accounts dialog is controlled by an instance of clnt.sub.-- UserAccountsDlg, a subclass of MFC's CDialog. The interface that clnt.sub.-- UserAccountsDlg presents to the rest of the system is the standard for CDialog objects; the instance is constructed, and then DoModal() is called to display the dialog. The call to DoModal() returns only when the User 1405 presses the "Cancel" or "Close" button.

The Metadata Builder dialog may be a "wizard" style dialog, meaning that it presents a series of sub-dialogs in a pre-determined order. The User 1405 may press the "Next" and "Back" buttons to traverse the list of sub-dialogs, and may press "Cancel" to exit from the Metadata Builder. The "frame" of the wizard is implemented by class clnt.sub.-- MasterSetup, which is a subclass of MFC's CPropertySheet. The constructor of clnt.sub.-- MasterSetup creates one instance each of the dialog "pages" (clnt.sub.-- AttributeDefinition, clnt.sub.-- AttributeMapping, clnt.sub.-- AttributeValueDefinition, clnt.sub.-- AutomaticSegments, clnt.sub.-- BasicMeasureDefinition, clnt.sub.-- BasicMeasureMap, clnt.sub.-- DimensionDefinition, clnt.sub.-- Joins, clnt.sub.-- TimeDimension, clnt.sub.-- YearDefinition). The pages are loaded into the "wizard" automatically when it is displayed. This is transparent to the rest of the Client application 12, which simply constructs the Metadata Builder and calls DoModal() on the instance.

Each of the "pages" loads its initial display data through calls to the ServerAPIs 1403 metadata classes, and each page responds to the "Save" button by updating its data through the ServerAPIs 1403.

The clnt.sub.-- MasterSetup has one linked list for each type of metadata used. Each list contains zero or more clnt.sub.-- SetupObject objects. The clnt.sub.-- SetupObject object contains two data members: one pointer to a CObject and one clnt.sub.-- ObjectState enumeration. clnt.sub.-- ObjectState can take on one of four values: STATE.sub.-- EXISTING, STATE.sub.-- NEW, STATE.sub.-- DELETED, STATE.sub.-- MODIFIED. These linked lists are available to every "wizard" page. Every time the user 1405 adds, deletes or modifies a metadata object, it is added to the appropriate linked list. These linked lists are used to determine which objects to display to the user 1405 and which ones to hide from the user 1405. The linked lists are also used by the "CANCEL" and "SAVE" buttons. When the user 1405 presses the "CANCEL" button, all objects in the linked lists are deleted. When the user 1405 presses the "SAVE" button, all objects in the linked lists are accessed. If the value of the enumeration is STATE.sub.-- EXISTING the object is deleted from the list. If the value is STATE.sub.-- NEW the object is added to the metadata on the server and deleted from the list. If the value is STATE.sub.-- DELETED the object is deleted from the metadata on the server and the object is deleted from the list. If the value is STAT.sub.-- MODIFIED the object is updated in the metadata on the server and the object is deleted from the list.

The "SAVE" button on the "wizard" page adds, deletes and modifies objects in a certain order. For deleting objects, the following table lists the object to be deleted in the left column and the associated objects in the right column that will be deleted from the linked lists on the Client 12 if they exist. The row order in the left column defines which object will be deleted, added or modified first. Dimensions would be added first and Year Definitions would be added last.

______________________________________ Object Associated objects Dimension Attribute, Segment ______________________________________ Attribute Enumerate Attribute Value, Restricted Integer Attribute, Restricted Float Attribute, Segment, Attribute Measure Join, Attribute Attribute Join Enumerated Attribute Value <none> Restricted Integer Attribute <none> Restricted Float Attribute <none> Segment Numerical Attribute Restriction Numerical Attribute Restriction <none> Enumerate String Attribute <none> Restriction Partition <none> Basic Measure Attribute Measure Join Composite Measure Constant, Segment List, Attribute Measure Join Constant <none> Segment List <none> Attribute Measure Join <none> Attribute Attribute Join <none> Measure Relationship Measure Relation Range Restriction, Measure Relation Magnitude Restriction, Measure Relation Segment Constraint Measure Relation Range <none> Restriction Measure Relation Magnitude <none> Measure Relation Segment <none> Constraint Time Definition <none> Time Mapping <none> Year Definition <none> ______________________________________

When the user deletes an object that already exist in the metadata 25 on the server 34, just that object is deleted. The "associated objects" for that object will be deleted by the DAI subsystem 14.

The Manager Windows 1512 give the User 1405 access to all types of data which are stored by the Manager subsystem 1402: Folders, Analysts, and InfoFrames, as well as information about Pending InfoFrames.

There are four types of Manager Windows 1512, each offering a different view of this data:

Analyst list (flat list of all Analysts)

InfoFrame list (flat list of all InfoFrames)

Folder View (includes Folder hierarchy; shows InfoFrames & Analysts in current Folder)

Pending Queue (flat list of InfoFrames pending in the DAI 14).

Note that the Pending Queue window is included with the other three Manager Windows because of its similarity in construction and interface behavior; the data it displays is actually quite distinct from that of the other three Windows.

Drag-and-Drop features are also supported by the Manager Windows 1512. The Analyst list, InfoFrame list, and Folder View can be the source of a "drag" operation (Users may drag one Folder, one or more Analysts, or one or more InfoFrames). The Folder View may also be the destination of a "drag" operation.

The first three Manager Window types (Analyst list, InfoFrame list, Folder view) use the following services from other subsystems:

______________________________________ Function Used SubSystem ______________________________________ GetRootFolder Manager API [Manager subsystem 1402] GetTrashBin Manager API [Manager subsystem 1402] GetAllAnalysts Manager API [Manager subsystem 1402] GetAllInfoFrames Manager API [Manager subsystem 1402] NewFolder Manager API [Manager subsystem 1402] RemoveFolder Manager API [Manager subsystem 1402] MoveFolder Manager API [Manager subsystem 1402] SetFolderName Manager API [Manager subsystem 1402] MoveAnalyst Manager API [Manager subsystem 1402] RemoveAnalyst Manager API [Manager subsystem 1402] MoveInfoFrame Manager API [Manager subsystem 1402] RemoveInfoFrame Manager API [Manager subsystem 1402] EmptyTrash Manager API [Manager subsystem 1402] GetChildFolders Folder API [Manager subsystem 1402] GetInfoFrames Folder API [Manager subsystem 1402] GetAnalysts Folder API [Manager subsystem 1402] RemoveFolder Folder API [Manager subsystem 1402] RunAnalystNow InfoFrameGeneration API [Server API subsystem 1403] ViewInfoFrame InfoFrame Viewer Window [User Interface subsystem 1401] run AnalystBuilder dialog Analyst Builder [User Interface subsystem 1401] ______________________________________

The fourth Manager Window, Pending Queue, uses the following services from other subsystems:

______________________________________ Function Used SubSystem ______________________________________ GetStatus InfoFrame Generation API [Server API subsystem 1403] CancelAnalyst InfoFrame Generation API [Server API subsystem 1403] ______________________________________

Each of the four Manager Windows 1512 is controlled by a frame object and one or more control objects placed within the frame. In all four cases, the frame is represented by just one class, clnt.sub.-- ManagerWnd, a subclass of CMDIChildWnd from MFC. The clnt.sub.-- ManagerWnd object is parameterized on instantiation to indicate which control object(s) it should construct. As the superclass would suggest, it behaves as a standard MDI Child Window.

The control objects within the frame window inherit from MFC classes which are, in turn, wrappers for standard MS-Windows Controls. Classes clnt.sub.-- AnalystCtrl, clnt.sub.-- InfoFrameCtrl, and clnt.sub.-- PendingCtrl each inherit from CListCtrl, and display their data in "columned" lists. Class clnt.sub.-- FolderCtrl inherits from CTreeCtrl to display the tree-like hierarchy of the MDT Folders. These classes are instantiated, as needed, by the clnt.sub.-- ManagerWnd, depending on the "style" flag it receives: clnt.sub.-- AnalystCtrl is used in ANALYSTS mode and FOLDERS mode; clnt.sub.-- InfoFrameCtrl is used in INFOFRAMES and FOLDERS modes; clnt.sub.-- FolderCtrl is used in FOLDERS mode and by the clnt.sub.-- SaveAs dialog box (a part of the Analyst Builder); clnt.sub.-- PendingCtrl is used in PENDING mode.

When the User 1405 begins a drag-and-drop operation, the source window of the drag constructs an instance of clnt.sub.-- DragWnd, which then controls the remainder of the drag-and-drop. The clnt.sub.-- DragWnd is given a pointer to the object or list of objects being dragged, and also an indication of the type of object being dragged. It then sends a message to any window the cursor passes over, asking whether it is "OK" to drop the object in that window. The windows which support drops are clnt.sub.-- FolderCtrl and clnt.sub.-- Toolbar (see section 3.2.3). When the User 1405 releases the mouse 21 button, the clnt.sub.-- Dragwnd sends a message to the destination window requesting it to accept the dropped item(s), and also sends a message to the source window indicating that the drop was completed.

The Manager subsystem 1402 handles all functions related to manipulating, storing, and retrieving Folder 100 hierarchies, and the InfoFrames and Analysts that are stored in those Folders. Because all functions related to storing and retrieving this data are encapsulated in the Manager subsystem 1402, there will be minimal impact on the other Client subsystems if the Folders/InfoFrames/Analysts data store moves onto the Server tier 32 in an alternate embodiment of the present invention.

As can be seen FIG. 15, the Manager 1402 provides four APIs: Manager 1521, Folder 1522, Analyst 1523, and InfoFrame 1524. These APIs correspond to four classes which are described in the following sections. The main class in the Manager subsystem 1521 is the clnt.sub.-- Manager class. Three data object classes: clnt.sub.-- Folder, clnt.sub.-- InfoFrameRequest, and clnt.sub.-- InfoFrame, are used by the clnt.sub.-- Manager, and by other subsystems. Access to Manager functions normally begins with a call to the clnt.sub.-- Manager itself, requesting a list of Folders, Analysts, or InfoFrames. The objects which are returned by these queries can then be displayed to the User 1405 for viewing and/or manipulating. Requests for changes to any of the data objects pass through the clnt.sub.-- Manager, which handles storing the changes on disk and, as applicable, sending the changes to the Server API subsystem 1403.

The Manager subsystem 1402 also provides a "TrashBin" capability; that is, when a request to delete an Analyst or an InfoFrame is received, the object is placed in the TrashBin, and not actually deleted until the next EmptyTrash command is received. The TrashBin is persistent between sessions of the Client 12. The TrashBin is implemented as an instance of the clnt.sub.-- Folder class.

There is exactly one instance 1521 of the clnt.sub.-- Manager class in the Client application 12. In order to ensure that only one instance will be created, and that it will be safely globally available, the class uses the "Singleton" design pattern (as described in Gamma, et al., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995, ISBN 0-201-63361-2). In this pattern, the class provides a static member function which returns a pointer to the one instance of itself. The function automatically creates the instance the first time it is called. The constructor of the class is made protected, thus ensuring that the class is never instantiated elsewhere.

The clnt.sub.-- Manager class handles the following requests from other subsystems:

______________________________________ Service Provided Description ______________________________________ GetManager Static class function which returns a pointer to the one instance of clnt.sub.-- Manager. See above. GetRootFolder Returns pointer to top clnt.sub.-- Folder object. GetTrashBin Returns pointer to TrashBin (actually a clnt.sub.-- Folder object). GetAllAnalysts Returns a list of all Analysts, without regard to Folder hierarchy. GetAllInfoFrames Returns a list of all InfoFrames, without regard to Folder hierarchy. NewFolder Creates a new Folder; parameter indicates the parent for the new Folder; returns pointer to the newly-created clnt.sub.-- Folder object. RemoveFolder Removes the given clnt.sub.-- Folder object; all of its sub-folders, Analysts, and InfoFrames are also removed. MoveFolder Moves the given Folder to a new Parent Folder. NewAnalyst Stores a new clnt.sub.-- InfoFrame Request object in the given Folder, sends to ScheduleAnalyst Server API, if a Schedule is present. UpdateAnalyst Stores changes to an existing clnt.sub.-- InfoFrameRequest object, sends to UpdateAnalyst Server API, if a Schedule is present. MoveAnalyst Moves clnt.sub.-- InfoFrameRequest object to a different Folder. RemoveAnalyst Deletes the given clnt.sub.-- InfoFrameRequest object; if a Schedule is present, sends a CancelAnalyst to the Server API subsystem. UpdateInfoFrame Stores changes to an existing clnt.sub.-- InfoFrame object (normally changes to its HTML data, when annotations are added or raw data is processed into a graph, for example.) MoveInfoFrame Moves the given clnt.sub.-- InfoFrame object to a different Folder. RemoveInfoFrame Deletes the given clnt.sub.-- InfoFrame object. DrillDown If requested DrillDown Frame is already generated, returns that Frame; if not, sends the Frame Generation request to Server API. SaveInfoFrameAsMDTFile Creates a file that can be e-mailed, etc. File is an "MDT InfoFrame File"--only useable by someone who has Client software 12. SaveInfoFrameAsHTML Creates a file that can be e-mailed, etc. File File is a standard HTML 3.0 file, viewable by any HTML Browser program. A parameter to the function indicates if ASCII or UNICODE output was requested by the User. ImportMDTFile Reads in a file previously created by SaveInfoFrameAsMDTFile command, stores it as an InfoFrame object in a Folder. The InfoFrame is then available for viewing through standard mechanisms. EmptyTrash Completely deletes all items currently in the TrashBin. ______________________________________

The clnt.sub.-- Manager object uses the following services from other subsystems:

______________________________________ Function Used SubSystem ______________________________________ ScheduleAnalyst Analyst API [Server API subsystem 1403] UpdateAnalyst Analyst API [Server API subsystem 1403] CancelAnalyst Analyst API [Server API subsystem 1403] GetStatus InfoFrame Generation API [Server API subsystem 1403] RetrieveFrame InfoFrame Generation API [Server API subsystem 1403] ______________________________________

Instances 1522 of class clnt.sub.-- Folder are instantiated and deleted only by the clnt.sub.-- Manager object. Other subsystem gain access to clnt.sub.-- Folder instances starting with the clnt.sub.-- Manager's GetRootFolder() or GetTrashBin() functions.

The clnt.sub.-- Folder object handles the following requests from other subsystems:

______________________________________ Service Provided Description ______________________________________ GetFolderName Returns name of this Folder. SetFolderName Changes the name of this Folder. GetChildFolders Returns a list of clnt.sub.-- Folder objects which are "children" of this Folder. GetInfoFrames Returns a list of clnt.sub.-- InfoFrame objects which are stored in this Folder. GetAnalysts Returns a list of clnt.sub.-- InfoFrameRequest objects which are stored in this Folder. RemoveFolder Removes the given clnt.sub.-- Folder object; all of its sub-folders, Analysts, and InfoFrames are also removed. ______________________________________

Instances 1523 of class clnt.sub.-- InfoFrameRequest are created by the clnt.sub.-- Manager object (when restoring saved Analysts from disk) and by the clnt.sub.-- AnalystBuilder dialog class (when creating a new Analyst or doing a SaveAs on a current Analyst). Other subsystems normally access Analyst objects by retrieving them from their Folder (clnt.sub.-- Folder::GetAnalysts()). Instances of clnt.sub.-- InfoFrameRequest are only deleted by the clnt.sub.-- Manager object.

The clnt.sub.-- infoFrameRequest class handles the following requests from other subsystems:

______________________________________ Service Provided Description ______________________________________ GetName Returns name of this Analyst. SetName Assigns a new name for this Analyst. GetRequestID Return a unique request ID assigned by Manager SetRequestID Assigns a unique request ID to the Analyst Request GetUserName Returns the user name SetUserName Assigns a user name to the Analyst Request GetFrameDef Returns the clnt.sub.-- InfoFrameDefinition object for this Analyst. SetFrameDef Updates the Analyst's FrameDefinition object. GetSchedule Returns the clnt.sub.-- Schedule object for this Analyst. SetSchedule Updates the Analyst's Schedule object. GetTrigger Returns the clnt.sub.-- Trigger object for this Analyst. SetTrigger Updates the Analyst's Trigger object. GetContainingFolder Returns the pointer to the containig foldr object SetContaining Folder Updates the pointer to the containing folder ______________________________________ object

The clnt.sub.-- InfoFrameRequest class does most of its work through three helper classes. The clnt.sub.-- InfoFrameDefinition class stores a description of the InfoFrame Generation request that will be sent when this Analyst is run (or scheduled).

The clnt.sub.-- infoFrameDefinition class handles the following requests from other subsystems

______________________________________ Service Provided Description ______________________________________ GetFolderID Return the Folder ID assign to the analyst by clnt.sub.-- Fol