技術の進歩で、新しい選択肢を!(主従関係オブジェクトの項目変更履歴レポート)【Salesforce】

読者の皆様、お久しぶりです コムコム.comです。
今回は、6年前の本社の技術ブログの内容で、新しい選択肢が見つかったので、それを紹介したいと思います。

まず、本社の技術ブログとしては、以下の内容になります。

>>主従関係オブジェクトの項目変更履歴レポートについて

どうしても従オブジェクトの項目変更履歴レポートを作成したい場合は、
 ・ApexDataLoaderから、該当の項目履歴情報をCSVエクスポートし、利用する
 ・Visualforceで履歴を表示させる画面(レポート)を作成する。
 ・Apexトリガを利用し、別のカスタムオブジェクトに変更履歴データを登録し、
  そのカスタムオブジェクトのレポートを作成する。
といった方法がありますが、なかなか敷居が高いものとなります。

あれから6年が経過しましたが、現在も従オブジェクトの変更履歴レポートの出力は出来ません。
先日、従オブジェクトの項目履歴をレポートで見たいと要望があり、最初はApexトリガで実装しようと考えたのですが、Spring15から登場したプロセスビルダーを使って実現出来ないか、頑張ってみました。

まず今回の検証用に主従関係を結んでいる以下の従オブジェクトを準備します。

1.変更履歴を格納するカスタムオブジェクトを作成
項目は以下の通りで、変更前・変更後・項目名のテキスト型と対象のオブジェクトと主従関係を結びます。

2.プロセスビルダーを作成
プロセスビルダー名とAPI名は任意で作成し、【オブジェクトを選択してプロセスを開始するタイミングを指定】に、変更履歴を取得したいオブジェクトを指定します。そして、【レコードを作成または編集したとき】にを選択します。この項目を選択しないと、変更履歴を取得出来なくなります。

3.プロセスビルダーの条件を設定
【条件を追加】を選択し、履歴に残したい項目変更時に動作するように設定します
今回の要件は、変更時のみなので、履歴に残したい項目が変更時のみ動作するようにします。

4.変更履歴作成
【アクションを追加】を選択し、レコードを作成するように以下の設定をします。
・アクション種別:レコードを作成
・アクション名 :任意
・レコードタイプ:作成した、変更履歴カスタムオブジェクト

①従オブジェクト:親オブジェクトのSalesforceID
②項目名    :変更対象のカスタム項目名
③変更前値   :変更前の値は、数式のPRIORVALUEで取得が出来るので、
         数式でこの項目を構築します。
         設定は、PRIORVALUE([SlaveObj__c].TextPara__c ) となります。
④変更後値   :変更対象のカスタム項目の値

5.プロセスビルダーの有効化
1~4で作成して完成したのが、以下の内容になります。項目を増やしたい場合は、3~4の手順にそって、条件を追加していきます。
動作を検証するために、プロセスビルダーを有効化します。

従オブジェクトのテキスト項目を変更します。変更後に、変更履歴が作成されました。

変更履歴の中身を見てみると、以下のようになっており、変更前後の値が取れている事が取得出来ていることがわかります。

今回主従関係の従オブジェクトの項目変更履歴レポートを作る為に、カスタムオブジェクトを作成して、プロセスビルダーを使って変更時にレコードを作成する方法を解説しました。Apexトリガを使って作成するよりは、技術的なハードルは低くなりましたが、それでもカスタムオブジェクトを1つ使う点では、以前と変わりありません。
やはり、今後の機能改善で、従オブジェクトでも変更履歴レポートが出力できるようになって欲しいものです。
それでは、またどこかでお会いしましょう。