ネストされたアクションとプライマリ アクションの違いは、アクション アクセス制御フックと通知フックが、ネストされたアクションでは実行されないということです。
フックがネストされたアクションを開始した場合は、Action Access Control フックは実行しません。 すべてのフックはスーパーユーザー権限で実行するので、権限レベルは既に最高 (スーパーユーザー) になっています。アクセス制御フックを、ネストされたアクションに対して実行する必要はありません。
ネストされたアクションのアクセスは、アクセス制御フックが 1 つも起動されていない場合でも認可されます。
通知フックは、デフォルトではネストされたアクションに対して実行しません。通知フックは、電子メールを送信するために使用されます。ネストされたアクションのそれぞれが電子メールを送信するようにすると、多数の電子メールが送信され、ユーザーはそれを 1 つのアクションだと考える可能性があります。CQHookExecute セッション変数を 1 に設定すれば、この動作をオーバーライドし、ネストされたアクションが通知フックを実行できるようにすることが可能です。
CQHookExecute セッション変数の設定は、次のようなコードで行うことができます。
dim session set session = GetSession session.NameValue "CQHookExecute", 1
$session->SetNameValue("CQHookExecute","1");
Commit フック内では、データベース レベルでのコミットはネストされたアクションのコミット時には実行されませんが、すべての変更が 1 つのアトミックなトランザクションとして含まれるように外部レベル コミットと結合されます。
ほかのすべてのフック タイプにおいては、ネストされたアクションは、外部レベル コミットとは無関係に、データベース レベルでコミットされます。ネストされたアクションで加えられた変更を、1 つのデータベース トランザクションとして最上位アクションの変更と結合する唯一の方法は、ネストされたアクションを Commit フックの内側にすることです。
フックの実行順序と、レコードがコミットされるタイミングの詳細については、Rational® ClearQuest® スキーマ開発者のオンライン ヘルプを参照してください。フィールド値の設定については、Entity オブジェクトの SetFieldValue メソッドを参照してください。