System and method for segmenting a database based upon data attributes5870746Abstract 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. Claims What is claimed is: Description BACKGROUND OF THE INVENTION
______________________________________
.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.-- Folder object
SetFolderID Assigns the Folder ID to the Analyst.
GetAnalysisType
Returns the type of analysis Selected for this
request.
SetAnalysisType
Updates the type of analysis selected for this
request.
GetTargetMeasure
Returns the target measure selected for this
analysis. Required
GetComparisonMeasure
Returns the comparison Measure selected for
this analysis. Required only for Measure
Compariosn Analysis.
SetComparisonMeasure
Updates the Compariosn Meausre Selected for
this analyisis. Required only for Measure
Comparison Analysis
GetAdditionalMList
Returns a list of Additional measure Objects
selected for this analysis. Optional.
SetAdditionalMList
Updates the List of Additional measure Objects
slected for this analysis. Optional
GetTargetSegment
Returns the target segment selected for this
analysis. Required
SetTargetSegment
Updates the target Segment selected for this
analysis. Required.
GetComparisonSegment
Returns the comparison Segment selected for
this analysis. Required only for Segment
Compariosn Analysis.
SetComparisonSegment
Updates the Compariosn Segment Selected for
this analyisis. Required only for Segment
Comparison Analysis.
GetAdditionalSList
Returns a List of Additional Segment Objects
selected for this analysis. Optional.
SetAdditionalSList
Updates the List of Additional Segment
Objects slected for this analysis. Optional
GetPartitionList
Returns the List of selected target Partitions.
Optional.
SetPartitionList
Updates the List of selected target Partitions.
Optional.
GetParentPartition
Returns the target segment's parent partition.
Required only if target segment is not top level
segment.
SetParentPartition
Updates the target segment's parent partition.
Required only if target segmetn is not top level
segment.
GetTimeSlice Returns the pointer to the timeslice object for
this analysis Required.
SetTimeSlice Updates the pointer to the timeslice object for
this analyusis. Required.
Operator= Copies the object into another
______________________________________
The clnt.sub.-- InfoFrameTimeSlice class handles the following requests from other subsystems:
______________________________________
Service Provided
Description
______________________________________
GetPeriodType
Returns the type of timeslice selected for the
request.
SetPeriodType
Updates the type of timeslice selected for the
request.
GetAnalysisType
Returns the type of analysis selected for the request.
SetAnalysisType
Updates the type of analysis selected for the
request.
GetYearType
Returns the type of year definition selected for the
request
SetYearType
Updates the type of year definition selected for the
request
GetTrendInterval
Returns the interval duration. Required only for
Trend Analysis.
SetTrendInterval
Updates the interval duration. Reuired only for
Trend Analysis.
GetDuration
Returns the time duration.
SetDuration
Updates the time duration.
GetNumDuration
Returns the number of durations.
SetNumDuration
Updates the number of durations.
GetBasePeriod
Returns the Specific Date's base period.
SetBasePeriod
Updates the Specific Date's base period.
GetBaseThruPeriod
Returns the Specific Date's thru period.
SetBaseThruPeriod
Updates the Specific Date's thru period.
GetCompPeriod
Returns the Specific Date's Comparison Period.
Required only by Change Analysis.
SetCompPeriod
Updates the Specific Date's Comparison Period.
Required only by Change Analysis.
Operator= Copies one TimeSlice object inot another.
______________________________________
The clnt.sub.-- InfoFrameSchedule class stores definition of a schedule for the Analyst. The clnt.sub.-- infoFrameSchedule class handles the following requests from other subsystems:
______________________________________
Service Provided
Description
______________________________________
GetNumInterval
Return Number of intervals the report should run.
SetNumInterval
Update the number of intervals the report should
run.
GetInterval
Return the duration for the interval the report
should run.
SetInterval
Updates the duration for the interval the report
should run.
GetStartDate
Rutun the date to which the report is scheduled to
start runing.
SetStartDate
Updates the date to which the report is scheduled to
start running.
GetNumLimit
Retuns the number of time periods the reports is
scheduled to run.
SetNumLimit
Updates the number of time periods the report os
shceduled to run,
GetLimit Return the duration for the number of times the
report is shceduled to run.
SetLimit Updates the duration for the number of times the
report is scheduled to run.
GetScheduleFlag
Returns the enabling or disabling state of the
shcedule.
SetScheduleFlag
Updates the enabling or disabling state of the
schedule.
GetTriggerFlag
Returns the enabling or disabling state of the trigger
definition.
SetTriggerFlag
| ||||||
