Таблица workflow_transitions
Таблица workflow_transitions является частью модуля Workflow и предназначена для хранения определений всех возможных переходов между состояниями workflow. Каждая запись в этой таблице представляет собой разрешенный переход из одного состояния (from_sid) в другое (to_sid) в рамках конкретного workflow.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
tid |
int |
Уникальный идентификатор перехода. Первичный ключ, автоинкремент. |
wid |
int |
Идентификатор workflow, к которому принадлежит этот переход. Внешний ключ для таблицы workflows.
|
from_sid |
int |
Идентификатор исходного состояния (State ID), из которого осуществляется переход. Внешний ключ для таблицы workflow_states.
|
to_sid |
int |
Идентификатор целевого состояния (State ID), в которое осуществляется переход. Внешний ключ для таблицы workflow_states.
|
Как это работает
Модуль Workflow позволяет создавать сложные процессы согласования и публикации контента. Каждый workflow состоит из набора состояний (например, "Черновик", "На проверке", "Опубликовано", "Архив") и переходов между ними.
Таблица workflow_transitions определяет, какие переходы между состояниями разрешены. Например, из состояния "Черновик" можно перейти в "На проверке", но нельзя сразу в "Опубликовано". Каждый переход связан с конкретным workflow через поле wid.
Когда пользователь пытается изменить состояние контента (например, отправить материал на модерацию), система проверяет наличие соответствующей записи в таблице workflow_transitions. Если переход разрешен, операция выполняется, в противном случае пользователь получает ошибку.
Переходы могут иметь дополнительные настройки, такие как права доступа (какие роли могут выполнять этот переход), метки для отображения и другие параметры, которые хранятся в связанных таблицах.
Пример SQL-запроса
Получить все разрешенные переходы для конкретного workflow можно следующим запросом:
SELECT wt.tid, wf.name as workflow_name,
fs.state as from_state, ts.state as to_state
FROM workflow_transitions wt
INNER JOIN workflows wf ON wt.wid = wf.wid
INNER JOIN workflow_states fs ON wt.from_sid = fs.sid
INNER JOIN workflow_states ts ON wt.to_sid = ts.sid
WHERE wf.name = 'editorial';
Смотрите также
-
таблицу
workflows,
которая хранит основные данные workflow -
таблицу
workflow_states,
которая содержит определения состояний workflow -
таблицу
workflow_node_history,
которая хранит историю переходов для нод -
таблицу
workflow_scheduled_transition,
которая содержит запланированные переходы