Автоматическая смена состояний и управление рассылкой

Материал из FrigatWiki

Перейти к: навигация, поиск

Содержание

Описание настройки автоматической смены состояний заказов и управления рассылкой.

Процесс занесения заказов в систему на базе Web -интерфейса и автоматической обработки заказов требует наличие работающего Планировщика и настроечного xml на сервере БД.
Перед настройкой данного файла необходимо выполнить во Фрегате следующие действия.

  1. Завести Контрагентов - департаменты.
  2. Завести пользователей системы на сервере БД и в программе, присоединив их к личным карточкам. Обязательно указать у пользователей адрес электронной почты.
  3. Отнести пользователей к Контрагентам (департаментам).
  4. Завести группу установленных состояний на документ 'Заказ'.
  5. Завести системную аналитику Бюджет.
  6. Прописать учетную запись почтового клиента во "Фрегат".


При внесении заказов и их рассмотрении документ проходит через цепочки состояний, созданных и описанных во Фрегате. Все заказы оформляются через Web-интерфейс и удаленные менеджеры не имеют доступ через клиентскую часть Фрегата к базе.
Состояния заказов обрабатывается планировщиком, который переводит документы из одного состояние в другое по условиям, описанным в xml-файле. Однако доступ и управление к заказам настраивается во Фрегате. Документ Заказ клиента в процессе обработки имеет ряд состояний, доступных конкретным группам пользователей.
Состояния

Код Наименование
ПГТ Подготовка
ОЖД_ОДБР_С Ожидает одобрения менеджера подразделения
ОДБР_С Одобрен менеджером подразделения
ОТВРГ_С Отвергнут менеджером подразделения
ОЖД_ОДБР_Н Ожидает одобрения начальника подразделения
ОДБР_Н Одобрен начальником подразделения
ОТВРГ_Н Отвергнут начальником подразделения
ОЖД_ОДБР_ВП Ожидает одобрения вицепризедента
ОДБР_ВП Одобрен вицепрезидентом
ОТВРГ_ВП Отвергнут вицепрезидентом
ОЖД_ОДБР_П Ожидает одобрения президента
ЗАКАЗ Заказ
ЗАКР Закрыт
ОТКЛ Отклонен


Часть из этих состояний назначается планировщиком автоматически, как например ЗАКАЗ и ОТКЛ, или обрабатываются по условию суммы заказа.


При подтверждении заказа в зависимости от его суммы, он может быть подтвержден последовательно всей цепочкой людей, отвечающих за подтверждение заказа: менеджером, нач. подразделения, вице-президентом, президентом. Иначе, если например, сумма заказа менее установленной суммы, например менее 25000, и менеджер уже одобрил заказ, документ переходит автоматически в состояние заказ.
Состояния, в которых может находится заказ, могут быть настроены и ограничены во Фрегате также с помощью системы доступа.
Так, менеджер должен видеть только те заказы, которые находятся в состоянии ОЖД_ОДБР_С (т.е ожидают его одобрения). Т.е. не подтвержденные документы менеджеру недоступны, как и те документы, которые уже им одобрены и требуют одобрения начальника подразделения.
На рис. 5 показана последовательность смены состояний по условиям суммы заказов. Молнией показаны переходы, обрабатываемые автоматом.


В настройках состояния документа 'Заказ' выставлен список состояния заказа (рис.1 ). Эти настройки доступны для расширения. Кроме этого необходимо поставить доступ для конкретных пользователей к конкретным состояниям (рис. 2). Для этого надо нажать Правка документа состояний и далее Настройка. Откроется правка на доступ определенных пользователей к состояниям (рис. 3).
Рис. 1
Рис. 2
Так на рис. 4 показано, что из состояния Ожид. одобрения менеджера можно перейти в состояние Одобрен менеджером подразделения и в Отвергнут менеджером подразделения.


Рис4.
Кроме этого, можно ограничить доступ на операцию с этими состояниями только менеджерами (на вкладке Доступ).
Рис.5


