Abstract:
A framework for improving user interfaces, and in particular for improving user interfaces for displaying and interacting with predictive analytics, is described herein. In one embodiment, a user interface template renders predictive models and enables visually interacting with data to discover hidden insights and relationships in the data. The user interface template determines, based on the metadata and data annotations, how to display the supplied data. By encapsulating complex code necessary to render predictive models and enable visually interacting with data, the amount of frontend code required to implement predictive analytic functionality is reduced, defect rates are reduced, while design consistency is improved.

Description:
BACKGROUND 
       [0001]    Complicated software systems are challenging to develop and maintain. As different modules of a software system are implemented, a given piece of functionality may be implemented multiple times, often by different individuals or organizations. Different implementations are problematic, as inconsistent user experiences, increased defect rates, higher development costs, and increased maintenance costs all negatively impact the project. 
         [0002]    Predictive analytics is a particularly complicated scenario that is challenging to implement correctly and consistently. Predictive analytics encompasses a variety of statistical techniques and data mining solutions. Examples of such statistical models include descriptive models, which classify customers or prospects into groups; decision models, which predict the results of decision involving many variables; and predictive models generally, which analyze historical data to determine how likely a specific behavior is to be expected. Example uses of predictive models include forecasting, key influencer determination, trend identification, relationship analysis, and anomaly identification. 
         [0003]    Therefore, there is a need for an improved framework that addresses the abovementioned challenges. 
       SUMMARY 
       [0004]    The disclosed user interface templates define user interface patterns and components that render a user interface at run-time based on an interpretation of metadata and/or data annotations. In one embodiment, metadata and data annotations are stored in data service views in line with or adjacent to data query commands. Data query commands may be defined in any programming language, but are particularly suited to data centric languages such as Structured Query Language (SQL). Data service views may be translated into native database views, such as a SQL view, for execution by a database. Another type of data service view, which also is associated with metadata, initiates and then returns the result of a predictive analytics operation. Metadata consumed by the disclosed user interface templates may also be obtained from web services such as Open Data protocol (OData) or other Representation State Transfer (REST) web services, configuration files, and the like. 
         [0005]    In one embodiment, a user interface template renders predictive models and enables visually interacting with data to discover hidden insights and relationships in the data. The user interface template determines, based on the metadata and data annotations, how to display the supplied data. By encapsulating complex code necessary to render predictive models and enable visually interacting with data, the amount of frontend code required to implement predictive analytic functionality is reduced, defect rates are reduced, while design consistency is improved. 
         [0006]    With these and other advantages and features that will become hereinafter apparent, further information may be obtained by reference to the following detailed description and appended claims, and to the figures attached hereto. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0007]    Some embodiments are illustrated in the accompanying figures, in which like reference numerals designate like parts, and wherein: 
           [0008]      FIG. 1  is a block diagram illustrating an exemplary architecture; 
           [0009]      FIG. 2  is a block diagram illustrating exemplary components arranged in three software layers; 
           [0010]      FIG. 3  is a meta model for a predictive analytics template; 
           [0011]      FIG. 4  is a source code and metadata listing of a data service prediction query view; 
           [0012]      FIG. 5  is a source code and metadata listing of a data service prediction view; and 
           [0013]      FIG. 6  is a flow chart illustrating one embodiment of generating a predictive analytics user interface. 
       
    
    
     DETAILED DESCRIPTION 
       [0014]    In the following description, for purposes of explanation, specific numbers, materials and configurations are set forth in order to provide a thorough understanding of the present frameworks and methods and in order to meet statutory written description, enablement, and best-mode requirements. However, it will be apparent to one skilled in the art that the present frameworks and methods may be practiced without the specific exemplary details. In other instances, well-known features are omitted or simplified to clarify the description of the exemplary implementations of the present framework and methods, and to thereby better explain the present framework and methods. Furthermore, for ease of understanding, certain method steps are delineated as separate steps; however, these separately delineated steps should not be construed as necessarily order dependent in their performance. 
         [0015]      FIG. 1  is a block diagram illustrating an exemplary architecture  100  that may be used to implement the predictive analytics user interface template described herein. Generally, architecture  100  may include a template for predictive analytics system  102 , a data repository  116 , and a business logic server  118 . 
         [0016]    The template for predictive analytics system  102  can be any type of computing device capable of responding to and executing instructions in a defined manner, such as a workstation, a server, a portable laptop computer, another portable device, a touch-based tablet, a smart phone, a mini-computer, a mainframe computer, a storage system, a dedicated digital appliance, a device, a component, other equipment, or a combination of these. The system may include a central processing unit (CPU)  104 , an input/output (I/O) unit  106 , a memory module  120  and a communications card or device  108  (e.g., modem and/or network adapter) for exchanging data with a network (e.g., local area network (LAN) or a wide area network (WAN)). It should be appreciated that the different components and sub-components of the system may be located on different machines or systems. Memory module  120  may include predictive analytics template  110 . 
         [0017]    The template for predictive analytics system  102  may be communicatively coupled to one or more other computer systems or devices via the network. For instance, the system may further be communicatively coupled to one or more data repository  116  and/or business logic server  118 . The data repository  116  may be, for example, any database (e.g., relational database, in-memory database, etc.), an entity (e.g., set of related records), or a data set included in the database. In some implementations, data repository  116  stores data over which predictive analytics may be performed. Additionally or alternatively, data repository  116  may perform queries, analysis, or other processing to perform the predictive analytics. 
         [0018]    The business logic server  118  may be a server computer, desktop computer, cloud computer, virtual computer, or any other type of computing device capable of processing network requests to store, retrieve, or process content. In one embodiment, the template for predictive analytics system  102  operates as a client computer (e.g., desktop, laptop, mobile), with which business logic server  118  communicates to perform the steps described herein. 
         [0019]    Predictive analytics template  110  includes a logic for receiving and processing user input related to a predictive analytics template. In one embodiment, predictive analytics template  110  enables a user to select a type of predictive analytics and an entity or data set on which to perform the analysis. Predictive analytics template  110  may then invoke a data service view, either directly, or via a remoting architecture such as a web service. The data service view is associated with metadata usable by predictive analysis template  110  to determine how to layout data returned from the data service view. 
         [0020]      FIG. 2  is a block diagram  200  illustrating exemplary components arranged in three software layers.  FIG. 2  depicts a user interface  202 , which in some embodiments is implemented by the template for predictive analytics system  102 .  FIG. 2  also depicts business logic layer  204 , which in some embodiments is implemented by business logic server  116 .  FIG. 2  also depicts a database layer  206 , which in some embodiments is implemented by data repository  116 . 
         [0021]    User interface  202  includes a template for predictive analytics  208  and patterns &amp; freestyle  210 . Business logic  204  includes web service  112 , which is used to invoke data service views and return the associated metadata and resulting data to user interface  202 . In one embodiment, web service  212  is implemented in Open Data Protocol (OData), and itself makes metadata available to user interface  202 , regardless of which data service view is executed. 
         [0022]    Business logic  204  also includes data service view  214  and predictive view  216 . Predictive view  216  may optionally invoke a data service view. As discussed in further detail below with regard to  FIG. 6 , data service view  214  and predictive view  216  expose data and metadata for consumption by user interface  202 . Data service view  214  invokes a database view, such as database view  220 , which in turn is based on application table  222 . In some embodiments, database view  220  is created from data service view  214  by stripping metadata from data service view  214 . Predictive view  216  directly invokes unified model management layer  224 , which in turn invokes predictive model  226 . 
         [0023]      FIG. 3  is a meta model  300  for a predictive analytics template.  FIG. 3  depicts predictive analytics template  302 , which is typically implemented by the template for predictive analytics system  102 . In one embodiment, predictive analytics template  302  generates object view floorplan  304  user interface. Object view floorplan  304 , in one embodiment, enables a user to select an object or a set of data upon which to execute predictive analytics. 
         [0024]    Once the type of predictive analytics is selected, predictive query view  306  (example depicted in  FIG. 4 ) is invoked, which may in turn invoke predictive view  308  (example depicted in  FIG. 5 ). Upon completion of predictive query view  306 , the data is returned, and as is any metadata associated with the predictive query view  306 . This metadata is used by predictive analytics template  302  to display an interactive predictive analytics user interface. For example, predictive analytics template  302  may graph the results of the predictive analytics automatically. The type of graphs, e.g., a line graph, the range of values chosen to be graphed, a list of other graph types the user may choose to render the same data with, and the like, may be rendered based on the metadata returned by predictive query view  306  and/or predictive view  308 . Additionally or alternatively, metadata may be retrieved from configuration data  312 . In one embodiment, when the resulting data returned comprises a tree or other hierarchy, the data is displayed with list view table tree  310 . However, if the data returned comprises a flat list, then list view floorplan  310  is used to display the data. 
         [0025]      FIG. 4  is a source code and metadata listing  400  of a data service prediction query view  402 . 
         [0026]      FIG. 5  is a source code and metadata listing  500  of a data service prediction view  502 . 
         [0027]      FIG. 6  is a flow chart illustrating an exemplary process  600  invoking an action associated with generating a predictive analytics user interface. The process may be performed automatically or semi-automatically by the template for predictive analytics system  102 , described above with reference to  FIG. 1 . 
         [0028]    At block  602 , a selection of an entity upon which to perform predictive analytics is received. For example, if a list of a business&#39;s cost centers is displayed to a user, the user may select one or more of the cost centers on which to perform predictive analytics. 
         [0029]    At block  604 , a selection of a type of predictive analytics to perform on the selected entity is received. Continuing the example, for the selected cost center, an analytic report such as “sales &amp; presales”, for predicting future costs, may be selected. 
         [0030]    At block  606 , execution of the selected type of predicted analytics for the selected entity is initiated. In one embodiment, execution is initiated by invoking a data service view, such as predictive query view  306  or data service view  214 . In one embodiment, the data service view  214  or predictive query view  306  defines a result data schema and is associated with at least one piece of metadata used to determine how to layout the resulting data. 
         [0031]    In one embodiment, a data service view includes computer code, whether interpreted or compiled, and metadata. The associated metadata may be global to the data service view or adjacent to a particular lines) of computer code. In one embodiment, a data service view  214  is a wrapper around a relational database view, in that invoking the data service view in turn invokes an underlying relational database view. This underlying relational database view may be a SQL view, meaning a live projection of data from one or more tables into a queryable form. In one embodiment, the relational database view is generated from the data service view by stripping out the metadata associated with the data service view. 
         [0032]    In another embodiment, the data service view includes a predictive view, such as predictive view  216 , which when executed wraps execution of a predictive analytics module. In one embodiment, the predictive analytics module executes within a database where the data being analyzed is located, eliminating unnecessary data marshaling and remoting overhead. 
         [0033]    At block  608 , at least one piece of metadata associated with the selected type of predictive analytics is received. In another embodiment, metadata associated with the template is obtained from a configuration file, e.g., configuration data  312 , directly from the configuration file or from service and annotation URLs contained within the configuration file. Additionally or alternatively, metadata may be retrieved from configuration tables in data repository  116 . 
         [0034]    At block  610 , a data result is received. In one embodiment, the received data results include the result of executing the data service view, and conforms to the result data schema. 
         [0035]    At block  612 , the received result data and the received metadata are used to generate an interactive user interface displaying the results of executing the predictive analytics on the selected data set. 
         [0036]    At block  614 , the process  600  ends.