Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
181 of 182 menu
Внимание! Репетиторство по Python! Осталось последнее место! Стоимость: 20$ за занятие 1.5 часа. Жми для подробностей!

Таблица workflow_history

Таблица workflow_history является центральным хранилищем истории изменений состояний Workflow. Каждая запись в таблице соответствует одному переходу сущности из одного состояния Workflow в другое. Эта таблица позволяет отслеживать, кто, когда и по какой причине изменил состояние элемента.

Поля

Поле Тип данных Описание
hid int Уникальный идентификатор записи истории (первичный ключ, автоинкремент).
entity_type varchar(255) Тип сущности, для которой записывается история (например, node, comment, user).
nid int Идентификатор сущности (ноды, комментария и т.д.), для которой произошло изменение состояния. В Drupal 7 это поле называется nid, но оно может хранить ID любой сущности, не только нод.
field_name varchar(255) Название поля Workflow, к которому относится это изменение состояния. Одна сущность может иметь несколько полей Workflow.
old_sid int Идентификатор предыдущего (старого) состояния. Ссылается на таблицу workflow_states.
sid int Идентификатор нового состояния, в которое перешла сущность. Ссылается на таблицу workflow_states.
uid int Идентификатор пользователя, выполнившего переход. Ссылается на таблицу users.
stamp int UNIX timestamp времени совершения перехода.
comment text Комментарий, который пользователь может оставить при смене состояния Workflow.

Как это работает

Когда пользователь изменяет состояние Workflow для сущности (например, переводит статью из состояния "Черновик" в "На модерации"), модуль Workflow создает новую запись в таблице workflow_history. В этой записи фиксируются оба состояния (старое и новое), пользователь, выполнивший переход, время изменения и optional комментарий.

Текущее состояние сущности хранится в её основном поле Workflow (например, field_workflow для ноды), но полная история всех переходов доступна только через таблицу workflow_history. Это позволяет администраторам отслеживать весь жизненный цикл сущности.

Поле field_name важно, так как одна сущность может иметь несколько Workflow (например, отдельный Workflow для контента и отдельный для метаданных). Это поле позволяет различать, к какому именно Workflow относится запись истории.

Таблица workflow_history может значительно вырасти на активных сайтах, поэтому рекомендуется периодически очищать старые записи или использовать модули для архивирования истории.

Пример SQL-запроса

Получить полную историю Workflow для конкретной ноды можно следующим запросом:

SELECT wh.stamp, FROM_UNIXTIME(wh.stamp) as date_time, u.name as username, os.state as old_state, ns.state as new_state, wh.comment FROM workflow_history wh LEFT JOIN users u ON wh.uid = u.uid LEFT JOIN workflow_states os ON wh.old_sid = os.sid LEFT JOIN workflow_states ns ON wh.sid = ns.sid WHERE wh.entity_type = 'node' AND wh.nid = 123 ORDER BY wh.stamp DESC;

Смотрите также

  • таблицу workflow_states,
    которая хранит определения состояний Workflow
  • таблицу workflow_node_history,
    которая содержит историю Workflow для нод
  • таблицу workflow_scheduled_transition,
    которая хранит запланированные переходы состояний
  • таблицу node,
    которая содержит основные данные нод