Модуль Workflow-NG

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

Аватар пользователя Leonard Leonard 17 ноября 2008 в 17:09

Дублирую статью со своего Блога Ежа.

Есть такой замечательный модуль Workflow-NG, с его помощью можно например автоматизировать обработку заказов и работу с покупателями в Уберкарте.

Итак, модуль Workflow-NG. Как следует из самого названия с его помощью можно организовать работу с некими рабочими процессами (workflows). Что пишут о возможностях модуля в официальной документации? Итак, с помощью этого модуля Вы можете: организовать уведомления посетителей Вашего сайта о каких-либо важных изменениях или дополнениях, появляющихся на Вашем сайте; организовывать гибкую систему процесса отображения материалов; организовывать специальные редиректы (перенаправления) и многое другое. Отлично. Но я хочу для начала попробовать сделать с помощью этого модуля хоть что-нибудь конкретное.

Итак, захожу в Управление сайтом > Конструкция > Workflow-ng (admin/build/workflow-ng). По умолчанию там уже есть несколько созданных настроек, но я конечно же хочу добавить свою собственную, поэтому жмякаю на ссылке Add a new configuration (Создать новую настройку). Вижу два обязательных к заполнению поля - Event (Событие) и Label (Метка). Как нетрудно догадаться, Event это и есть то самое событие, в ответ на которое я смогу организовать какое-либо ответное действие. Например, я хочу, чтобы пользователь немедленно получал уведомление о появившейся записи в блоге, или о добавлении новой новости и так далее (я сейчас умышленно не касаюсь Уберкарта). Выбираю в поле Event в выпадающем списке какое-либо событие - выбрал Content has been created (Новый материал был создан). В поле Label нужно написать какое либо название для создаваемой настройки. После этого поля идёт метка, в которой по умолчанию установлен флажок. Не убирайте этот флажок, если Вы хотите, чтобы Ваша настройка была активной (если флажок не будет установлен, настройка будет неактивной, и в ответ на событие не будет выполняться никакого действия).

Итак, сохраняю изменения. Далее ещё две настройки - Conditions (Состояния) и Actions (Действия). Как нетрудно догадаться, Actions - это и есть те самые действия, которые я буду выполнять в ответ на какое либо событие. Но сначала нужно дойти до соответствующей кондиции, поэтому кликаю на Add a condition (Добавить состояние). В выпадающем окошке можно выбрать что угодно на вкус, но я выбираю Content has type (то есть фильтрую появление какого либо контента по его типу), кликаю Add (Добавить), ниже выбираю например Запись в блоге. После этого сохраняю изменения.

Теперь перехожу к Actions. Точно так же добавляю какое-либо действие, выбираю какое именно действие мне нужно, я выбрал Send a mail to an arbitrary mail address (Доставка сообщения на мыло случайного пользователя), но Вы можете экспериментировать с какими угодно другими действиями. Я для проверки ввёл свой собственный адрес почты. Ниже Вы можете написать текст сообщения, которое будет приходить на почту Вашей "жертвы".

Всё. Сохраняю изменения. Теперь я могу увидеть свою настройку в списке других настроек Workflow-ng. Проверяю работу нашего модуля. Создаю любую запись в блоге, жму "Отправить". Заранее приготовившись к неудаче, проверяю свой почтовый ящик. Но нет!! Надо же - на почту пришло письмо, уведомляющее о том, что на сайте появилась новая запись в блоге!
Модуль работает!

Комментарии

Аватар пользователя digital_sword digital_sword 17 ноября 2008 в 22:21

То есть Workflow-NG и Rules - уведомители пользователей о новых типах материалов? Если пользователь, скажем, создал материал типа Story (и только его) может на указанный ящик Workflow-NG и Rules прислать текст материала?

А что еще ими можно делать? (особенно Rules)
В описании написано:
• send customized mails to notify your users about important changes
• build flexible content publishing workflows
• create custom redirections, system messages, breadcrumbs, ..
• and a lot more....

Что означает второй пункт, что за редиректы и особенно a lot more?

Аватар пользователя Leonard Leonard 18 ноября 2008 в 0:04

