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

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