Фазы в SDL Tridion Event Handler 2011

Испытываете трудности в понимании фаз события.

1) Рассмотрим действие «Сохранение компонента». Когда содержимое должно быть переопределено на основе правила содержимого, это можно сделать на этапе «Инициировано». Если контент не соответствует правилу для контента, на этапах события «Инициировано» или «Обработано» могут возникать ошибки.

Когда самой фазы «Инициировано» достаточно как для переопределения контента, так и для проверки правил контента, Когда будет полезна фаза «Обработано»? Пожалуйста. объясните на примере.

2) При сохранении и закрытии компонента запускаются события «Сохранить» и «Отправить». После этапа «Обработано» действия «Сохранить» выполняется действие «Вернуть». В случае каких-либо ошибок на этапе «Инициировано»/«Обработано» действия «Вернуться», произойдет этап «Транзакция прервана» действия «Сохранить».

Выше приведен единственный пример, который я мог придумать для TrasactionAborted. Можете ли вы привести какой-либо другой пример, который поможет понять фазу TrasactionAborted?


person user1528297    schedule 16.07.2012    source источник


Ответы (2)


Ad1: на инициированной фазе элемент еще не сохранен в базе данных, и нет транзакции для отката. Если вы хотите проверить данные, вы должны сделать это до того, как что-либо в базе данных будет изменено. Конечно, транзакции поддерживаются, и когда вы вызываете исключение, все будет хорошо, но вы выполняете ненужные действия, что в совокупности приводит к картине производительности.

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

Другим случаем может быть установка флага «Требуется перевод» для локализованных дочерних элементов. Если это не удается, вы можете также отменить изменение родительского элемента (по какой-то причине).

Ad2: Обычно транзакция прервана инициируется при возникновении любого исключения. Может быть, вы могли бы немного подробнее остановиться на пункте 2?

person Arjen Stobbe    schedule 16.07.2012
comment
У элемента (например, компонента) уже есть идентификатор на этапе обработки? Если да, то это идеальный этап для сценариев интеграции, когда вы хотите сохранить ссылку на элемент Tridion в сторонней системе. - person Quirijn; 16.07.2012
comment
Обработанная фаза имеет TCM Uri. - person Arjen Stobbe; 16.07.2012

Я попытался дать полное объяснение фаз, типов событий и типов событий SDL Tridion 2011 в следующей статье о SDL Tridion World: События SDL Tridion 2011 .NET.

Короче говоря, фазы запускаются в определенном порядке, поэтому вы можете подключиться к действию в определенное время, порядок следующий:

  1. Инициированная фаза
  2. Происходит действие CMS (не фаза)
  3. Обработанная фаза
  4. Одна из фаз транзакции (TransactionCommitted, если транзакция прошла успешно, TransactionAborted, если транзакция прервана, и TransactionInDoubt, когда состояние транзакции невозможно определить, она не зафиксирована, не прервана и никогда не будет)

Поэтому, если вы хотите что-то сделать до того, как элемент будет сохранен (например, выполнить проверку допустимости элемента, и в этом случае вы можете захотеть предотвратить его сохранение, лучше всего использовать фазу Инициация, но если вы хотите сделать что-то после элемент был сохранен (например, размещен на странице), вы должны использовать фазу совершения транзакции (в этом случае, вероятно, фазу регистрации, а не событие сохранения).

Итак, когда фаза «Обработка» становится полезной, я никогда не могу придумать для нее простого варианта использования, но я уверен, что в какой-то ситуации она когда-нибудь пригодится. Тот факт, что он есть, не означает, что вам нужно использовать его прямо сейчас.

person Bart Koopman    schedule 16.07.2012