6

イベントフェーズを理解するのが難しい。

1)コンポーネントの保存アクションを検討します。コンテンツルールに基づいてコンテンツをオーバーライドする場合は、「開始済み」フェーズでオーバーライドできます。コンテンツがコンテンツルールに違反している場合、「開始済み」または「処理済み」イベントフェーズでエラーがスローされる可能性があります。

「開始」フェーズ自体がコンテンツのオーバーライドとコンテンツルールの検証の両方に十分である場合、「処理済み」フェーズはいつ役立ちますか?pls。例を挙げて説明します。

2)コンポーネントを保存して閉じるときに、「保存」イベントと「チェックイン」イベントがトリガーされます。保存アクションの「処理済み」フェーズの後、チェックインアクションが実行されます。CheckInアクションの「Initiated」/「Processed」フェーズ中にエラーが発生した場合、Saveアクションの「TransactionAborted」フェーズが発生します。

上記は、「TrasactionAborted」について私が考えることができる唯一の例です。「TrasactionAborted」フェーズを理解するのに役立つ他の例を提供できますか?

4

2 に答える 2

6

Ad1:開始されたフェーズでは、アイテムはまだデータベースに保存されておらず、ロールバックされるトランザクションはありません。データを検証する場合は、データベース内の何かが変更される前にこれを行う必要があります。もちろん、トランザクションはサポートされており、例外を発生させるとすべて問題ありませんが、不要なアクションを実行すると、パフォーマンスの全体像がわかります。

処理済みは、アイテムコンテンツ自体を操作しないが、変更をロールバックできる必要がある状況で役立ちます。例:アーカイブまたは非常にビジネスクリティカルなイベントログに書き込む機能。

もう1つのケースは、ローカライズされた子に翻訳が必要なフラグを設定することです。それが失敗した場合は、親アイテムの変更もキャンセルすることをお勧めします(何らかの理由で)。

Ad2:通常、トランザクションの中止は、例外が発生したときにトリガーされます。たぶん、ポイント2についてもう少し詳しく説明できますか?

于 2012-07-16T09:52:36.977 に答える
6

SDL Tridion Worldに関する次の記事で、SDL Tridion 2011のイベントフェーズ、イベントタイプ、およびサブジェクトタイプについて完全に説明しようとしました:SDL Tridion2011.NETイベント

つまり、フェーズは特定の順序で実行されるため、特定の時間にアクションにフックできます。順序は次のとおりです。

  1. 開始フェーズ
  2. CMSアクションが実行されます(フェーズではありません)
  3. 処理フェーズ
  4. トランザクションフェーズの1つ(トランザクションが成功した場合はTransactionCommitted、トランザクションが中止された場合はTransactionAborted、トランザクションの状態を判断できない場合はTransactionInDoubt、コミットも中止もされないため、決して実行されません)

したがって、アイテムが保存される前に何かを実行したい場合(アイテムの有効性チェックを実行する場合など、アイテムが保存されないようにする場合は、開始フェーズを使用するのが最適ですが、後で何かを実行したい場合はアイテムが保存されている場合(ページに配置するなど)、トランザクションコミットフェーズを使用する必要があります(この場合、保存イベントではなく、おそらくチェックインのフェーズです)。

したがって、処理済みフェーズが役立つのはいつですか。単純なユースケースは考えられませんが、状況によっては、いつか役立つと確信しています。それがそこにあるという事実は、あなたがすぐにそれを使う必要があるという意味ではありません。

于 2012-07-16T09:19:08.787 に答える