Таблица workflow_node_history
Таблица workflow_node_history является центральным хранилищем истории всех переходов Workflow для нод. Каждая запись в таблице представляет собой одно изменение состояния ноды в рамках настроенного workflow. Это позволяет отслеживать полный жизненный цикл контента: кто, когда и в какое состояние переводил ноду.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
hid |
int |
Уникальный идентификатор записи истории (History ID). Первичный ключ, автоинкремент. |
entity_type |
varchar(255) |
Тип сущности, к которой применяется workflow. Для нод всегда имеет значение node. |
nid |
int |
Идентификатор ноды (node.nid), для которой произошло изменение состояния. Внешний ключ, ссылается на таблицу node.
|
field_name |
varchar(32) |
Название поля Workflow, которое инициировало изменение. Связывает запись истории с конкретным экземпляром поля на ноде. |
language |
varchar(12) |
Язык версии ноды, для которой было применено изменение состояния (например, und для неопределенного языка или en). |
delta |
int |
Порядковый номер (дельта) значения в поле Workflow, если поле является множественным. |
old_sid |
int |
Идентификатор предыдущего состояния (State ID), из которого был выполнен переход. Внешний ключ для таблицы workflow_states.
|
sid |
int |
Идентификатор нового состояния (State ID), в которое был выполнен переход. Внешний ключ для таблицы workflow_states.
|
uid |
int |
Идентификатор пользователя (users.uid), который выполнил переход и изменил состояние. Внешний ключ, ссылается на таблицу users.
|
stamp |
int |
Метка времени (Unix timestamp) момента, когда был выполнен переход. |
comment |
text |
Комментарий, который пользователь мог оставить при изменении состояния workflow. |
Как это работает
Когда пользователь с соответствующими правами изменяет состояние ноды через интерфейс Workflow (например, переводит черновик на moderation или публикует материал), модуль Workflow создает новую запись в таблице workflow_node_history.
Эта запись фиксирует всю контекстную информацию о событии: какая нода (nid), какое именно поле Workflow (field_name) было изменено, какой пользователь (uid) совершил действие, из какого состояния (old_sid) и в какое (sid) был выполнен переход, а также когда именно (stamp) и с каким комментарием (comment).
Текущее состояние ноды хранится в самой ноде, в значении поля Workflow. Однако таблица истории содержит полный аудит-лог всех изменений, что позволяет восстановить хронологию событий, посмотреть, кто и когда менял статусы, и проанализировать workflow-процесс.
Поля entity_type, field_name, language и delta обеспечивают корректную работу с различными типами сущностей, multilingual-контентом и множественными полями.
Пример SQL-запроса
Получить полную историю изменений состояния для конкретной ноды можно следующим запросом:
SELECT
w.hid,
FROM_UNIXTIME(w.stamp) as change_date,
u.name as username,
os.state as old_state,
ns.state as new_state,
w.comment
FROM workflow_node_history w
LEFT JOIN users u ON w.uid = u.uid
LEFT JOIN workflow_states os ON w.old_sid = os.sid
LEFT JOIN workflow_states ns ON w.sid = ns.sid
WHERE w.nid = 123
ORDER BY w.stamp DESC;
Смотрите также
-
таблицу
node,
которая хранит основные данные нод -
таблицу
workflow_states,
которая содержит определения состояний workflow -
таблицу
workflow_scheduled_transition,
которая хранит запланированные переходы состояний -
таблицу
users,
которая содержит данные пользователей системы