Таблица 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,
которая хранит запланированные переходы между состояниями