Таблица 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,
которая содержит основные данные нод