Таблица workflow_state
Таблица workflow_state является ключевой для модуля Workflow в Drupal. Она служит справочником всех возможных состояний контента (например, "Черновик", "На проверке", "Опубликовано", "Архив"), которые могут быть назначены в рамках различных рабочих процессов.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
sid |
int |
Уникальный идентификатор состояния (State ID). Первичный ключ таблицы. |
wid |
int |
Идентификатор рабочего процесса (Workflow ID), к которому принадлежит это состояние. Внешний ключ для таблицы workflows.
|
state |
varchar(255) |
Машинное имя состояния. Должно быть уникальным в рамках одного рабочего процесса. Используется для программного обращения к состоянию. |
weight |
int |
Вес состояния. Определяет порядок, в котором состояния отображаются в интерфейсе (например, в выпадающих списках). Меньшее значение означает более высокое положение. |
sysid |
int |
Системный идентификатор состояния. Используется для обозначения специальных, зарезервированных системой состояний. Например, состояние "(Creation)" имеет sysid = 1.
|
status |
int |
Статус состояния. 1 означает, что состояние активно и его можно использовать. 0 - состояние неактивно (например, удалено или отключено).
|
Как это работает
Каждый рабочий процесс (workflow) состоит из набора состояний (states), которые определяют жизненный цикл элемента контента. Состояния создаются администратором при настройке workflow и связываются с ним через поле wid.
Когда пользователь изменяет состояние материала (например, отправляет черновик на модерацию), система находит соответствующий sid и обновляет запись в таблице workflow_node_history. Поле weight критически важно для построения корректной диаграммы переходов между состояниями, которая отображается при настройке workflow.
Системные состояния (с sysid > 0), такие как состояние создания, обычно не отображаются пользователю в интерфейсе, но используются модулем для внутренней логики работы.
Пример SQL-запроса
Получить все активные состояния для конкретного рабочего процесса можно следующим запросом:
SELECT s.sid, s.state, s.weight, w.label as workflow_name
FROM workflow_state s
INNER JOIN workflows w ON s.wid = w.wid
WHERE s.status = 1 AND w.wid = 1
ORDER BY s.weight ASC;
Смотрите также
-
таблицу
workflows,
которая хранит определения рабочих процессов -
таблицу
workflow_transitions,
которая определяет возможные переходы между состояниями -
таблицу
workflow_node_history,
которая хранит историю смены состояний для материалов -
таблицу
workflow_scheduled_transition,
которая управляет запланированными переходами между состояниями