Рис 5.
Пользовательская настройка состояний происходит в специальном xml файле. Данный файл представляет собой xml-файл, логически решающий две задачи: управление автоматической сменой состояний и автоматической рассылкой. Ниже указываются описание тегов в xml настроечного файла.

Настройка автомата смены состояний

  • Секция state_monitor - в теге описывается все состояния автомата
  • Секция state - в теге описывается состояние. А его атрибуте - 'code' описывается код состояния, имеющегося во "Фрегат". Например- "ПГТ"
  • Секция new_state - вложенный тег в теге state описывает новое состояние, в которое может перейти автомат из состояния state. Также имеет атрибут code.
  • Секция conditions - вложенный тег, описывающий условия перехода в новое состояние. Имеет следующие атрибуты:
    • field - тип поля, по которому идет сравнения условия;
    • cmp - атрибут, отвечающий за условия сравнения - больше - G или меньше- LE,
    • value - атрибут, отвечающий за величину поля, сравниваемого по условию.


Например:

   <state code="ОДБР_Н">
       <new_state code="ОЖД_ОДБР_ВП">
           <conditions>
              <condition field="SUM_I" cmp="G" value="125000" />
           </conditions>
       </new_state>
       <new_state code="ЗАКАЗ">
           <conditions>
              <condition field="SUM_I" cmp="LE" value="125000" />
           </conditions>
       </new_state>
    </state>

Данный фрагмент описывает следующее условие - из состояния ОДБР_Н (одобрение начальника) автомат переведет в одно из двух состояний:

  • либо ОЖД_ОДБР_ВП (ожидание одобрение вице-президента), если сумма документа больше, чем 125000.
  • либо ЗАКАЗ (товар заказан), если сумма меньше 125000.
    Конечным состоянием для автомата является либо ЗАКАЗ, либо ОТКЛ.

Схема автоматической рассылки оповещений при изменении состояний документа

  • Секция state_remainder - в теге описывается все состояния автоматический рассылки.
  • Секция templates - в теге описывается шаблоны рассылки. В шаблоне описываются макросы и тексты письма. Макросы представляют собой значение полей, подставляемых из базы данных имеют описание вида %<имя макроса>%. Макросы не расширяются и описаны в настроечном xml файле. Шаблоны имеют обязательный атрибут - code, в котором описывается название шаблона.
  • Секция subject - содержит тему письма
  • Секция message - содержит собственно сообщение письма.

Пример шаблона:

   <template code="accept">
      <subject><![CDATA[Ваш %doc_infostr% одобрен %prev_editer_name%]]></subject>
      <message>
               <![CDATA[Уважаемый %recipient_name%!  %prev_editer_name% одобрил Ваш %doc_infostr%]]>
      </message>

Далее указываются список тегов, описывающих получателей:
Пример секции:

   <managers>
   <manager>kirill.maevskiy</manager>
   <manager>marina.tkach</manager>
   </managers>


Это означает, что если поступит заказ от Департамента (Контрагента), к которому привязан соответствующий manager, то он получит письмо, см. ниже.

Настройка автоматической рассылки по смене состояний

Далее следует описание собственно механизма рассылки по изменению состояний.

  • Секция state - тег описывает состояние, по переходу в которое происходит рассылка писем.
  • Секция recipient - тег описывает получателя.


Например фрагмент:

  <state code="ОЖД_ОДБР_С">
         <recipient template="t1" flags="4096">manager</recipient>
  </state>

означает, что при переходе состояния документа в ОЖД_ОДБР_С , будет отправляться письмо с шаблоном t1 менеджеру, привязанному к департаменту, на который оформлялся заказ, причем flags="4096" означает, что сообщение будет отправляться раз в день, пока документ не перейдет в другое состояние.
Также может быть несколько получателей письма при изменения состояния, например:

  <state code="ЗАКАЗ">
      <recipient template="accept">creator</recipient>
      <recipient template="accept_man">manager</recipient>
      <recipient template="accept_query">prod_manager</recipient>
  </state>

В этом случае при срабатывания состояния ЗАКАЗ, произойдет рассылка письма создателю, менеджеру по закупкам и менеджеру, оформившему заказ.

Личные инструменты