Ankündigung

Einklappen
Keine Ankündigung bisher.

Rules nur in bestimmten Zeitfenster ausführen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Rules nur in bestimmten Zeitfenster ausführen

    Hallo zusammen,

    ich möchte gerne, dass eine Rule nur in einem bestimmten Zeitfenster ausgeführt wird.

    Wie kann ich das in den IF Block der Rule einbauen? Wie lautet die Syntax?

    Viele Grüße
    Sascha Quast

    #2
    Du kannst das über einen Time cron lösen

    Code:
    rule "Meine Rule"
    
    when 
       Time cron "0 0-59 16-23 * * ?" 
    then
    Näheres zum Syntax findest du hier .
    Gruß

    Guido

    Kommentar


      #3
      Oh, Vorsicht! das ist ein Trigger, der die Rule in einem bestimmten Zeitraum minütlich ausführt. Ich denke, es geht eher darum:
      Code:
      rule "Test Rule"
      when
          Item MyItem received command
      then
          if(now.getMinuteOfDay >= 6*60 && now.getMinuteOfDay < 8*60 + 15) {
              logInfo("test","MyItem hat Test Rule getriggert und es ist zwischen 6:00:00 Uhr und 8:15:00 Uhr.")
          }
      end
      Man kann auch die Funktionen .isAfter und .isBefore verwenden, die dann als Argument ein DateTime Objekt erwarten.

      Man kann sich jedes Detail des Datums separat ausgeben lassen, also z.B. mit .getDayOfWeek den Wochentag (von 1-7, 1=Montag), oder auch .getWeekOfWeekyear (Kalenderwoche nach ISO8601). Wenn es sekundengenau sein soll, kann man auch .getSecondOfDay verwenden
      Wenn die Grenzen auf vollen Stunden liegen, geht natürlich auch .getHourOfDay. Man muss aber höllisch aufpassen, wenn man .getHourOfDay und .getMinuteOfHour und vielleicht gar noch .getSecondOfMinute kombinieren will, meist ist es da einfacher (siehe Beispielrule) entsprechend zu multiplizieren.

      Vollständige Liste der Funktionen: http://joda-time.sourceforge.net/api...tDateTime.html

      Kommentar

      Lädt...
      X