Model Logic Key Methods

Model Evaluation Logic Methods:

Include a Configurator:

Groovy
api.inlineConfigurator(“ConfiguratorName”, "LogicName")


Get an Input from the Configurator:

Groovy
input[“ConfiguratorName”][“inputName”]


Read tables:

Groovy
def query = api.getDatamartContext().newQuery(model.table(“tableName”), false)

Model Calculation Logic Methods:

Get an Input from the Configurator:

Groovy
def ConfiguratorName = model.inputs("stepName","tabName").getAt(“ConfiguratorName”)
input = ConfiguratorName[“inputName”]


Create Table:

Groovy
def dataTable = model.addTable(”TableName”, [
        label : “TableLabel”,
        fields: fieldsMapList,
])


Read Table:

Groovy
def query = api.getDatamartContext().newQuery(model.table(“tableName”), false)

 

Read Table with SQL:

Groovy
sql  = “
SELECT T1.*, T2.* FROM T1 LEFT JOIN T2 ON ...
”
def sqlQuery = dmCtx.newSqlQuery()
        .addSource(query1).addSource(query2).addSource(query3).….setQuery(sql)


Load Table:

Groovy
model.loadTable(dataTable, query, true)


Load Table with SQL:

Groovy
model.loadTable(dataTable, sqlQuery, true)


Load Table by Row:

Groovy
def dmCtx = api.datamartContext
def loader = dmCtx.newDataLoader(dataTable)
finalMapList.each {
    loader.addRow(it)
}
loader.flush()

Get the Output in the Same Calculation:

Groovy
Out[“ElementName”]


Get the Output of Another Calculation:

Groovy
model.outputs("StepName","CalculationName")[“ElementName”]


Model Parallel Calculation Logic Methods:

Add Items in the Init Phase:

model.addCalculationItem(“keyvalue”,itemMap)

 

Get Items in the Item Phase:

Groovy
def itemMap = model.calculationItem()
itemMap.key()
itemMap.inputs()

 

Add Items in the Item Phase:

Groovy
def  itemMapList = [[:]]

...

resultItemMap.put("itemMapList", itemMapList)
return resultItemMap

 

Retrieve Items in the Summary Phase:

Groovy
def items = model.calculationItems()
def calculationItemList = items.toList()
def finalMapList = []

calculationItemList.each { calculationItem ->
    if (calculationItem.status() == ModelParallelCalculationFormulaSummaryContext.CalculationItem.Status.CALCULATED) {
        if (calculationItem?.outputs()?.keySet().size() > 0) {
            def resultItemMap = calculationItem?.outputs()?.get("ItemElementName")
            finalMapList.addAll(resultItemMap.getAt("itemMapList"))
        }
    }
}