Category Archives: Apex

親子のINSERTをApexでどのように書くか

概要 商談・商談商品をベースに契約・契約商品を自動作成する場合や、契約・契約商品をベースに請求・請求明細を自動作成する場面など、親レコードと子レコードをセットでInsertしたいという場合に、Apexでどのようなコードを書くかという話 何が問題か 親-子のセットのInsertが一回だけの場合は、以下のようなベタベタの書き方でも特に問題はない。 親をInsert 子のインスタンスで親への参照を付ける… Read More »

変更データキャプチャとプラットフォームイベントの概要

前書き 「変更データキャプチャ」と「プラットフォームイベント」はそれぞれイベント駆動型のインテグレーションを実現するためにSalesforceが提供しているOOTB機能である。 「イベント駆動型のインテグレーション」とは、DBへの変更操作というイベントを起点として当該のイベントの内容を非同期的に(=RESTのようにレスポンスを待つことなく)別システムに通知する種類のインテグレーションを意味する。 SFにおけるイベント駆動型インテグレーションは、①「CometDプロトコル(=HTTPリクエスト後、レスポンスが返ってくるまで接続状態を維持し続けるロングポーリングを実現する仕組みの一つ)を利用する種類の連携」と②「イベントバス内のイベント(※一般的にはメッセージキュー内のメッセージ)を経由してデータのやり取りを行う種類の連携」に大別される。 イベント駆動型のインテグレーションは、非イベント駆動型のインテグレーション(すなわち、イベントやメッセージを介さない同期的インテグレーション)と比較して以下のようなメリットを有する。 Producer側がConsumer側からのレスポンスを待つ必要がないため、スループットが向上する… Read More »

Apex Triggerを利用したValidationの例

想定ユースケース レコードの任意の項目のUpdate時にValidateをかけ、問題があればエラーメッセージを表示した上でUpdate処理をロールバックしたい。 解決策 Apex Trigger内でValidateを行い、問題があればaddError()メソッドを利用してレコードページ上にエラーメッセージを表示する。 なお、以下の仕様により、トリガフローでは対応できない… Read More »