Ad Widget

Collapse

Снова о зависимостях триггеров

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Kryol
    Member
    • Feb 2011
    • 70

    #1

    Снова о зависимостях триггеров

    Задача классическая.
    Имеем два триггера:
    A - проверка доступности шлюза
    B - проверка доступности узла за шлюзом.

    Для каждого из триггеров настроены действия - выполнение удаленных команд. При срабытывании триггера и его востановлении выполняются разные скрипты. Причем скрипты для A и B отличаются несущественно. Для простоты можно вначале считать, что они идентичные.

    Во избежание ложных срабатываний каждый триггер срабатывает по пяти последовательным значениям. К примеру: пять нулей - ПРОБЛЕМА, пять единиц - ОК.

    Настроена зависимость B от A.

    Поигравшись с соотношением id триггеров все это удалось заставить заработать за исключением одного.

    Если, к примеру триггер A переключается в ОК, а проблема с B еще остается (или возникла в данный момент), то триггер B переходит в состояние ПРОБЛЕМА и одновременно запускаются два скрипта с противоположными действиями.

    Иными словами, действия при восстановлении А должны зависеть от изменения состояния зависимого триггера. Т.е. если в момент перехода А в ОК В переходит в ПРОБЛЕМУ, то одно действие, если нет, то - другое.

    Возможно ли такое?

    Настроить выполнения действия для случая когда A=OK, а В=ПРОБЛЕМА не удалось.
  • dima_dm
    Senior Member
    • Dec 2009
    • 2697

    #2
    Originally posted by kryol
    Настроить выполнения действия для случая когда a=ok, а В=ПРОБЛЕМА не удалось.
    А если написать сложный триггер через условие & или |, и на него настроить действие?

    Comment

    • Kryol
      Member
      • Feb 2011
      • 70

      #3
      Сейчас триггер имеет вид
      Code:
      ({TRIGGER.VALUE}=0&{Template Test:A.count(#5,0,"eq")}>4) | ({TRIGGER.VALUE}=1&{Template Test:A.count(#5,0,"ne")}<5)
      Здесь значение A=0 указывает на проблему.

      При {TRIGGER.VALUE}=1 в зависимости от состояния триггера B (можно попробовать контролировать и значение item B) необходимо выполнять различные действия.
      Т. е. необходимы два триггера. В таком случае при {TRIGGER.VALUE}=0 действие будет выполняться дважды (по одному разу для каждого из триггеров.
      Или я неправ?
      Last edited by Kryol; 21-01-2013, 18:00.

      Comment

      • dima_dm
        Senior Member
        • Dec 2009
        • 2697

        #4
        Не так.
        Условие {trigger.value}=0 относиться ко всему текущему триггеру, а не к части выражения. Если вам нужно
        Originally posted by kryol
        действия при восстановлении А должны зависеть от изменения состояния зависимого триггера. Т.е. если в момент перехода А в ОК В переходит в ПРОБЛЕМУ, то одно действие, если нет, то - другое.
        В условии триггера должны быть условия на хосты А и b через &.

        Comment

        • Kryol
          Member
          • Feb 2011
          • 70

          #5
          Проблема в том, что триггер для А должен срабатывать в любом случае, но должны выполняться различные действия в зависимости от состояния В.

          Comment

          • dima_dm
            Senior Member
            • Dec 2009
            • 2697

            #6
            Originally posted by Kryol
            Проблема в том, что триггер для А должен срабатывать в любом случае, но должны выполняться различные действия в зависимости от состояния В.
            Ну и в чём проблема написать 2 тригера?
            A=False & B=OK
            A=False & B=False

            Comment

            • Kryol
              Member
              • Feb 2011
              • 70

              #7
              Originally posted by dima_dm
              Ну и в чём проблема написать 2 тригера?
              A=False & B=OK
              A=False & B=False
              В случае A=False сработают оба. А переключится обратно только тот, для которого выполнено условие для B.

              Не так?

              Comment

              • dima_dm
                Senior Member
                • Dec 2009
                • 2697

                #8
                Нет, там же условие &, т.е. И. Т.е. должно выполниться и первое и второе условие, т.е. сработает только один триггер в зависимости от состояния b.

                Comment

                • Kryol
                  Member
                  • Feb 2011
                  • 70

                  #9
                  Sorry. Неправильно сформулировал.

                  В моем случае A=False не зависит от состояния В. А вот возврат А в ОК должен зависеть от состояния В.

                  Т.е. имелось в виду, что если триггеры будут иметь вид:
                  Code:
                  ({TRIGGER.VALUE}=0&{Template Test:A.count(#5,0,"eq")}>4) | ({TRIGGER.VALUE}=1&({Template Test:A.count(#5,0,"ne")}<5)&{Template Test:B.last(0)=0})
                  ({TRIGGER.VALUE}=0&{Template Test:A.count(#5,0,"eq")}>4) | ({TRIGGER.VALUE}=1&({Template Test:A.count(#5,0,"ne")}<5)&{Template Test:B.last(0)>0})
                  то сработают оба, и один из них никогда не восстановится,

                  а если

                  Code:
                  (({TRIGGER.VALUE}=0&{Template Test:A.count(#5,0,"eq")}>4) | ({TRIGGER.VALUE}=1&({Template Test:A.count(#5,0,"ne")}<5))&{Template Test:B.last(0)=0}
                  (({TRIGGER.VALUE}=0&{Template Test:A.count(#5,0,"eq")}>4) | ({TRIGGER.VALUE}=1&({Template Test:A.count(#5,0,"ne")}<5))&{Template Test:B.last(0)>0}
                  то второй никогда не сработает.
                  Last edited by Kryol; 22-01-2013, 11:44.

                  Comment

                  • Kryol
                    Member
                    • Feb 2011
                    • 70

                    #10
                    Можно добавить в триггер условие для В, которое выполняется всегда, а значение В передавать скрипту в качестве параметра.
                    Вопрос закрыт.

                    Comment

                    Working...