When writing a Groovy rule, it’s important to capture the start year of the Scenario member so you can perform calculations appropriately based on the year definition.
Some people prefer to use the out-of-the-box settings on the configuration page, others use substitution variables to govern the open year and period, and some rely on Scenario member properties to drive the open year/period.
All of these methods are useful, so I’d like to write a simple post on how to obtain each of these values using Groovy.
- Obtain the Module variables from the Configuration settings
/* RTPS: {Scenario} */
String sScenario = rtps.Scenario.enteredValue
Member mbrScenario = operation.application.getDimension('Scenario').getMember(sScenario)
//Declare and assign variables for Start Year, Start Period, End Year, and End Period
String ScenarioStartYear = TemporaryInternalMethods.getModuleStartYear("WORKFORCE", sScenario)
String ScenarioEndYear = TemporaryInternalMethods.getModuleEndYear("WORKFORCE", sScenario)
String ScenarioStartPeriod = TemporaryInternalMethods.getModuleStartPeriod("WORKFORCE", sScenario)
String ScenarioEndPeriod = TemporaryInternalMethods.getModuleEndPeriod("WORKFORCE", sScenario)
//Print results
println "Scenario Start Year and Start Period : " + ScenarioStartYear + " - " + ScenarioStartPeriod
println "Scenario End Year and End Period : " + ScenarioEndYear + " - " + ScenarioEndPeriod

2. Obtain a value from Substitution variables
String vPlanStartYear = operation.application.getSubstitutionVariableValue("PlanStartYr")
println "Plan Start Year : " + vPlanStartYear
3. Obtain member properties from a scenario member
/* RTPS: {Scenario} */
String sScenario = rtps.Scenario.enteredValue
//Declare and assign variables for Start Year and Start Period
Member mbrScenario = operation.application.getDimension('Scenario').getMember(sScenario)
def ScenarioStartYear = mbrScenario.toMap()["Start Year"].toString()
def ScenarioStartPeriod = mbrScenario.toMap()["Start Period"].toString()
//If end year is not defined then you can always calculate the end year
def NextYear = (ScenarioStartYear[2..3] as int) + 1
def ScenarioEndYear = "FY" + NextYear
def ScenarioEndPeriod = mbrScenario.toMap()["End Period"].toString()
//Print results
println "Scenario Start Year and Start Period : " + ScenarioStartYear + " - " + ScenarioStartPeriod
println "Scenario End Year and End Period : " + ScenarioEndYear + " - " + ScenarioEndPeriod

You can pretty much call any member properties once you used .getMember()
I hope this is helpful! 🙂
Leave a comment