Is there a way of using System Start Level with an implicite variable like we do with newState
?
Something like this:
when
SystemStartLevel changed
then
switch newState {
case 40:
case 60:
case 80:
case 100:
}
Is there a way of using System Start Level with an implicite variable like we do with newState
?
Something like this:
when
SystemStartLevel changed
then
switch newState {
case 40:
case 60:
case 80:
case 100:
}
some times ago i realized it with an item:
Number StartLevel "Start Level"
and this rule:
rule StartLevel40
when
System reached start level 40
then
logWarn("StartLevel40", "Rule for Event <System reached start level 40> started")
StartLevel.postUpdate(40)
end
rule StartLevel50
when
System reached start level 50
then
logWarn("StartLevel50", "Rule for Event <System reached start level 50> started")
if (StartLevel.state < 50) { StartLevel.postUpdate(50) }
else { logWarn("StartLevel50", "StartLevel decreased from " + StartLevel.state + " to 50") }
end
rule StartLevel70
when
System reached start level 70
then
logWarn("StartLevel70", "Rule for Event <System reached start level 70> started")
if (StartLevel.state < 70) { StartLevel.postUpdate(70) }
else { logWarn("StartLevel70", "StartLevel decreased from " + StartLevel.state + " to 70") }
end
rule StartLevel80
when
System reached start level 80
then
logWarn("StartLevel80", "Rule for Event <System reached start level 80> started")
if (StartLevel.state < 80) { StartLevel.postUpdate(80) }
else { logWarn("StartLevel80", "StartLevel decreased from " + StartLevel.state + " to 80") }
end
rule StartLevel100
when
System reached start level 100
then
logWarn("StartLevel100", "Rule for Event <System reached start level 100> started")
if (StartLevel.state < 100) { StartLevel.postUpdate(100) }
else { logWarn("StartLevel100", "StartLevel decreased from " + StartLevel.state + " to 100") }
end
i think there could be more elegant way to do this but for me it worked
This is exactly how I do it today and I am looking for a more elegant way so that I can manage all my System Start actions in one rule
Just for completeness, actually there IS an implicit variable available, guess who ,
startlevel
so that you can manage your startup from one rule
configuration: {}
triggers:
- id: "1"
configuration:
startlevel: 20
type: core.SystemStartlevelTrigger
- id: "2"
configuration:
startlevel: 40
type: core.SystemStartlevelTrigger
- id: "3"
configuration:
startlevel: 50
type: core.SystemStartlevelTrigger
- id: "4"
configuration:
startlevel: 70
type: core.SystemStartlevelTrigger
- id: "5"
configuration:
startlevel: 80
type: core.SystemStartlevelTrigger
- id: "6"
configuration:
startlevel: 100
type: core.SystemStartlevelTrigger
conditions: []
actions:
- inputs: {}
id: "7"
configuration:
type: application/javascript
script: |-
var strLevel = "";
switch (startlevel.toString()) {
case '20':
strLevel = "(System Started)";
break;
case '40':
strLevel = "(Rules are loaded)";
break;
case '50':
strLevel = "(Rules Engine active)";
break;
case '70':
strLevel = "(UI is active)";
break;
case '80':
strLevel = "(All things initialized)";
break;
case '100':
strLevel = "(Startup complete)";
}
console.log("System Start Level:",startlevel.toString(),strLevel);
items.vStartLevel.postUpdate(startlevel);
type: script.ScriptAction