オブジェクト間ルール
あるオブジェクトの条件が別のオブジェクトの動作を引き起こすルールを定義します。保存を止める、レコードを作成する、関連するレコードを更新する、といった動作です。整合性のための自動化を、コードなしのフォームで書け、スケジュール実行を待つ必要もありません。
業務の規則には、1 つの項目だけの検証では収まらないものがあります。一定額を超える商談は提案書を添付しないと保存できない、受注した商談はすべて導入のレコードを生成する、アカウントのステータス変更はひもづく契約にも反映する、といったものです。オブジェクト間ルールは、まさにこれを表現します。あるオブジェクトの条件が、別のオブジェクトに効果を及ぼします。
作成の手順
- 「設定」を開き、「自動化とプロセス」のグループにある「オブジェクト間ルール」をクリックします。
- 「ルール名」を入力し、「元オブジェクト」、つまりレコードを監視する対象を選びます。
- 「タイミング」で、作成時、編集時、作成時または編集時のいずれかを選びます。
- 「条件(すべてが真)」で「条件を追加」をクリックし、項目、演算子、値の 1 行ずつを組み立てます。
- 「アクション」を選びます。禁止、レコードを作成、関連を更新のいずれかです。後の 2 つでは対象オブジェクトも指定します。
- 「有効」にチェックを入れ、「保存」をクリックします。
項目は入力ではなく一覧から選ぶので、内部名を書き間違えることがありません。使える演算子は、等しい、等しくない、より大きい、以上、より小さい、以下、含む、空である、入力済みである、です。条件は加算的で、ルールが動くにはすべてが真である必要があります。条件が 1 つもないルールは常に動きます。
3 つのアクション
- 禁止: 保存を止め、指定した禁止メッセージを表示します。確認は保存の前に行われるので、中途半端な状態が残ることはありません。
- レコードを作成: 対象オブジェクトにレコードを作成します。「新しいレコードのデータ」で、入力する項目と値の組み合わせを組み立てます。
- 関連を更新: 「ひもづけの項目」(元オブジェクトのリレーション項目)によって元のレコードを指している対象オブジェクトのレコードをたどり、「変更する項目」に「新しい値」を書き込みます。
Example: ルール「大型案件では提案書を必須にする」。元オブジェクトは商談。タイミングは作成時または編集時。条件は、金額が 50000 より大きく、かつ提案書が空であること。アクションは禁止で、メッセージは「50,000 レアルを超える商談を保存する前に提案書を添付してください」。その結果、提案書なしで保存しようとした人にはこのメッセージが表示され、保存は行われません。
注意点と制限
- ルールによって起こされたアクションは、対象オブジェクトのルールを再評価しません。これは意図的で、2 つのルールが互いを呼び合ってシステムが止まることを防ぎます。
- 1 つのルールで条件は最大 20 個までです。
- 「有効」のチェックを外すと、削除せずにルールを止められます。疑わしいものを検証するときの安全な方法です。
- 禁止のルールは全員に効き、同じ経路で書き込むインポートや連携も含まれます。メッセージは読む人のことを考えて書いてください。
- 「関連を更新」では、「ひもづけの項目」を元オブジェクトのリレーション項目から選びます。これと「変更する項目」がなければ、ルールは何もしません。
操作できる人
ルールの作成、編集、削除には設定を管理する権限が必要です。ただし効果は全員に及びます。元オブジェクトのレコードを保存する人は誰でも、このルールを通ります。
よくある質問
- ルールが動きません。「有効」になっているか、トリガーが試した操作を含んでいるか、すべての条件が同時に真になっているかを確認してください。
- 数値と日付の比較について。より大きい、より小さいの演算子は数値として比較します。等しい と 含む はテキストとして比較し、含む では大文字小文字を区別しません。
- ルールを削除すると、すでに行われたことは元に戻りますか。戻りません。作成されたレコードや書き込まれた値は残ります。ルールはそれ以降、作用しなくなるだけです。
- 「検証」との違いは何ですか。検証はレコード自身を項目ごとに扱います。オブジェクト間ルールは、あるオブジェクトを見て別のオブジェクトに作用します。