[РЕШЕНО] Состояния workflow и события rules.

Главные вкладки

Аватар пользователя Vitoriust Vitoriust 3 июня 2013 в 13:10

Есть нода с workflow. Нужно создать rules, который при смене состояния workflow создаёт ноду определённого типа контента, но это действие происходит только при одном определённом переходе, например с состояния А в Б, но не при переходе с Б в В или А в В.

Комментарии

Аватар пользователя Vitoriust Vitoriust 3 июня 2013 в 13:46

Ноды создаются, но при каждом изменении состояния. А надо только в одном случае. Проблема в создании условий.
____________
У нас есть 4 состояния workflow: А, Б, В, Г.

Нужно чтоб действие исполнялось только при перехаде с состояния А в Б и не реагировало на другие изменения состояний.
Сейчас оно исполняется при любом изменении состояния.

Аватар пользователя kv4 kv4 3 июня 2013 в 13:54

"Vitoriust" wrote:
Проблема в создании условий.

В чём конкретно проблема? Вы не знаете, что такое условие или не знаете, как его создавать? Или вы создаёте какое-то условие, а оно не срабатывает?

Аватар пользователя Vitoriust Vitoriust 10 ноября 2015 в 11:49

kv4 wrote:
"Vitoriust" wrote:
Проблема в создании условий.

В чём конкретно проблема? Вы не знаете, что такое условие или не знаете, как его создавать? Или вы создаёте какое-то условие, а оно не срабатывает?

Проблема в том, что при создании правила (Rule) в списке "React on event" нету условий чтобы наше правило реагировало только на определенную смену состояний workflow, а не на любую смену как сейчас. Сейчас в настройке события стоит "Workflow state has changed", что заставляет наше правило реагировать на любое изменение состояния и других вариантов в списке "React on event" нету. По большому счету я не знаю как задать условие.

Это видно на рисунке:

Аватар пользователя serega111 serega111 3 июня 2013 в 14:12

Видимо, проблема в том, что rules не знает и никак не может получить предыдущее состояние.
Может настроить ноды с workflow так, чтобы при редактировании создавалась новая ревизия, затем в rules загружать предыдущую ревизию (там старое значение поля workflow), добавить loop где проверять значение workflow текущей и предыдущей ревизий и создавать новую ноду. Правда, не уверен, что загрузка последней ревизии будет простой задачей, но наверняка решаема.

Аватар пользователя kv4 kv4 3 июня 2013 в 18:21

Ну так вы создайте Rules, а потом в нём создайте условия какие вам нужны. "React on event" переводится как "Реакция на событие". В данном случае событием является "Состояние workflow изменилось".

Алгоритм примерно такой: произошло событие, rules узнал об этом, проверил, должна ли быть какая-то реакция. Если реакция должна быть (т.е. на этом событии висит какой-то rules), тогда проверяются условия внутри rules, и если условия выполняются, тогда происходит собственно реакция (действие).

Аватар пользователя Vitoriust Vitoriust 3 июня 2013 в 18:25

У меня есть созданый рулз. Все нужные "Conditions" и "Actions" я прописал, в "Events" стоит только "Workflow state has changed". Все работает, но сам рулз срабатывает при каждом изменении состояния workflow.
Напишите пожалуйста где прописать "условия внутри rules"? В "Events" как дополнительные?

Аватар пользователя kv4 kv4 3 июня 2013 в 18:49

"Vitoriust" wrote:
где прописать "условия внутри rules"?

Conditions - переводится, как Условия.

Собственно в Conditions вам и нужно разместить условия при которых будет выполнятся нужное вам действие.

Аватар пользователя Vitoriust Vitoriust 4 июня 2013 в 11:27

"kv4" wrote:
Conditions - переводится, как Условия.
Собственно в Conditions вам и нужно разместить условия при которых будет выполнятся нужное вам действие.

Спасибо большое! Проблема решена!

Добавил "Content has a workflow state" в "Conditions" и всё заработало как надо.