【Salesforce】フローからApexを呼び出して別ページへリダイレクトさせたい
はじめに
はじめまして、CREFILでエンジニアをしている藤野です。
今回はフローから別ページにリダイレクトする方法をご紹介します。
フローでごちゃごちゃ処理をしてから、別ページにリダイレクトさせたい…
LWCを使わずにできるだけ標準機能でリダイレクトさせたい…
なんて方はご参考になると思います。
対象読者
Salesforceエンジニア
フローを使ってリダイレクト処理を実行させたい方
「Apexの基本構文」、「フローの作成方法」の解説は割愛させていただきます。
実装手順
それでは、実装していきます。
今回はCREFILホームページにリダイレクトするフローを例に解説します。
1. Apexアクションの準備
まずはApexアクションを作成します。
@InvocableMethodアノテーションを使用した関数を作成しましょう。
public with sharing class Redirect {
/**
* フローからCrefilホームページにリダイレクトする
*/
@InvocableMethod(label='フローからCrefilホームページにリダイレクト' description='フローからCrefilホームページにリダイレクトする')
public static void RedirectToCrefil() {
}
}
2. リダイレクト処理を実装する
次にリダイレクト処理を実装します。
リダイレクト実行関数
リダイレクトにはSystem.aura.redirectを使用します。
System.aura.redirectは@AuraEnabledアノテーションを使用した関数内で実行する必要があるため、Apexアクション用とは別の関数を作成する必要があります。
/**
* SVF Cloudにリダイレクトする
* System.auraでリダイレクトを実行する。
* System.auraはアノテーション「AuraEnabled」をつけた関数内で実行する必要がある。
*/
@AuraEnabled
public static void redirectToPageReference(string url){
// auraでリダイレクトを実行する。
PageReference pageRef = new PageReference(url);
System.aura.redirect(pageRef);
}
コード全体
Apexアクション用の関数の中で、リダイレクト実行関数を呼び出せば完成です。
public class Redirect {
/**
* フローからCrefilホームページにリダイレクトする
*/
@InvocableMethod(label='フローからCrefilホームページにリダイレクト' description='フローからCrefilホームページにリダイレクトする')
public static void RedirectToCrefil() {
// リダイレクト実行
redirectToPageReference('https://crefil.com/');
}
/**
* リダイレクトを実行する。
*/
@AuraEnabled
public static void redirectToPageReference(string url){
// auraでリダイレクトを実行する。
PageReference pageRef = new PageReference(url);
System.aura.redirect(pageRef);
}
}
3. フローを作成する
Apexの実装が完了したら、フローを作成していきます。
作成するフローは下記の順で実行されます。
フロー画面を表示
フロー画面で「はい」をクリック
CREFILホームページにリダイレクト
動作確認
一通り実装したので、動作確認を行います。
フロー画面を表示して、「はい」をクリックすると…
CREFILホームページにリダイレクトしました!
ApexアクションにAura関数を組み合わせることでリダイレクトを実現させました。フローからリダイレクトさせたい方はぜひご参考ください。