Class ModelCalculationFormulaContext.ForFormulaDeployment

    • Constructor Detail

      • ForFormulaDeployment

        public ForFormulaDeployment()
    • Method Detail

      • uniqueName

        public String uniqueName()
        Specified by:
        uniqueName in interface ModelFormulaContextReadOnly
        Returns:
        The unique name of this model
      • label

        public String label()
        Specified by:
        label in interface ModelFormulaContextReadOnly
        Returns:
        The label of this model
      • state

        public Map<String,​Object> state()
        Specified by:
        state in interface ModelFormulaContextReadOnly
        Returns:
        The state of this model
      • table

        public Table table​(String name)
        Specified by:
        table in interface ModelFormulaContextReadOnly
        Parameters:
        name - The table name in this model
        Returns:
        The existing model table or null if it doesn't exist
      • startJobTriggerCalculation

        public void startJobTriggerCalculation​(String imageName,
                                               String imageTag,
                                               String parameters,
                                               String calculationContext)
        Description copied from interface: net.pricefx.formulaengine.optimization.ModelFormulaContextReadWrite
        It is the responsibility of the caller to serialize parameters however they are required by the image.

        calculationContext should be unique per model formula calculation that triggers them.

        Multiple job trigger calculation in a given formula calculation will run in parallel.

        Specified by:
        startJobTriggerCalculation in interface ModelFormulaContextReadWrite
      • addTable

        public Table addTable​(String name,
                              Map<String,​Object> tableSpecs)
        Description copied from interface: net.pricefx.formulaengine.optimization.ModelFormulaContextReadWrite
        Add a table in the model. If the table already exists, it is replaced by this new table.

        A Map respecting the structure of DMTable, including:

        • label: the table label
        • fields: a List of Map respecting the structure of DMField, including name, label, type, format, key, dimension

        Sample code:

        
             model.addTable("RevenueByProduct", [
                     label: "Revenue By Product",
                     // the fields must respect DMField structure
                     fields: [
                         [ name:"productId", label:"Product ID", type:"TEXT", key:true],
                         [ name:"productGroup", label:"ProductGroup", type:"TEXT", dimension:true],
                         [ name:"revenue", label:"Revenue", type:"MONEY"],
                     ]
             ])
         
        Specified by:
        addTable in interface ModelFormulaContextReadWrite
        Parameters:
        name - The table name to be created in this model
        tableSpecs - The definition of the table to be created, see above.
        Returns:
        The created model table
      • loadTable

        public long loadTable​(Table table,
                              Query source,
                              boolean truncate)
        Description copied from interface: net.pricefx.formulaengine.optimization.ModelFormulaContextReadWrite
        Sample code:
        
             def ctx = api.getDatamartContext()
             def query = ctx.newQuery(ctx.getDataSource("txDS"))
                 .select("sku", "P")
                 .select("SUM(amount)", "R")
             def table = model.getTable('MyTable')
             def nbRowAdded = model.loadTable(table, query, false)
         
        Specified by:
        loadTable in interface ModelFormulaContextReadWrite
        Parameters:
        table - A table in this model
        source - The query to load into the table
        truncate - If the table should be truncated before loading
        Returns:
        The number of row added
      • loadTable

        public long loadTable​(Table table,
                              DMSqlQuery source,
                              boolean truncate)
        Description copied from interface: net.pricefx.formulaengine.optimization.ModelFormulaContextReadWrite
        Sample code:
        
             def ctx = api.getDatamartContext()
             def t1 = ctx.newQuery(ctx.getDataSource("txDS"))
                 .select("sku", "P")
                 .select("SUM(amount)", "R")
             def query = ctx.newSqlQuery()
             query.addSource(t1)
             query.setQuery('SELECT P, R::numeric as R FROM T1 ORDER BY P')
             def table = model.getTable('MyTable')
             def nbRowAdded = model.loadTable(table, query, false)
         
        Specified by:
        loadTable in interface ModelFormulaContextReadWrite
        Parameters:
        table - A table in this model
        source - The query to load into the table
        truncate - If the table should be truncated before loading
        Returns:
        The number of row added
      • truncateTable

        public void truncateTable​(Table table)
        Specified by:
        truncateTable in interface ModelFormulaContextReadWrite
        Parameters:
        table - A table in the model
      • dropTable

        public void dropTable​(Table table)
        Specified by:
        dropTable in interface ModelFormulaContextReadWrite
        Parameters:
        table - A table in the model