tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Process BuilderからApexクラスを呼び出せるInvocableMethod Annotationの使い方

Process BuilderからApexクラスを呼び出すには@InvocableMethodを宣言することで可能になります。Process Builderから値を受け取る場合はList型の引数を使って受け取るようになっていますが、@InvocableVariableを利用することで直接クラス変数に値をセットすることも可能です。


上のリンク先で紹介されているサンプルコードを実際に試してみました。テストクラスも用意してパッケージ化してあります。


Process Builderから値を渡す場合、基本的に次のようになります。

f:id:tyoshikawa1106:20150303074826p:plain


変数名はApexクラス側で指定した名称と同じものが表示されます。

f:id:tyoshikawa1106:20150303074827p:plain


@InvocableVariableを宣言した変数が存在する場合はこのように選択肢に追加されます。

f:id:tyoshikawa1106:20150303074828p:plain


InvocableMethodは戻り値として値を返すことが可能です。この戻り値を次の処理で利用するということも可能だと思うのですが、その部分は確認できませんでした。

InvocableMethod Sample Code

基本的な使い方は確認できたので実際にサンプルアプリを作ってみました。

f:id:tyoshikawa1106:20150309223306p:plain


ProjectオブジェクトとProjectMemberオブジェクトの情報を元に行動と行動の参加者を自動登録する機能となっています。コードはGitHubで公開してあります。

Project & ProjectMemberオブジェクトの作成

f:id:tyoshikawa1106:20150309224047p:plain

Notification項目の更新

f:id:tyoshikawa1106:20150309224215p:plain:w300

行動&行動の参加者の自動作成 (Apex処理)

f:id:tyoshikawa1106:20150309225046p:plain

f:id:tyoshikawa1106:20150309225055p:plain


・・・とこんな感じです。InvocableMethodですが、引数は必ずリスト型にする必要があるみたいです。Apexトリガーのように複数件対応を行う必要が無いかもと考えたのですがそういうわけにはいきませんでした。

f:id:tyoshikawa1106:20150309225843p:plain:w400

Demo Video