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"))
}
}
}