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

use*_*297 6 tridion tridion-2011

难以理解事件阶段.

1)考虑组件保存操作.当根据内容规则覆盖内容时,可以在"已启动"阶段完成.如果内容违反内容规则,则可以在"已启动"或"已处理"事件阶段中抛出错误.

当"已启动"阶段本身对于内容覆盖和内容规则验证都足够时,"已处理"阶段何时有用?PLS.用一个例子来解释.

2)在保存和关闭组件时,会触发"保存"和"检入"事件.在"保存"操作的"已处理"阶段之后,将执行CheckIn操作.如果在CheckIn操作的"已启动"/"已处理"阶段发生任何错误,将发生"保存"操作的"TransactionAborted"阶段.

上面是我能想到的'TrasactionAborted'的唯一例子.你能提供任何其他有助于理解'TrasactionAborted'阶段的例子吗?

Bar*_*man 6

我试图在下面关于SDL Tridion World:SDL Tridion 2011 .NET事件的文章中对SDL Tridion 2011事件阶段,事件类型和主题类型做出完整的解释.

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

  1. 启动阶段
  2. CMS行动发生(不是阶段)
  3. 处理阶段
  4. 其中一个事务阶段(TransactionCommitted,如果事务成功,TransactionAborted,如果事务中止,TransactionInDoubt,当事务状态无法确定时,它既不会被提交也不会被中止,永远不会)

因此,如果您想在保存项目之前执行某些操作(例如对项目进行有效性检查,在这种情况下您可能希望阻止它被保存,您最好使用已启动阶段,但如果您想在之后执行某些操作该项目已保存(如将其放置在页面上),您应该使用"已提交的事务"阶段(在这种情况下可能是签入之一,而不是"保存"事件).

那么,什么时候处理阶段变得有用,我就永远不会想到一个简单的用例,但我确信在某些情况下它会在某些时候派上用场.它存在的事实并不意味着你需要马上使用它.


Arj*_*bbe 6

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

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

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

Ad2:通常,在发生任何异常时会触发Transaction Aborted.也许你可以在第2点详细说明一下?