Как реализовать несколько утверждений с помощью электронных писем?


В настоящее время я использую модуль веб-формы , но я не могу найти способ создать рабочий процесс, который работает для того, что я пытаюсь сделать.

Пожалуйста, дайте мне знать, если я подхожу к этому неправильно или мне следует использовать другой модуль.

В основном я хочу, чтобы эти шаги работали так:

  1. Пользователь заполняет веб-форму и отправляет ее. (одно из полей в форме - это адрес электронной почты его/ее руководителя). Затем форма переходит в состояние, называемое "В ожидании"
  2. Форма отправляется на электронную почту введенного руководителя.
  3. Если Руководитель захочет утвердить его, он/она изменит состояние на "Одобрено". Если он/она чувствует, что требуется больше одобрения от кого-то вышестоящего, то он/она может изменить состояние на "Требуется больше одобрения", а затем ввести адрес электронной почты своего руководителя.
  4. Если Начальнику Руководителя это нравится, то он/она может изменить состояние на "Одобрено"
  5. Когда состояние находится на уровне утвержденного, HR уведомлен.

enter image description here

Возможно ли сделать что-то подобное? Если да, то как это можно сделать?

Author: Pierre.Vriens, 2015-10-09

1 answers

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

Этот тип контента должен содержать следующие поля:

  • Поле, отражающее "состояние" (Ожидающее или утвержденное, может быть, также состояние, такое как "Эскалация"?), Скажем, вы называете это поле как field_approval_status.
  • Поле "ссылка на сущность" для выбора руководитель.

При вышеуказанной настройке вы можете использовать модуль Правила для уведомления руководителя, используя правило, аналогичное правилу, включенному в мой ответ на " Как отправить электронное письмо с помощью действия Правил, используя ключ поля?", и который выглядит так:

{ "rules_notify_reviewer_about_outstanding_approval" : {
    "LABEL" : "Notify reviewer about outstanding approval",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "node_insert--blog" : { "bundle" : "blog" } },
    "IF" : [
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_blog_reviewer" } }
    ],
    "DO" : [
      { "mail" : {
          "to" : "[node:field-blog-reviewer]",
          "subject" : "Blog Post waiting your approval",
          "message" : "[node:author] has submitted a new Blog post waiting your approval.\r\n\r\nYou can review it at: [node:edit-url].",
          "language" : [ "" ]
        }
      }
    ]
  }
}

Если супервизор затем захочет переслать его другому супервизору, все, что нужно, это отредактировать узел и сменить выбранного супервизора на другого.

Возможно, вы захотите добавить некоторые дополнительная логика и/или разрешения, связанные с таким полем field_approval_status, т.е. для обеспечения того, чтобы при создании такого узла автор не мог сразу установить для него значение "Одобрено" (только "В ожидании"?). Это то, что вы могли бы сделать, используя модуль Правила (для проверки/обеспечения соблюдения этого), или вы можете использовать для этого модуль Разрешения на поля.

Примечание:

Чтобы избежать того, что создание узлов слишком пугает большинство пользователей, вы хотите взглянуть на Упрощение модуль также, который помогает устранить беспорядок в формах. Вот цитата со страницы его проекта:

Упрощение позволяет скрывать определенные поля от пользовательского интерфейса. Это помогает устранить беспорядок в формах и предоставить редакторам контента более удобный интерфейс.

 1
Author: Pierre.Vriens, 2017-04-13 12:46:58