こんにちは、アンダーソンです。
今回はプロセスビルダーからApexを呼び出す方法について書いていきます。
Contents
Apex側の設定
まずApex側の設定としては
@InvocableMethodをメソッドに対して付与します。
@InvocableMethodの後に(label=’String’,description=’String’)
でプロセスビルダー側に表示させる表示名などを設定することもできます。
@InvocableMethod(Label='テスト')
public static void testCallFromProcess(){
system.debug('呼び出されました。');
}
これでOKです。
さらにデータの連携をすることも可能です。
その場合はメソッドの引数に設定をします。
@InvocableMethod(Label='テスト')
public static void testCallFromProcess(List<Id> Ids){
system.debug(Ids);
}
これでOKです。
ではプロセスビルダー側の設定をしていきます。
プロセスビルダー側の設定
通常通りオブジェクトの設定と、条件分岐を決めてアクションまで進みます。
アクション種別をApexにすると先ほど作成したメソッドのラベル名が出ていますので
選択します。
その際に引数があれば下記のように出てきますので設定します。

今回はケースがクローズされた時に動くプロセスにして、実際にやってみた結果です。

おまけ
基本は引数に設定できるのは1つだけなのですが、クラスの設定で渡す値を増やすことができます。
public class testCall{
@InvocableVariable
public Id ids;
@InvocableVariable
public String message;
@InvocableVariable
public Date StartDate;
}
InvocableVariableアノテーションを使って内部クラスを作成します。
必要に応じて(required=true)を設定します。
呼び出される側も少し変えました。
@InvocableMethod(Label='テスト')
public static void testCallFromProcess(List<testCall> calls){
system.debug(calls[0].ids);
system.debug(calls[0].message);
system.debug(calls[0].StartDate);
}
これだと狙った値を渡すことも可能です。

コメント