...
In a Model Class, the definition
field is contains a JSON document that contains has three main root elements: calculations
, steps
and evaluations
.
...
Example:
Code Block | ||
---|---|---|
| ||
{ "definition": { "calculations": [ { "name": "calc1", "type": "formula", "formulaName": "POAI_Test_Calc1" }, { "name": "seq", "type": "sequence", "calculations": [ "calc2", "calc3" ] }, { "name": "calc2", "type": "formula", "formulaName": "POAI_Test_Calc2" }, { "name": "calc3", "type": "formula", "formulaName": "POAI_Test_Calc3" }, { "name": "calc4", "type": "parallel", "formulaName": "POAI_Test_ParallelCalc" } ] } } |
Fields:
name* – Name of the Calculation, unique within this Model Class.
type* – Accepted values:
formula
– Simple calculation, all actions in the provided logic are done in a sequential order.parallel
– Parallel calculation. The calculations done by the logic can be split into more parts (called Items) and the calculation of those Items will be done in parallel.sequence
– This calculation does not have a logic, it is only reference to a list of other calculations, which should be executed one by one.
formulaName* – Unique name of a Logic. Used only for
formula
andparallel
types.for
formula
type - the logic must be of naturemodel_calculation
. See Model Calculation Logic .for
parallel
type - the logic must be of naturemodel_parallel_calculation
. See Model Parallel Calculation Logic .
sequence* – List of Calculation names defined in this Model Class. Used only for
sequence
type.
...
Step (steps
)
A list of steps as defined by the following fields.
Fields
name* – Name of the step, unique in the Model Class.
label – Human readable name of the step, shown in the UI, it defaults to
name
if not specified.description – Description of the step, shown in the UI.
calculation – Name of the calculation associated to this step, optional.
tabs – List of tabs as defined below.
Tabs
A list of tabs as defined by the following fields.
Common Fields
name* – Name of the tab, unique in the step.
label – Human readable name of the tab, shown in the UI, it defaults to
name
if not specified.type* – Accepted values:
dashboard
– The content of the tab will be rendered as a dashboard, i.e. input fields on left side, and portlets on the right side.simple
– The content of the tab will show the inputs generated by the logic on the left, and on the right side there will be results from the visible elements NOT as portlets, but rather one after another, as a simple list of values (e.g. similar to quote item calculation results).configurator
– The content of the tab will be rendered as the Configurator form, i.e. as a list of various input fields, whose values typically have dynamic dependencies.filtertree
– The content of the tab will be rendered as a tree (used for example to visualize the Segmentation Tree in the Negotiation Guidance Accelerator), and when you select/click one node, it will show details of the node on the right side, visualized as calculation results (e.g. similar to quote item calculation results).
Dashboard Tab Fields
formulaName* – Unique name of an existing Formula of nature
model_evaluation
, see also Model Evaluation Logic .
Simple Tab Fields
formulaName* – Unique name of an existing Formula of nature
model_evaluation
, see also Model Evaluation Logic .
Configurator Tab Fields
formulaName* – Unique name of an existing Configurator Formula of nature
model_evaluation
, see also Model Evaluation Configurator Logic and Interactive Forms - Configurators
Filtertree Tab Fields
treeName* – Name of the tree to be displayed in the tab. It is used to fetch the tree from the backend.
formulaName* – Unique name of an existing Formula of nature
model_evaluation
to be evaluated when a node of the tree is selected (when the user clicks the node of the tree), see also Model Evaluation Logic.selectedNodeIdsInputName* – Name of the input passed to the evaluation formula, containing the array of selected node ID.
Steps and their Calculations, Tabs and their Evaluation Logics.
Example
Code Block | ||
---|---|---|
| ||
{ "definition": { "steps": [ { "name": "step1", "label": "First Step", "description": "This step has 1 calculation and 1 tab.", "calculation": "calc1", "tabs": [ { "name": "tab1", "label": "First Tab", "type": "dashboard", "formulaName": "POAI_Test_Dashboard1" } ] }, { "name": "step2", "label": "Second Step", "description": "This step has 1 sequence calculation and 3 tabs.", "calculation": "seq", "tabs": [ { "name": "tab1", "label": "First Tab", "type": "simple", "formulaName": "POAI_Test_Dashboard2" }, { "name": "tab2", "label": "Configurator Tab", "type": "configurator", "formulaName": "POAI_Test_Configurator" }, { "name": "tab3", "label": "Visual Tree", "type": "filtertree", "treeName": "Segments", "formulaName": "POAI_Test_FilterTreeNodeEval", "selectedNodeIdsInputName": "selectedNodeIds" } ] } ] } } |
Evaluations (evaluations
)
These standalone evaluations (their logics) are not used/linked/referenced directly by the tabs, but can be called from another logic when they need to access model results from outside of the model itself, for example in another module (e.g. from Quotes).
Info |
---|
See Query Optimization Engine Results to execute an evaluation from another logic. |
Each evaluation in the list is defined by the following fields:
name* – Name of the evaluation, unique in the Model Class.
formulaName* – Unique name of an existing Formula of nature
model_evaluation
, see also Model Evaluation Logic .
...
} |
Each Step has following fields:
name* – Name of the step, unique in the Model Class.
label – Human readable name of the step, shown in the UI, it defaults to
name
if not specified.description – Description of the step, shown in the UI.
calculation – Name of the calculation associated to this step, optional.
tabs – List of Tabs as defined below.
Each Tab has following fields:
name* – Name of the tab, unique in the step.
label – Human readable name of the Tab, shown in the user interface. It defaults to
name
if not specified.type* – Determines, how the Tab will present the content to the user.
dashboard
– The content of the tab will be rendered as a dashboard, i.e. input fields on left side, and portlets on the right side.simple
– The content of the tab will show the inputs generated by the logic on the left, and on the right side there will be results from the visible elements NOT as portlets, but rather one after another, as a simple list of values (e.g. similar to quote item calculation results).configurator
– The content of the tab will be rendered as the Configurator form, i.e. as a list of various input fields, whose values typically have dynamic dependencies.filtertree
– The content of the tab will be rendered as a tree (used for example to visualize the Segmentation Tree in the Negotiation Guidance Accelerator), and when you select/click one node, it will show details of the node on the right side, visualized as calculation results (e.g. similar to quote item calculation results).
formulaName* - unique name of an existing Logic. Depending on the field type (see above), the logic will serve different purpose, and it must be of different nature.
for dashboard type - it must be Model Evaluation Logic, which is expected to return input fields (filters) and content for portlets
for simple type - it must be Model Evaluation Logic, which is expected to return mostly simple types of values
for configurator type - it must be Model Evaluation Configurator Logic, which is expected to return the definition of form sections with input fields
for filtertree type - it must be Model Evaluation Logic. It will be used at the moment, when the user clicks on the node of the tree. So the logic is expected to return various detailed information about the selected node.
treeName* (only for filtertree type) – Name of the tree to be displayed in the Tab. The tree is expected to be stored in the model.
selectedNodeIdsInputName* (only for filtertree type) – Name of the input parameter passed to the evaluation logic, containing the list of selected node IDs.
Evaluation (evaluations
)
This is used mostly for integration of the model with other modules. When other module (e.g. Quoting) needs to access model results, it can either read the model data tables directly, or rather call the Evaluation to provide the data in certain way. So in a way, you can think about it as an API for reading the model.
Note, that these Evaluations are not the same, and the evaluations used to provide content for Tabs.
Example:
Code Block | ||
---|---|---|
| ||
{ "definition": { "evaluations": [ { "name": "query_results", "formulaName": "POAI_Test_QueryResults" } ] } } } |
Each evaluation has following fields:
name* – Name of the evaluation, unique in the Model Class.
formulaName* – Unique name of an existing Logic of nature
model_evaluation
, see also Model Evaluation Logic .
Info |
---|
See Query Optimization Engine Results to execute an evaluation from another logic. |