SDL Tridion 事件处理程序 2011 中的阶段

Posted

技术标签:

【中文标题】SDL Tridion 事件处理程序 2011 中的阶段【英文标题】:Phases in SDL Tridion Event Handler 2011 【发布时间】:2012-07-16 08:59:11 【问题描述】:

难以理解事件阶段。

1) 考虑组件保存操作。当要根据内容规则覆盖内容时,可以在“启动”阶段进行。如果内容不遵守内容规则,则可能在“已启动”或“已处理”事件阶段引发错误。

当“已启动”阶段本身足以用于内容覆盖和内容规则验证时,“已处理”阶段何时有用?请。举例说明。

2) 保存和关闭组件时,会触发“保存”和“签入”事件。在保存操作的“已处理”阶段之后,将执行签入操作。如果在 CheckIn 操作的“Initiated”/“Processed”阶段出现任何错误,则会发生 Save 操作的“TransactionAborted”阶段。

以上是我能想到的“TrasactionAborted”的唯一示例。您能否提供任何其他有助于理解“TrasactionAborted”阶段的示例?

【问题讨论】:

【参考方案1】:

Ad1:在启动阶段,项目尚未保存到数据库中,并且没有要回滚的事务。如果要验证数据,则应在更改数据库中的任何内容之前执行此操作。当然,事务是受支持的,当您引发异常时一切都会好起来的,但是您执行了不必要的操作,所有这些都增加了性能。

已处理对于您不使用项目内容本身但应该能够回滚更改的情况很有用。例如:写入存档或高度业务关键事件日志的能力。

另一种情况是在本地化的子节点上设置一个需要翻译的标志。如果失败,您可能还想取消对父项的更改(出于某种原因)。

Ad2:一般而言,任何异常发生时都会触发 Transaction Aborted。或许您可以详细说明第 2 点?

【讨论】:

该项目(例如组件)是否已经在处理阶段有一个 ID?如果是这样,这将是您希望在第三方系统中存储对 Tridion 项目的引用的集成场景的完美阶段。 已处理阶段它确实有一个 TCM Uri。【参考方案2】:

我已尝试在以下有关 SDL Tridion World 的文章中对 SDL Tridion 2011 事件阶段、事件类型和主题类型进行完整解释:SDL Tridion 2011 .NET events。

简而言之,阶段按特定顺序触发,因此您可以在特定时间挂钩动作,顺序如下:

    开始阶段 CMS 操作发生(不是阶段) 处理阶段 事务阶段之一(事务成功时为 TransactionCommitted,事务中止时为 TransactionAborted,事务状态无法确定时为 TransactionInDoubt,既不提交也不中止,永远不会)

因此,如果您想在保存项目之前做一些事情(例如对项目进行有效性检查,在这种情况下您可能希望阻止它被保存,您最好使用启动阶段,但如果您想在项目被保存后做一些事情(比如把它放在一个页面上),你应该使用事务提交阶段(在这种情况下可能是签入,而不是保存事件)。

所以,Processed 阶段什么时候有用,我想不出一个简单的用例,但我确信在某些情况下它会在某个时候派上用场。它存在的事实并不意味着您需要立即使用它。

【讨论】:

以上是关于SDL Tridion 事件处理程序 2011 中的阶段的主要内容,如果未能解决你的问题,请参考以下文章

ASCX 用户控制 SDL Tridion 2011

xml SDL Tridion 2011/2013 SmartTarget的CD logback配置示例。我用它来解决开发现状上的SmartTarget问题

xml SDL Tridion 2011/2013 SmartTarget的CD logback配置示例。我用它来解决开发现状上的SmartTarget问题

如何在 SDL Tridion 2011 SP1 中将一个 XSLT TBB 的输出传递到另一个 XSLT TBB

将大型二进制文件上传到 SDL Tridion Multimedia Components 时出错

powershell 用于重新启动SDL Tridion Docs内容管理器服务的脚本。这包括Windows服务,组件服务和IIS应用程序池。