例えば、スキーマによって、変更できるレコードもしくはレコード タイプ、変更できるフィールド、またはマルチレコード更新操作を実行できるユーザーが制限されていたり、エラー件数が制限に達すると変更できないようになっていたりする場合があります。 また、レコード タイプ、関連する Project レコード、現在のユーザー、またはグループ メンバーシップに基づく制限がある可能性があります。
ratl_MultiModifyBatchStatus セッション変数および ratl_MultiModifyBatchMode セッション変数は、マルチレコード更新が、フックを起動するレコードの操作を行うときに設定されます。このような操作の例としては、すべてのアクション フェーズ、レコード スクリプト別名アクション、フィールド変更、選択リストのフック、レコードの編集処理のために実行される可能性があるフック、あるいはマルチレコード更新に組み込まれていないフックなどがあります。
以下の例は、現行レコードが、マルチレコード更新が行われているレコードであるかをチェックする方法を示しています。 この例は、アクション アクセス制御フックで使用されることを想定しています。 アクション制御フックは、マルチレコード更新が進行中であるかどうかをチェックした後、失敗カウントをチェックします。 10 以上の失敗がある場合、フックは Perl die () ステートメントを使用してエラーを起こします。マルチレコード更新は、引き続きマルチレコード更新結果セット内のすべてのレコードを処理します。このフック例では、引き続き、後続の各レコードを失敗としてマークします。
$result = 1;
# If doing multirecord update, check if it has too many errors.
#
my $mru_id = $session->GetNameValue("ratl_MultiModifyBatchMode");
if ($mru_id ne "") {
my $me = $entity->GetDisplayName();
if ($mru_id eq $me) {
# Yes, currently doing Multi-Record Update on the current record.
my $status = $session->GetNameValue("ratl_MultiModifyBatchStatus");
my ($count, $ordinal, $failures, $ignore) = split('変更依頼n', $status, 4);
if ($failures > 10) {
die("This multirecord update has encountered too many errors ($failures). No more updates are allowed.")
}
}
}