Administrator

【Salesforce】プラットフォームイベントからフローを起動させる方法

Administrator
この記事は約3分で読めます。

こんにちは、アンダーソンです。
今回はフローについての解説を書いていきたいと思います。
何度かにわけてフローの基本的な使い方なども書いていければと思ってますが、
まずは以前から気になっていたプラットフォームイベントからのフロー起動
をやっていきます。

スポンサーリンク

イベントの作成

設定からプラットフォームで検索して、新規プラットフォームイベントを作成します。

次に作成した、イベントの内容を作成していきます。
カスタム項目 & リレーション→新規から、必要に応じた項目を作成します。
今回はレコード名と作成フラグというのを作って、フラグがTrueであればフローでレコードを作成、
FalseであればName項目に同じテキストがあれば削除するといったものを
作りたいと思います。

フローを準備する

次にフローを準備しておきます。
フロー作成画面で、プラットフォームイベントフローを選択します。

次に先ほど作成したプラットフォームイベントを選択します。

下記のように受け取った値を判定して、Testオブジェクトのレコードを
作成もしくは削除という動作をしてみました。

では実際にイベントを登録してちゃんとフロー側で
処理が動くか試してみましょう。

Apexから呼び出してみる

ではプラットフォームイベントを呼び出しますが、
いくつかやり方があります。今回はApexを使ってやりますが、
プロセスビルダーからノンコーディングで呼び出すことも可能です。

Apexコードです。

TestEvent__e  newsEvent = new TestEvent__e (
           Name__c ='テストイベント送信!', 
           createFlg__c =true);

Database.SaveResult sr = EventBus.publish(newsEvent);

if (sr.isSuccess()) {
    System.debug('成功');
} else {
    for(Database.Error err : sr.getErrors()) {
        System.debug('エラー: ' +
                     err.getStatusCode() +
                     ' - ' +
                     err.getMessage());
    }
}

これを開発者コンソールから匿名実行してみます。
おそらくテストイベント送信!という名前のレコードが作成されるはずです。

ちゃんと成功しました。
ではレコードが作成されているかみてみましょう。

できました!
では次に先ほどの値をfalseにして削除されるかどうかやってみましょう。

問題なく削除されました。
このように何かのきっかけでプラットフォームイベントを使って
処理を行うことができますので、
このような使い方にも熟知しておかないといけないですね。

ちなみにイベントにはトリガを作成することもできますので、
外部からきたイベントに対してプラットフォーム側で反応する
というやり方もあります。

是非いろいろなパターンでの実装を考えてみてください。