haiko hat geschrieben:Jetzt hab ich auch eine Gegenfrage: Wie ruft man ein Script auf? Gibt es da irgendwo eine Anleitung? Müssen die Skripte in dem scripts-Ordner liegen?
Anleitung... sagen wir mal so: irgendwo steht das sicherlich... Der Aufruf lautet call(„scriptname“) [oder war es callScript?] wobei das Script in einer einzelnen Datei im scripts-Verzeichnis liegt. Endung, soweit ich mich erinnere ist .script
Sind die Skripte ebenfalls in DSL geschrieben? Oder welche Sprache nutzt man üblicherweise da?
Es ist die Rules DSL, aber nur der Block zwischen then und end (ohne die beiden Schlüsselworte)
Das Blöde dabei: Man kann keine Parameter übergeben (man könnte natürlich die Parameter vorher in ein Item retten und das Script mit Verzögerung aufrufen)
Zu Deiner Frage: ja, ich würde gerne meinen Code etwas besser strukturieren. Ich bin das einfach so gewohnt und finde es dann auch les- und wartbarer. Ich geb zu, ich bin ein Java-Freak erster Stunde und gewohnt in Klassen und Methoden zu denken. Ich bekomme Schnappatmung, wenn eine Methode mehr als 20 Zeilen hat. Und in meiner Rule (die nacheinander vier Server abfragt und Kenndaten sammelt) ist viel duplizierter Code. Das heißt nicht, dass ich etwas gegen die DSL hätte. Im Gegenteil. Sie tut genau, was sie soll, ist schlank und leicht verständlich. Aber so was wie einen eleganten Funktionsaufruf hätten sie wirklich spendieren können.
Ja, Funktionen wären schon schön gewesen
Ich denke darüber nach, ob ich nicht die eine Rule in vier Rules aufteilen soll. Für jeden Server eine. Ich glaube das ist die eleganteste Lösung.
Wenn die Abfragen quasi identisch sind, bis auf die abgearbeiteten Parameter, dann könnte es mit einer Rule getan sein. Der Trick besteht dann darin, die Items in Groups zu organisieren (Eingang wie Ausgang) und zueinander gehörende Items so zu benennen, dass sich der Name des einen aus dem Namen des anderen ableiten lässt. Dann kann man die Group verwenden, um jedes Element der Member anzufassen.
Beispiele müsste ich raus suchen, aber ich habe z.B. eine Rule, die sich um das Update von neun Raumtemperaturreglern kümmert.
Die jeweiligen Items liegen einfach in zwei Gruppen. Bräuchte ich weitere RTR, so könnte ich die Items einfach dazu packen und die Rule kümmerte sich auch um die neuen RTR, ohne eine weitere Zeile Code...
Danke für Deine Diskussionsbereitschaft!
Immer gerne
Gesendet von iPad mit Tapatalk