Newer Version Available
DML オプションの設定
Database.DMLOptions オブジェクトで目的のオプションを設定することにより、挿入操作や更新操作の DML オプションを指定できます。操作の Database.DMLOptions を設定するには、sObject で setOptions メソッドをコールするか、これをパラメータとして Database.insert および Database.update メソッドに渡します。
- 項目の切り捨て動作。
- 割り当てルール��報。
- 重複ルール情報。
- メールの自動送信を許可するかどうか。
- 表示ラベルのユーザロケール。
- 部分的な完了を操作で許可するかどうか。
DMLOptions は、API バージョン 15.0 以降で保存された Apex にのみ使用できます。DMLOptions の設定は、Salesforce ユーザインターフェースからではなく、Apex DML を使用して実行されたレコード操作でのみ有効です。
allowFieldTruncation プロパティ
allowFieldTruncation プロパティでは、文字列の切り捨て動作を指定します。バージョン 15.0 より前の API に対して保存された Apex では、文字列に値を指定し、その値が大きすぎる場合、値は切り捨てられます。API バージョン 15.0 以降では、大きすぎる値が指定されると、操作は失敗し、エラーメッセージが返されます。allowFieldTruncation プロパティを使用すると、API バージョン 15.0 以降に対して保存された Apex の新しい動作ではなく、以前の動作である切り捨てを使用するように指定できます。
1Database.DMLOptions dml = new Database.DMLOptions();
2
3dml.allowFieldTruncation = true;assignmentRuleHeader プロパティ
assignmentRuleHeader プロパティは、ケース、またはリード作成時に使用する割り当てルールを指定します。
- assignmentRuleID: ケースまたはリードの割り当てルールの ID。割り当てルールは有効または無効にできます。ID は、AssignmentRule sObject を照会して取得することができます。assignmentRuleId が指定されている場合は、useDefaultRule を指定しないでください。値が適切な ID 形式 (15 文字または 18 文字の Salesforce ID) でない場合、コールは失敗し、例外が返されます。
- useDefaultRule: ケー���またはリードにデフォルトの (有効な) 割り当てルールを使用するかどうかを示します。useDefaultRule が指定されている場合は、assignmentRuleId を指定しないでください。
1Database.DMLOptions dmo = new Database.DMLOptions();
2dmo.assignmentRuleHeader.useDefaultRule= true;
3
4Lead l = new Lead(company='ABC', lastname='Smith');
5l.setOptions(dmo);
6insert l;1Database.DMLOptions dmo = new Database.DMLOptions();
2dmo.assignmentRuleHeader.assignmentRuleId= '01QD0000000EqAn';
3
4Lead l = new Lead(company='ABC', lastname='Smith');
5l.setOptions(dmo);
6insert l;dupicateRuleHeader プロパティ
dupicateRuleHeader プロパティは、重複として識別されたレコードを保存できるかどうかを決定します。重複ルールは重複管理機能の一部です。
- allowSave: 重複として識別されたレコードを保存できるかどうかを示します。
1Database.DMLOptions dml = new Database.DMLOptions();
2dml.DuplicateRuleHeader.AllowSave = true;
3Account duplicateAccount = new Account(Name='dupe');
4Database.SaveResult sr = Database.insert(duplicateAccount, dml);
5if (sr.isSuccess()) {
6 System.debug('Duplicate account has been inserted in Salesforce!');
7}emailHeader プロパティ
- ケースまたは ToDo の新規作成
- ケースメールの取引先責任者への変換
- 新規ユーザのメール通知
- リードキューのメール通知
- パスワードのリセット
API バージョン 15.0 以降に対して保存された Apex で、Database.DMLOptions emailHeader プロパティを使用すると、Apex DML コードの実行によりイベントのいずれかが発生したときに送信されるメールに関する追加情報を指定できます。
- triggerAutoResponseEmail: リード、ケースに対して自動応答ルールをトリガするか (true)、トリガしないか (false) を示します。このメールは、ケースの作成やユーザパスワードのリセットなど、さまざまなイベントによって自動的にトリガすることができます。この値が true に設定されている場合、ケースが作成されると、ContactID に指定された取引先責任者のメールアドレスがあれば、メールはそのアドレスに送信されます。アドレスがない場合、メールは SuppliedEmail で指定されたアドレスに送信されます。
- triggerOtherEmail: 組織外のメールをトリガするか (true)、トリガしないか (false) を示します。このメールは、ケースの取引先責任者の作成、編集、削除によって自動的にトリガされます。
- triggerUserEmail: 組織内のユーザに送信されるメールをトリガするか (true)、トリガしないか (false) を示します。このメールは、パスワードのリセット、ユーザの新規作成、ToDo の作成または変更など、さまざまなイベントによって自動的にトリガされます。
自動送信メールは Salesforce ユーザインターフェースのアクションでトリガできますが、emailHeader の DMLOptions 設定は Apex コードで実行された DML 操作のみで有効になります。
1Account a = new Account(name='Acme Plumbing');
2
3insert a;
4
5Contact c = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber', accountid=a.id);
6
7insert c;
8
9Database.DMLOptions dlo = new Database.DMLOptions();
10
11dlo.EmailHeader.triggerAutoResponseEmail = true;
12
13Case ca = new Case(subject='Plumbing Problems', contactid=c.id);
14
15database.insert(ca, dlo);- ユーザに対するグループイベントの招待状の送信は、triggerUserEmail オプションの影響を受けます。
- リードまたは取引先責任者に対するグループイベントの招待状の送信は、triggerOtherEmail オプションの影響を受けます。
- グループイベントの更新または削除時に送信されるメールも、送信対象に基づき triggerUserEmail や triggerOtherEmail オプションの影響を受けます。