Process BuilderからApexクラスを呼び出すには@InvocableMethodを宣言することで可能になります。Process Builderから値を受け取る場合はList型の引数を使って受け取るようになっていますが、@InvocableVariableを利用することで直接クラス変数に値をセットすることも可能です。
上のリンク先で紹介されているサンプルコードを実際に試してみました。テストクラスも用意してパッケージ化してあります。
Process Builderから値を渡す場合、基本的に次のようになります。
変数名はApexクラス側で指定した名称と同じものが表示されます。
@InvocableVariableを宣言した変数が存在する場合はこのように選択肢に追加されます。
InvocableMethodは戻り値として値を返すことが可能です。この戻り値を次の処理で利用するということも可能だと思うのですが、その部分は確認できませんでした。
InvocableMethod Sample Code
基本的な使い方は確認できたので実際にサンプルアプリを作ってみました。
ProjectオブジェクトとProjectMemberオブジェクトの情報を元に行動と行動の参加者を自動登録する機能となっています。コードはGitHubで公開してあります。
Project & ProjectMemberオブジェクトの作成
Notification項目の更新
行動&行動の参加者の自動作成 (Apex処理)
・・・とこんな感じです。InvocableMethodですが、引数は必ずリスト型にする必要があるみたいです。Apexトリガーのように複数件対応を行う必要が無いかもと考えたのですがそういうわけにはいきませんでした。