Abstract:
The present invention relates to a method, system, or computer application that allows to define a product configuration and using this configuration, manage entirely user experience related to this product, and in particular a method in where a rules engine containing directives, logic and constraints controls without the need of human intervention; the content, form and behavior of the user interface on a computational device. All elements and logic contained in the interface can be controlled directly by individual or multiple sets of rules in the rules engine. Rules can be added, edited and operated on by human or machine agents. Any change in the state of the rules is propagated to the user interface automatically and in real time.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims the benefit of priority to U.S. Provisional Application No. 61/973,297 filed Apr. 1, 2014, the contents of which are incorporated entire herein by reference. 
     
    
     FIELD OF THE INVENTION 
       [0002]    The present invention relates to a method, system, or computer application that allows to define a product configuration and using this configuration, manage entirely user experience related to this product, and in particular a method in where a rules engine containing directives, logic and constraints controls without the need of human intervention; the content, form and behavior of the user interface on a computational device. All elements and logic contained in the interface can be controlled directly by individual or multiple sets of rules in the rules engine. Rules can be added, edited and operated on by human or machine agents. Any change in the state of the rules is propagated to the user interface automatically and in real time. 
       BACKGROUND OF THE ART 
       [0003]    There are several state of the art applications which provide solutions to a) create a visual representation of a configurable product; b) generate a user interface UI based on user selected criteria or pre-determined criteria. Until now no solution has attempted to combine these characteristics and extend them to: 
         [0004]    a) dynamically generate and control the entire user interface and it&#39;s content and behaviors based on rules evaluation; 
         [0005]    b) update the rules and/or user experience in real time using human and/or machine agents and streams of big data being generated every nanosecond by the internet of things. 
         [0006]    c) or a combination of both of the above. (a+b). 
         [0007]    With current technologies when subject matter experts make changes to rules, they then need to communicate with the IT specialists (e.g. UX/UI designers, front end programmers) and request modifications to the user interface to support their changes. 
         [0008]    In the case of various personalization systems including CMS (content management systems) and banner ad serving systems, changes to only an element of the UX is made according to pre-determined criteria. 
       OBJECT OF THE INVENTION 
       [0009]    In order to provide a solution to the limitations of the systems of the prior art, the present invention provides a method that allows to configure digital experiences using several sources of information such as intelligent agents, remote services, etc., by means of a direct link between a dynamic rules engine and the total user interface, where the former controls the latter in real time. 
         [0010]    Some of the advantages of the invention are the following: 
         [0011]    Reducing the time to market of new products and services; 
         [0012]    Simplify the process of updating product, process and personalized UI data; 
         [0013]    Enabling more complex decision criteria to guide the user and information experience; 
         [0014]    Embed decision criteria with data from analytics or AI engines that are updating the rules engine in real time; 
         [0015]    Drive UX (user experience) behavior, content and form in real time; and 
         [0016]    Enhance and extend the capabilities of existing software development UI (user interface) tools such as HTML5, CSS3, j-Query or other JS frameworks. 
         [0017]    Enable the UX/UI to reflect the dynamic changes in the tsunami of big data being generated every nano second by the internet of things that the UI is supposed to represent. 
       SUMMARY OF THE INVENTION 
       [0018]    The present provides a method that allows to configure digital experiences using several sources of information as intelligent agents, remote services, etc. In particular, the invention is a method, system or computer application where a rules engine containing directives, logic and constraints controls without the need of human intervention; the content, form and behavior of the user interface (in other words controlling the entire user experience on said interface) on a computational device. All elements and logic contained in the interface can be controlled directly by individual or multiple sets of rules in the rules engine. Rules can be added, edited and operated on by human or machine agents. Any change in the state of the rules is propagated to the user interface automatically and in real time. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0019]      FIG. 1  shows a general diagram of the operational link between the components of the method object of the present invention; 
           [0020]      FIG. 2  shows a data model for the database implementation according to the present invention; and 
           [0021]      FIG. 3  shows a flowchart of the method of the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0022]    According to the present invention, the Digital Experience Configurator is a process, method, and software that allows a user to model entities and establish rules that govern their behavior. The following tables summarize general characteristics of the method&#39;s components. 
         [0000]    
       
         
               
               
             
           
               
                 TABLE I 
               
               
                   
               
             
             
               
                 RulesNet 
                 Evaluates the logic and provides product, process, user and 
               
               
                   
                 options information. This is implemented by means of a 
               
               
                   
                 software application executed in a computer, that has means 
               
               
                   
                 of communication with the method&#39;s other components. 
               
               
                   
                 This is modeled as shown in Table II. 
               
               
                 RulesNet 
                 Where the rules information persists and is updated by the 
               
               
                 Database 
                 rules engine. This is implemented by any existing database 
               
               
                   
                 application. 
               
               
                 RulesNet 
                 Allows human users and machine to machine interfaces to 
               
               
                 admin. UI 
                 create, perform operations on and maintain the rules 
               
               
                   
                 engine. Can be implemented with a computer application 
               
               
                   
                 that provides access via a browser or via an application 
               
               
                   
                 programming interface. 
               
               
                 Touchpoint 
                 Process that a) translates the directives from the rules 
               
               
                 Generator 
                 engine into a message that is understood by the Touchpoint 
               
               
                   
                 Engine application which is building the user interface and 
               
               
                   
                 b) directs user input back to the rules engine. Can be 
               
               
                   
                 implemented as a software application for each type of 
               
               
                   
                 device or browser (Pc, Mac, Chrome, iOS, Android, etc). 
               
               
                 Touchpoint 
                 Interprets the rules from within the client side browser or 
               
               
                 Engine 
                 device to generate the UI/UX. Can be implemented as part 
               
               
                   
                 of the touchpoint generator or as in independent software 
               
               
                   
                 application. 
               
               
                   
               
             
          
         
       
     
         [0000]    
       
         
               
             
               
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
           
               
                 TABLE II 
               
               
                   
               
             
             
               
                 Logical Model of RulesNet Entities and Behaviour 
               
             
          
           
               
                   
                 Categories of Objects. (e.g. clothing) 
               
               
                   
                 Objects (e.g. shirts) 
               
             
          
           
               
                   
                 Components: Part of an entity that has clear purpose 
               
               
                   
                 (e.g neck, fabric) 
               
               
                   
                 Domains: characteristics and their values that form a 
               
               
                   
                 component. (e.g: fabric type (jersey, silk, cotton), 
               
               
                   
                 fabric color (blue, white, green)) 
               
             
          
           
               
                 Constraints can be: 
               
             
          
           
               
                   
                 Intra-object: within an object. (e.g fabric.type = silk and 
               
               
                   
                 fabric.color are combinations) 
               
               
                   
                 Inter-object: between objects. (e.g fabric.type = silk and 
               
               
                   
                 neck.type = v_neck are combinations with different 
               
               
                   
                 components) 
               
             
          
           
               
                 Availability actions can be of: 
               
             
          
           
               
                   
                 Acceptance. (e.g. if fabric.type = silk and fabric.color = red 
               
               
                   
                 combination is a valid option) 
               
               
                   
                 Rejection. (e.g. if fabric.type = silk and fabric.color = red 
               
               
                   
                 combination is not valid) 
               
               
                   
                 Acceptance depending on further evaluation. 
               
               
                   
                 Rejection depending on further evaluation. 
               
             
          
           
               
                 Rules can be: 
               
             
          
           
               
                   
                 Inter Domain Restriction. (e.g. on fabric.type = silk remove 
               
               
                   
                 fabric.color =&gt; [red, blue]) 
               
               
                   
                 Inter Domain Default Object. (e.g. on neck.color = white then 
               
               
                   
                 set fabric.type = cotton) 
               
               
                   
                 Inter Domain Non-Valued Restriction. (e.g. on neck.color 
               
               
                   
                 change execute predicate(myPredicate) on fabric.color) 
               
               
                   
                 where myPredicate. expression = 
               
               
                   
                 javascript.evalAndApply(‘fabric.color = 
               
               
                   
                 external.agent.getTrendyColorByBaseAndCustomer(neck.color, 
               
               
                   
                 customerEmail))’) 
               
             
          
           
               
                 Metadata: 
               
             
          
           
               
                   
                 Each element within the system can be associated with metadata that 
               
               
                   
                 will be used to further model the user experience or complete the 
               
               
                   
                 involved transaction or exchange. 
               
               
                   
                   
               
             
          
         
       
     
         [0023]      FIGS. 1 and 2  illustrate the methods covered by this invention as explained in the following detail. 
         [0024]    The interaction flow is configured via two distinct operations:
       a. Entity Configuration: consists in defining the entity as an association of components, domains, values, rules and availabilities.   b. Digital Experience Configuration: the way the product will be presented to the user. Configuration options, input restrictions and all aspects of user interaction.       
 
       A. Product Configuration 
       [0027]    To create and configure an entity, the user follows this sequence of operations. These operations are contained within the component RulesNet Admin UI, as mentioned in Table I. (e.g. This is to be implemented as a software application providing access from a console for a human to input the required data or providing access via an application programming interface API) to an external machine agent.)
       1) Create an Entity   2) Assign a entity Name and entity Description   3) Create Domains, which are one way attributes of the component(s). These domains may be shared by more than one components. A domain represents all available values to this attribute. A domain maybe qualitative or quantitative. In the first, qualitative descriptors are used to represent the domain, in the second continuous values are presented as discreet ranges and are used to represent the domain. This facilitates the dynamic domain interactions.
           If user selects a qualitative domain value it must enter a value name, canonical name and the value that represents the current quality.   If user selects a quantitative value, the method allows to define this continue value as it as a ranged value. The user must enter value name, ranks, step and type (decimal/natural) of quantitative value.   
           4) Create component. A component is associated to an entity by entering the component name. A component is atomic, real and measurable. e.g. wheels of a bike.   5) Associate the domain(s): Domain and domain values must be added to this association. Users may add a domain value element constraint that are not allowed on certain component/domain association. This is the case of component/domain/value contradictions as quantitative values (as ranges) that may collision between themselves and produce a non atomic domain value.   6) The last step of this process is to associate the component with the desired product/services. This is done by creating a link between both.       
 
       B. Digital Experience Configuration 
       [0036]    This stage of the method is to define the dynamic entity view. The dynamic view is the aspect of this method that allows to model the behavior of the universal entity definition. The model is created by following a  2  step process:
       1. Constrain the universe of possible entity configurations   2. Create and add rules to control entity behavior   3. [optional] Create and add business custom metadata.       
 
       Creating the Universe of Possible Entity Configurations 
       [0040]    An availability is a valid combination of component/domains/values. They are grouped/organized in clusters within an entity. To create one, users have to add it to entity availability snapshots. 
         [0041]    Entities can have multiple availability snapshots according that respond to different business rules/constraints. e.g. entity behaviors may change on a given date or given conditions. 
         [0042]    Availabilities are created by defining the following:
       1) Availability scope (component/intercomponent),   2) Associated component(s) (one for scope component, many to intercomponent)   3) Default action   4) Evaluation priority       
 
         [0047]    Next, user must add availability items selecting a combination of domain/values 3  and the behavior that touchpoints engine should follow when this combination is selected. The allowed behaviors for availabilities or availability items are:
       Reject: Selected combination must be rejected   Accept: Selected combination must be accepted   Reject if cant eval next: Combination should be rejected in case of not exist other availability that fits in this combination. (this may happen on inter component availability definitions that may collision with another availability definitions. so, the method forces to indicate the evaluation priority and the first combination found may block (or not) the evaluation of the next element (if it exists)       
 
         [0051]    Accept if cant eval next: sames as previous, but the combination is accepted 
       Create and Add Rules to Control Entity Behavior 
       [0052]    A rule is an extension of an availability, that allows to create another kind of behaviors as default value set according to selected values or applying constraints and predicates. Rules also be associated to a entity availability snapshot. 
         [0053]    This method allows organizing entity rules into a tree structure. 
         [0054]    To create a rule users must enter:
       1) name.   2) acceptance (addition or subtraction).   3) priority.   4) type. (defines the UI behavior)
           Type 1=Inter domain default object (IDDO): Represents default value that a domain (A) is going to take in case of other domain (B) change. where A!=B.)   Type 2=Inter domain restriction (IDR): Constrains (according to rule acceptance) values between domain(s). where a selection change on domain (A) using values (VA1, VA2 . . . VAx) must add (or sub) in domain (B) the following values (VB1, VB2 . . . VBy). where A!=B.   Type 3=Inter domain non valued restriction (IDNVR): similar to IDR but a when a domain change occurs a predicate is applied on the domain (B) values.   
           5) Select the component/domain/[values] that rule is applied to.   6) Select a predicate (see following explanation)       
 
       Predicates 
       [0064]    Predicates are expressions that can be executed on domains. These expressions are described in proto-languages as javascript and is a mechanism to define business rules and access external sources of information. 
         [0065]    Per method specification, the predicate expressions must be executed on the touchpoints engine. If the destination platform does not support javascript-like expressions, touchpoints engine is going to use predicate names to execute those behaviors. 
       Create and Add Business Custom Metadata 
       [0066]    The method also allows to define variable data (structure free) associated to specific business logic. This information can be attached to any data structure shown on  FIG. 2 . An external agent (human or machine) can update associated metadata (e.g. inventory on hand) within the availability item structure. This change may trigger execution (according to rules and predicates) business behaviors on the UI. (e.g if inventory on hand is zero, switch availability item from accept to reject; the item it will not be longer available to be selected on configuration) 
         [0067]      3 The current definition of component/domain/value definition is a NP-Complete problem. The order or complexity of the solution is about 
         [0000]      ( O )=( O ̂( Cr*Dr*Vr )). wherein:
 
         [0068]    Cr is the component vector range, 
         [0069]    Dr is the associated range of domain vector and 
         [0070]    Vr is the associated range of domain value vector. 
         [0071]    An availability uses an accept or a reject criteria, therefore the equation can be written as (O)=(Ô(Cr*Dr*Vr))/2 where the division by two is related to amount of information (theory of information) when rejects or accepts the availability. So the worst case occurs when the size of availability vector (using acceptance) is equals to the reflected (or negative) availability vector (using rejection). Av(ex,accept)˜Ac(ex,reject). 
       Generating the Digital Experience 
       [0072]    The method workflow shown on  FIG. 3  explains how method components interacts between themselves to generate a UI/UX that can be controlled using declared static and dynamic views. 
         [0073]    The diagram from  FIG. 3  is a UML sequence artifact. is using trails to define sections and scopes. the sections are identified as: AdminUI, Rules Database, Rules Engine, Touchpoint Generador, Touchpoint Engine and Endpoint 
         [0074]    Initially the workflow needs a previous definition of entities inside administration UI  1 . 1  (primarily data structures as domains/values, components, entities availability, entities rules). The business rules are stored in rulesnet database  1 . 2 . This database is a abstract storage implementation where its possible to implements different database engines (as RDBMS (sql) or Document based (no-sql)) without expensive business change. 
         [0075]    When an endpoint requests a new configuration  2 . 1 , the engine takes cares of authorization and authentication in the remote services where rules engine is running  2 . 2  and gets all entity data from a single publication (static and dynamic views with (or not) embedded metadata)  2 . 3  then the engine evaluates/executes all rules that may update the dynamic view output  2 . 4 . the output  2 . 5  of rulesnet (static and dynamic view) is used to generate a correct UX/UI associated to broker platform (web/mobile/etc). 
         [0076]    The UI its rendered in endpoint platform  2 . 7 . the user may see/use the generated UI at the end of a transaction  2 . 8  it represents that the user has selected a valid entity configuration (according to static/dynamic view). after that the rule engine will validate the selected configuration  2 . 9 . with a valid configuration the broker can continue with its use case. 
         [0077]    The mechanisms that control the endpoint platform  2 . 7  have been extensively explained in  FIG. 1  and  FIG. 2 .