Бизнес-процесс

В приложении часто требуется, чтобы отдельный объект класса мог находиться в особом состоянии, отличающем его от других. В общем случае это делается с помощью явно задаваемых значений. Например, в классе статья есть атрибут Статус. Этого достаточно для поиска и фильтрации, но недостаточно для использовани специальных представлений и прав доступа.

Бизнес-процесс создает отдельную структуру управления состояниями объектов. Элемент state (Состояние) определяет возможное состояние объекта класса. Каждый объект хранит служебный атрибут _state, определяющий его текущее состояние. Transition (Переход) - это правило изменения состояния. Переход позволяет задать условие при котором возможно изменить одно состояние на другое.

Чтобы получит доступ к служебным атрибутам, создайте атрибуты класса с такими же именами. Например, _state, _createdAt, _updateAt, _user. Нельзя изменять значение служебного атрибута через форму.

Откройте класс comment (Комментарий) и создайте атрибут _state, тип String (Строка). Установите флажок Read only (Только чтение). Выберите Workflow state (Состояние бизнес-процесса) в поле View type (Тип представления), чтобы отображался ярлык состояния, а не просто кодовое имя.

Откройте класс comment (Комментарий) и выберите вкладку Workflow (Бизнес-процесс). В поле States (Состояния) создайте состояние hidden (Скрытое). В этом состоянии будут комментарии не показываемые в публичной части сайта. Установите флажок Read-only object mode (Режим объекта только для чтения). Пользователь не сможет изменить комментарий, пока он находится в данном состоянии.

Создайте состояние pending (Ожидание). В этом состоянии будут комментарии ожидающие модерации.

Создайте состояние published (Опубликовано). В этом состоянии будут опубликованные комментарии. Установите флажок Read-only object mode (Режим объекта только для чтения).

В поле Transitions (Переходы) создайте переход publish (Публиковать). В поле Start states (Начальные состояние) добавьте hidden (Скрытое) и pending (Ожидание). Это определяет в каких состояниях объекта будет возможен данный переход. В поле Final state (Конечное состояние) выберите published (Опубликовано). Это определяет результат перехода - новое состояние объекта.

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

Создайте переход hide (Скрыть). В поле Start states (Начальные состояние) выберите pending (Ожидание) и published (Опубликовано). В поле Final state (Конечное состояние) выберите hidden (Скрытое).

Создайте переход moderate (Модерировать), чтобы отправить комментарий на повторную проверку. Установите флажок Null start state (Пустое начальное состояние). Этот переход будет доступен при отсутствии какого-либо состояния объекта. В поле Start states (Начальные состояние) выберите hidden (Скрытое). В поле Final state (Конечное состояние) выберите pending (Ожидание).

Экспортируйте метаданные и перейдите в Офис. Создайте или откройте комментарий. В верхней панели формы комментария появятся кнопки переходов в зависимости от состояния объекта.