はじめに
みなさま、はじめまして、テラスカイの高橋です。
新型コロナウィルスが世間を騒がせていますが、みなさまも手洗い・うがい・マスクなどで予防していることと思います。オリンピックもありますし、早く沈静化するといいですね。
さっそくですが、今回は「承認情報の取得」について書いていきます。なぜ、新しい機能でもなく基本的な「承認情報の取得」について、今さら書くのだろうと思う方もいらっしゃるのはないでしょうか。
それは、承認情報を取得し外部システムへ連携する必要があった際に、時間をかけて調べることになったからです。
承認情報は標準オブジェクトで構成されていますので、データモデルやどのオブジェクトからどんな情報が取得できるか調べて、承認申請で想定通りにレコードが作成されているかを検証していたら時間がかかりました。
時間をかけずに承認情報を取得していただきたいのと、みなさんも1度は承認情報について調べることがあるのではと思いましたので書くことにしました。
新型コロナウィルスが世間を騒がせていますが、みなさまも手洗い・うがい・マスクなどで予防していることと思います。オリンピックもありますし、早く沈静化するといいですね。
さっそくですが、今回は「承認情報の取得」について書いていきます。なぜ、新しい機能でもなく基本的な「承認情報の取得」について、今さら書くのだろうと思う方もいらっしゃるのはないでしょうか。
それは、承認情報を取得し外部システムへ連携する必要があった際に、時間をかけて調べることになったからです。
承認情報は標準オブジェクトで構成されていますので、データモデルやどのオブジェクトからどんな情報が取得できるか調べて、承認申請で想定通りにレコードが作成されているかを検証していたら時間がかかりました。
時間をかけずに承認情報を取得していただきたいのと、みなさんも1度は承認情報について調べることがあるのではと思いましたので書くことにしました。
承認情報について
どう調べたかは後述しますので、まずは調べた結果から共有します。
承認オブジェクトの自分なりの解釈として
承認履歴の情報をどう取得するのか
承認履歴の情報(図1)が、どのオブジェクトのどの項目(図2)に該当するかまとめました。項目は必要と思った項目のみで抜粋しています。
承認オブジェクトのリレーションイメージ(図3)です。
API(SOQL)で承認情報の取得について
DataLoader(API)を経由しての、承認情報を取得するSOQLを考えてみました!
"プロセスノード(ステップ名の取得)"と"承認情報"を取得するためのSOQLを2回実行します。取得後に承認情報にステップの名称を付与します。
"プロセスノード(ステップ名の取得)"と"承認情報"を取得するためのSOQLを2回実行します。取得後に承認情報にステップの名称を付与します。
① プロセスノードの取得するSOQLサンプル
Select Id, Name FROM ProcessNode
SOQL プロセスノード
② プロセスインスタンスステップを取得するSOQLサンプル
Select StepNodeId, ProcessInstance.ProcessDefinition.Name, ProcessInstance.Targetobject.Name, ProcessInstance.Status, OriginalActor.Name, Actor.Name, Comments, CreatedDate, StepStatus FROM ProcessInstanceStep ORDER BY ProcessInstanceId, CreatedDate ASC
プロセスインスタンスステップ
③ 承認情報取得結果
SOQLで取得した結果をExcelで表(図4)にするとこんな感じにできあがります!
承認履歴と並び順を揃えるなら"降順"にしたり、ステータスをラベル名に変えたりして下さい。
※ DataLoaderでは"TOLABEL"は使えませんでした。
承認履歴と並び順を揃えるなら"降順"にしたり、ステータスをラベル名に変えたりして下さい。
※ DataLoaderでは"TOLABEL"は使えませんでした。
承認情報をどのように調べたのか
ここからは、承認情報を取得するために調べたことについて、順を追って説明していきます。
① 標準オブジェクトのデータモデルについて
承認情報を取得するためにどんなオブジェクトがあって、どんな関連性があるのかについてデータモデルで確認しました。開発ドキュメントの"SOAP API 開発者ガイド"のデータモデルに記載がありました。下記のようなデータモデル(図5)であることが分かります。
② 標準オブジェクトの項目と内容について
承認情報のデータモデルが分かったので、次にどのオブジェクトから、どの項目を取得すればよいかをオブジェクトリファレンスで確認しました。開発ドキュメントの"SOAP API 開発者ガイド"の標準オブジェクトに記載がありました。下記のような項目と内容(図6)であることが分かります。
※ サンプルとして、"ProcessInstance"のオブジェクトリファレンスです。
※ サンプルとして、"ProcessInstance"のオブジェクトリファレンスです。
③ 承認履歴画面と同じ情報をどう取得するか
オブジェクトの構成や項目が分かったので、次に承認の状況によって各オブジェクトへどのようにレコードが作成されているか検証し、どのオブジェクトからどの項目を取得するか決めました。
検証としては、Developer環境で承認プロセスを作成し、下記のパターン(図7)毎にオペレーションを実施しました。結果の確認として、DataLoaderで各オブジェクトのレコードを取得し、自分なりに分析し解釈しました。
検証としては、Developer環境で承認プロセスを作成し、下記のパターン(図7)毎にオペレーションを実施しました。結果の確認として、DataLoaderで各オブジェクトのレコードを取得し、自分なりに分析し解釈しました。
おわりに
標準機能は便利なのですが、その反面で利用するときには想定している機能かを調べて検証するというところが重要だと考えています。承認の機能や承認情報を利用する際に、今回の記事をお役に立てていただければと思います!
37 件