Workflow-NG далеко не просто уведомитель о новых типах материалов, это только вводная статья, там есть очень много вариантов развития событий, Вы покликайте в настройках этого модуля - их там очень много. Я просто написал один из примеров, как можно работать с этим модулем.

Аватар пользователя penexe penexe 18 ноября 2008 в 8:29

как сказал Leonard, не просто уведомитель там просто кучу всего можно сделать)
у меня напимер через Rules сделана такая штука: на главной 5 материалов закреплённых и еще 10 обычных, дак вот при добавлении нового закреплённого материала самый старый из закреплённых убирается с главной и становится обычным

Аватар пользователя digital_sword digital_sword 18 ноября 2008 в 12:33

А можете написать, что им можно сделать? Smile
В частности, можно материал story чтобы сразу после создания отправлялся на указанный e-mail? Ну и еще возможности... В общем.

Аватар пользователя penexe penexe 18 ноября 2008 в 14:01

"digital_sword" wrote:
В частности, можно материал story чтобы сразу после создания отправлялся на указанный e-mail? Ну и еще возможности... В общем.

да можно
- можно чтобы после входа пользователя редиректило куда-нибудь
- можно при создании чего либо отправлять письма определенным ролям
- можно при создании чего либо выполнять свой пхп код
- можно создавать условия
- можно выводить пользователям при создании материала кастомные сообщения
и тд и тп

Аватар пользователя penexe penexe 18 ноября 2008 в 14:20

События и действия могут быть разные в зависимости от установленных модулей поддерживающих rules, у меня доступно следущее:

События

Comment

  • After publishing a comment
  • After unpublishing a comment
  • Comment is being viewed
  • После сохранения или обновления комментария
  • После сохранения нового комментария
  • После удаления комментария

Node

  • After deleting content
  • After saving new content
  • After updating existing content
  • Content is going to be saved
  • Content is going to be viewed

Organic groups

  • User approved to group by admin
  • User subscribes to group
  • User unsubscribes from group

System

  • Cron maintenance tasks are performed
  • User is going to view a page

User

  • User account details have been updated
  • User account has been created
  • User has been deleted
  • User has logged in
  • User has logged out
  • User page has been viewed

Действия

Comment

  • Снять с публикации комментарий
  • Снять с публикации комментарий содержащий слова

Node

  • Add new content
  • Load content by id
  • Save Содержание
  • Set the content author
  • Закрепить вверху списков<
  • Опубликовать
  • Поместить на главную страницу
  • Снять с публикации
  • Снять с публикации материал содержащий слова
  • Убрать с главной
  • Удалить закрепление вверху списков

Organic groups

  • Subscribe user to group
  • Unsubscribe user from group

PHP

  • Execute custom PHP code

Path

  • Create or delete a content's URL alias
  • Create or delete an URL alias


Rule Scheduler

  • Schedule Rule Set Example working with content

Rule Sets

  • Rule Set Example working with content

Rules

  • Add a new truth value variable
  • Add a new Дата variable
  • Add a new Строка variable
  • Add a new Число variable

System

  • Display a tokenized message to the user
  • Log to watchdog
  • Page redirect
  • Redirect to a tokenized URL
  • Send a mail to a user
  • Send a mail to all users of a role
  • Send a mail to an arbitrary mail address
  • Send tokenized e-mail
  • Set breadcrumb
  • Show a configurable message on the site

User

  • Add user role
  • Block a user
  • Load a user account
  • Remove user role
  • Запретить IP адрес текущего пользователя
Аватар пользователя penexe penexe 18 ноября 2008 в 14:24

"digital_sword" wrote:
И что за условия?

условия это вобщем проверка, поддерживает логические операции
например при создании новости автором с ролью "супер пользователь" делать её прикреплённой

в данном случае в роли условия будет то что у пользователя есть роль "супер пользователь"

Аватар пользователя penexe penexe 18 ноября 2008 в 14:30

с программной точки зрения Workflow-NG и Rules это модули конструкторы реализующие друпаловские хуки hook_nodeapi, hook_user и тд. Также как и cck с views заменяют программное создание своих типов нод и представлений.