tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:承認履歴とSOQLクエリ

Salesforce標準機能のひとつ、承認申請の履歴情報を取得できるSOQLクエリの実行方法についてです。

f:id:tyoshikawa1106:20160302085653p:plain


承認履歴の情報は以下のオブジェクトに格納されています。


このうち、ProcessInstanceWorkitemとProcessInstanceStepの項目はProcessInstanceHistoryでまとめて取得できるみたいです。



ProcessInstanceHistoryの情報はProcessInstanceオブジェクトのサブクエリでまとめて取得できます。

SELECT Id, (SELECT Id, StepStatus, Comments FROM StepsAndWorkitems)
FROM ProcessInstance


ProcessInstanceNodeオブジェクトには日付情報などより詳細な情報が登録されています。このオブジェクトはサブクエリなどで取得できません。ProcessInstanceオブジェクトのIDなどを持っているのでそちらで紐付けます。


サンプルクエリです。
gist.github.com


これで一通りの必要な情報を取得できると思います。
f:id:tyoshikawa1106:20160302090657p:plain

f:id:tyoshikawa1106:20160302090752p:plain


ProcessInstanceHistoryの『OriginalActorId』は割当先、『ActorId』は承認者となっているみたいです。
ユーザIDがセットされていますが、クエリでユーザ名を紐つけることはできないみたいで、別にユーザ情報をMap変数か何かに準備して紐つける必要がありそうです。


システム管理者権限で強制的に再度承認申請を行ったりして次のようになっている場合は、ProcessInstanceレコードが2件存在している状態です。(確認していませんが却下→承認申請も同様だと思います。)
f:id:tyoshikawa1106:20160302091206p:plain


承認履歴とSOQLクエリの情報はこんな感じです。

追記

追加で確認できたことがあったので追記記事書きました。