НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
179 of 182 menu

Таблица 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,
    которая управляет запланированными переходами между состояниями
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить