Class SimulationAction<T extends Help>

Object
Action
SimulationAction<T>
All Implemented Interfaces:
Help

public class SimulationAction<T extends Help> extends Action
This action starts calculation of selected Simulation. It's a programmatic version of the same action available in UI. As such it allows user to schedule the action in calculation flow formula.

Obtain it with CalculationFlowActionBuilder.addSimulationAction(String). The action calculates the Simulation that has this label. It starts the job only when the logic calls setCalculate(true). If no Simulation matches the label, no job starts and the Calculation Flow does not report an error.

Example:


 actionBuilder.addSimulationAction('Simulation 1')
     .setPriority(5)
     .setCalculate(true)
 
See Also:
  • Constructor Details

    • SimulationAction

      public SimulationAction(T backLink, Invocations<MethodInvocationRecord> invocations, String simulationLabel)
      Not intended for public use. An action created with this constructor is not added to the Calculation Flow, so it never runs. Use actionBuilder.addSimulationAction() instead.
      See Also:
  • Method Details

    • setCalculate

      public SimulationAction<T> setCalculate(Boolean calculate)
      Whether the action is valid and should be triggered or not.
      Parameters:
      calculate -
      • true - calculation of the Simulation is started as background process
      • false - calculation of the Simulation is NOT started at all
      Returns:
      this action, for further configuration
    • setPriority

      public SimulationAction<T> setPriority(int priority)
      Sets the priority of the calculation job that this action starts. A value outside the range from 0 to 9 is replaced with 0.
      Parameters:
      priority - Default is 0 (lowest user-definable priority). Max value is 9.
      Returns:
      this action, for further configuration
    • setDistributedCalculationThreshold

      public SimulationAction<T> setDistributedCalculationThreshold(int threshold)
      Sets a job-individual threshold to start a distributed calculation. Please note: Any values below 1000 may very well be counter-productive and make the job slower!

      If you do not set it, or set 0, the job uses the threshold of the partition.

      Parameters:
      threshold - The number of items that need to be part of the job in order to execute it in distributed mode.
      Returns:
      this action, for further configuration
    • back

      public T back()
      Returns the builder that added this action, so that the logic can add the next action in the same chain.
      Returns:
      the actionBuilder that added this action
      See Also:
    • setNextJobs

      public SimulationAction<T> setNextJobs(List<ChainedJobInfo> jobs)
      Defines subsequent follow-on jobs. A next job starts when the calculation job of this action has finished. If that job fails, a next job starts only when its executeOnError is true. Each next job can have next jobs of its own.

      Example:

      
       import net.pricefx.common.dto.ChainedJobInfo
      
       def nextJob = new ChainedJobInfo()
       nextJob.setTargetObject('38.CFS')
       nextJob.setExecuteOnError(false)
      
       actionBuilder.addSimulationAction('Simulation 1')
           .setNextJobs([nextJob])
           .setCalculate(true)
       
      Parameters:
      jobs - List of ChainedJobInfo objects
      Returns:
      this action, for further configuration
      See Also:
    • getObjectName

      public String getObjectName()
      Not intended for public use.
      Returns:
      the name of the builder that added this action, followed by ".SimulationAction"
    • getSimulationLabel

      public String getSimulationLabel()
      Gets the label of the Simulation that this action calculates.
      Returns:
      the label passed to CalculationFlowActionBuilder.addSimulationAction(String)
    • getCalculate

      public Boolean getCalculate()
      Gets whether this action starts the calculation of the Simulation.
      Returns:
      true after setCalculate(true), otherwise false
      See Also:
    • getPriority

      public int getPriority()
      Gets the priority set with setPriority(int).
      Returns:
      the priority, 0 if it was not set
    • getDistributedCalculationThreshold

      public int getDistributedCalculationThreshold()
      Gets the threshold set with setDistributedCalculationThreshold(int).
      Returns:
      the threshold, 0 if it was not set
    • getNextJobs

      public List<ChainedJobInfo> getNextJobs()
      Gets the follow-on jobs set with setNextJobs(List).
      Returns:
      the follow-on jobs
    • toString

      public String toString()
      Returns a text representation of this action for debugging.
      Overrides:
      toString in class Object
      Returns:
      a text that contains the label of the Simulation and the calculate flag of this action