Таблица workflow_scheduled_transition
Таблица workflow_scheduled_transition является частью модуля Workflow в Drupal и отвечает за хранение запланированных автоматических переходов между состояниями Workflow. Эти переходы выполняются системой по расписанию, обычно с помощью Cron.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
tid |
int |
Уникальный идентификатор запланированного перехода. Первичный ключ с автоинкрементом. |
entity_type |
varchar(255) |
Тип сущности, к которой применяется переход (например, node, comment, user).
|
nid |
int |
Идентификатор сущности, к которой применяется переход. Для узлов это nid, для комментариев - cid и т.д.
|
field_name |
varchar(255) |
Название поля Workflow, к которому применяется переход. |
old_sid |
int |
Идентификатор текущего (старого) состояния Workflow. Внешний ключ к таблице workflow_states.
|
new_sid |
int |
Идентификатор нового состояния Workflow, в которое будет выполнен переход. Внешний ключ к таблице workflow_states.
|
uid |
int |
Идентификатор пользователя, который запланировал переход. Внешний ключ к таблице users.
|
scheduled |
int |
Временная метка Unix, указывающая дату и время, когда должен быть выполнен переход. |
comment |
text |
Комментарий к переходу, который может быть добавлен пользователем при планировании. |
Как это работает
Когда пользователь с соответствующими правами работает с контентом, имеющим Workflow, он может запланировать автоматический переход между состояниями на будущее. Например, можно запланировать публикацию материала на определенную дату или его архивирование через некоторое время после публикации.
При сохранении запланированного перехода создается запись в таблице workflow_scheduled_transition с указанием сущности, текущего и целевого состояний, времени выполнения и пользователя, инициировавшего переход.
При каждом запуске Cron система проверяет эту таблицу на наличие записей, у которых время выполнения (scheduled) меньше или равно текущему времени. Для каждой такой записи выполняется соответствующий переход Workflow, после чего запись удаляется из таблицы.
Этот механизм позволяет автоматизировать workflow-процессы без постоянного вмешательства администратора, что особенно полезно для контент-стратегий с четким графиком публикаций и архивов.
Пример SQL-запроса
Найти все запланированные переходы для узлов, которые должны выполниться в ближайшие 24 часа:
SELECT wst.*, ws_old.state as old_state, ws_new.state as new_state, u.name as username
FROM workflow_scheduled_transition wst
LEFT JOIN workflow_states ws_old ON wst.old_sid = ws_old.sid
LEFT JOIN workflow_states ws_new ON wst.new_sid = ws_new.sid
LEFT JOIN users u ON wst.uid = u.uid
WHERE wst.entity_type = 'node'
AND wst.scheduled BETWEEN UNIX_TIMESTAMP() AND UNIX_TIMESTAMP() + 86400
ORDER BY wst.scheduled ASC;
Смотрите также
-
таблицу
workflow_states,
которая хранит состояния Workflow -
таблицу
workflow_node_history,
которая содержит историю переходов Workflow -
таблицу
workflow,
которая хранит определения Workflow -
таблицу
users,
которая содержит информацию о пользователях