Настройка рабочих процессов

Каждая сущность в Apostol CRM имеет встроенный автомат состояний. Стандартный цикл из 4 состояний покрывает большинство случаев, но его можно расширить.

Стандартный рабочий процесс

       ┌────── restore ───────┐
       v                      |
  [Created] --enable--> [Enabled] --disable--> [Disabled]
       |                    |                       |
       |--delete-->   [Deleted]  <--delete--   [Deleted] <--delete--

4 типа состояний: created, enabled, disabled, deleted.

Ключевые концепции

  • Тип состояния -- одна из 4 фиксированных категорий
  • Состояние -- конкретное именованное состояние внутри типа (может быть несколько)
  • Метод -- связывает действие с классом и состоянием
  • Переход -- определяет: в состоянии X при выполнении метода Y перейти в состояние Z

Основные API-функции

-- Добавить состояние
uState := AddState(pClass, pStateType, 'available', 'Available');

-- Добавить метод (видимый или скрытый)
PERFORM AddMethod(null, pClass, uState, GetAction('disable'), null, 'Disable');
PERFORM AddMethod(null, pClass, uState, GetAction('heartbeat'), null, 'Heartbeat', null, false);

-- Добавить переход
PERFORM AddTransition(pCurrentState, pMethod, pNewState);

Паттерны проектирования

ПаттернКогда использоватьПример
AddDefaultMethodsПростой CRUDСправочники
Свои методы, 1 состояние на типСтандартный цикл + доп. действияКлиент
Свои методы, N состояний на типСложный цикл с подсостояниямиЗарядная станция
Скрытые методыАвтоматические действияHeartbeat

Полная версия с примерами кода доступна на английском языке: Workflow Customization (English).