Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
176 of 182 menu
Внимание! Репетиторство по Python! Осталось последнее место! Стоимость: 20$ за занятие 1.5 часа. Жми для подробностей!

Таблица workflow_states

Таблица workflow_states является частью модуля Workflow и предназначена для хранения всех возможных состояний workflow. Состояния представляют собой этапы жизненного цикла контента, такие как "Черновик", "На проверке", "Опубликовано" и "Архив".

Поля

Поле Тип данных Описание
sid int Уникальный идентификатор состояния (State ID). Первичный ключ таблицы.
wid int Идентификатор workflow, к которому принадлежит это состояние. Внешний ключ для таблицы workflows.
state varchar(255) Название состояния (например, 'Draft', 'Published'). Это значение отображается пользователям в интерфейсе.
weight int Вес состояния, который определяет порядок отображения состояний в списках и интерфейсе. Меньшее значение означает более высокое положение в списке.
sysid int Системный идентификатор состояния. Используется для обозначения специальных, зарезервированных системой состояний, таких как 1 (Создано) и 2 (Удалено).
status int Статус состояния: 1 - активно, 0 - неактивно. Неактивные состояния обычно скрыты из интерфейса выбора.

Как это работает

Каждый workflow (например, для типа материала "Статья") состоит из набора состояний. Когда пользователь создает или редактирует материал, он может переводить его из одного состояния в другое, следуя настроенным переходам (хранятся в workflow_transitions).

Поле weight позволяет администратору настроить логический порядок состояний. Например, состояние "Черновик" обычно имеет меньший вес, чем "На проверке", которое, в свою очередь, имеет меньший вес, чем "Опубликовано".

Системные состояния (sysid = 1 или 2) являются особыми. Состояние "Создано" (1) часто является начальным для нового контента, а состояние "Удалено" (2) отмечает контент, помеченный для удаления. Эти состояния обычно не могут быть изменены или удалены.

Когда контент сохраняется в определенном состоянии, эта информация записывается в таблицу workflow_node_history, создавая историю изменений статусов для каждого узла.

Пример SQL-запроса

Получить все активные состояния для конкретного workflow можно следующим запросом:

SELECT ws.sid, ws.state, ws.weight FROM workflow_states ws WHERE ws.wid = :wid AND ws.status = 1 ORDER BY ws.weight ASC;

Смотрите также

  • таблицу workflows,
    которая хранит определения workflow
  • таблицу workflow_transitions,
    которая определяет возможные переходы между состояниями
  • таблицу workflow_node_history,
    которая хранит историю смены состояний для узлов
  • таблицу workflow_scheduled_transition,
    которая хранит запланированные переходы между состояниями