Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Model Evaluation Dashboard logic is used to build the page content of a Tab with type dashboard. It is used to allow user to enter input values, and to present them the results of the calculations in form of charts and tables.It is made to be evaluated synchronously, in the following use cases:

  1. To provide inputs and results to be presented to the user on a tab when the user is browsing the model and looking at various tabs (of the type simple or dashboard), or looking at details of a tree node (on the tab of the type filtertree).

  2. When a logic from another module (e.g. Quotes) needs to get data from a model, it can call the model’s evaluation (and pass parameters to it) which will call the evaluation logic to provide the information from the model.

  3. When Product Recommendation is configured for Quotes, it can use the Model’s Evaluation (and thus the evaluation logic) to retrieve the list of recommended products.

The evaluation logic characteristics:

  • It is evaluated synchronously – e.g. immediately when the user interacts with the UI

...

  • .

  • Its results are never persisted

...

  • .

  • Its inputs are saved with the model (if used while the user is browsing the model).

...

  • It can do anything read only related to the Model Object where

...

  • the logic is executed; including accessing previous steps inputs, previous calculations outputs, querying Model Tables, reading attachments, etc., via the model binding.

Configuration

The evaluation logic is referenced /used in the Model Class definition, in the formulaName property of the Tab, in the Model Class definition:

  • a tab (only for the types dashboard, simple and filtertree);

  • an evaluation.

Logic API

To ensure that this synchronous experience is always smooth and reactive for the user : , it is a good practice is to set the elementTimeout property of all the logic elements to 0.

  • Logic Nature: model_evaluation

  • Execution Types:

    • Syntax Check - Defines the input fields for the Tabof the logic. In case of tabs, they will be rendered on the page, but in case of evaluation, it will be used to receive the parameters passed from other logics.

    • Standard - Calculates and provides the results and builds content of the portlets (e.g., charts)

  • Information provided to the logic:

    • Syntax Check:

      • binding Binding variables:

        • model (of type see ModelEvaluationFormulaContext) - it includes Model tableTable, inputs from previous steps and outputs from previous calculations.

    • Standard:

      • binding Binding variables:

        • model (of type see ModelEvaluationFormulaContext) - it includes Model tableTable, inputs from previous steps and outputs from previous calculations.

        • input (Map)- Values

          1. When used for visualizations on a tab, it contains values of all inputs provided by the user in the input fields of the current

          Tab
          1. tab.

          2. When used in evaluation (from other module, via api.model().evaluate()), it contains the parameters values passed to the logic.

          3. When the evaluation is called by the Product Recommendation feature in Quotes, it will provide the following values:

            • input['categoryName'] – Specifies for which category the list of product recommendations should be returned. These categories are defined in the advanced property quoteProductRecommendationsConfig.

            • input['products'] – List of product IDs which are already present in the quote.

            • input['customers'] – List of customer IDs the quote is prepared for.

            • input['productFilter'] – Filter generated by Quote Product Picker Filter Logic, so that the evaluation can further filter the products and provide only those relevant to the user.

  • Expected logic execution outcome:

    • Syntax Check:

      • input Input field definitions placed in the logic’s logic context.

    • Standard

    • content of the portlets provided via values of the elements output. Any type of results that can be shown to the user, e.g., data, charts, data tables.

    • Critical Alert - will block the Continue button

      :

      1. When used for visualizations on a tab – Results and their formatting are provided via the output of the visible (with DisplayMode set) logic elements. The result value can be of almost any type:

        • Simple – String, BigDecimal, Map, List, …

        • Complex – Chart, ResultMatrix, Controller, …

        • Critical Alert – When used on a tab, it will block the Continue button.

      2. When used in evaluation (from other module, via api.model().evaluate()) – Results are provided via the output of the visible (with DisplayMode set) logic elements.

      3. When used by the Product Recommendation feature in Quotes:

        • One element must return a result of the type List<ItemRecommendation> (see api.newItemRecommendation()).

        • When a yellow, red, or critical alert is raised, it will be presented to the user on the Quote.