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

Материал из FrigatWiki

Версия от 13:22, 31 октября 2011; WikiSysop (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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

 Процесс занесения заказов в систему на базе Web -интерфейса и автоматической обработки заказов требует наличие работающего планировщика и настроечного xml-на сервере БД.
 Перед настройкой данного файла необходимо выполнить во Фрегате следующие действия.
  1) Завести Контрагентов -департаменты.
  2) Завести пользователей системы на сервере БД и в программе, присоединив их к личным карточкам. Обязательно указать у пользователей адрес электронной почты.
  3)Отнести пользователей к Контрагентам (департаментам).
  4)Завести группу  установленных состояний на документ 'Заказ'.
  4)Завести системную аналитику Бюджет. 
  5)Прописать учетную запись почтового клиента во Фрегате.
  При внесении заказов и их рассмотрении документ проходит через цепочки состояний, описанных и созданных во Фрегате. Все заказы оформляются через  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-описывает темe письма Секция 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>
В этом случае при срабатывания состояния ЗАКАЗ, произойдет рассылка письма создателю, менеджер по закупкам и менеджеру, оформившему заказ.
Личные инструменты