この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Interview クラス

Flow.Interview クラスは、フローへの高度なコントローラーアクセスとフローを起動する機能を提供します。

名前空間

Flow

使用方法

フローの実行時に SOQL および DML 制限が適用されます。Salesforce ヘルプ「トランザクション単位のフロー制限」を参照してください。

インタビューオブジェクトを作成するには、2 つのオプションがあります。
  • 次を使用してクラスで直接オブジェクトを作成する。
    • 名前空間なし: Flow.Interview.flowName
    • 名前空間: Flow.Interview.namespace.flowName
  • createInterview() を使用して動的にオブジェクトを作成する。

メソッドまたはクラスを再利用する必要がある場合、createInterview() のみを使用することをお勧めします。createInterview() の使用には次の難点があります。

  • createInterview() を使用するクラスをパッケージ化する場合、関連付けられたフローを手動で追加する必要がある。
  • フローを削除すると、Salesforce は createInterview() でフローが参照されているかどうかを確認しない。

メモ

例: フローインタビューの開始

次の例は、Trailhead の「割引計算機能の構築」プロジェクトにある、フローのインタビューを開始するすべてのサンプルコントローラーです。次の情報に基づき、それぞれ異なる順列が表示されます。
  • インタビューが Flow.Interview.myFlow で静的に作成されたか、createInterview() で動的に作成されたか。
  • フローが管理またはローカルのどちらであるか。
ローカルフロー用に静的に作成されたインタビュー
1{
2  Map<String, Object> inputs = new Map<String, Object>();
3  inputs.put('AccountID', myAccount);
4  inputs.put('OpportunityID', myOppty);
5  
6  Flow.Interview.Calculate_discounts myFlow = 
7    new Flow.Interview.Calculate_discounts(inputs);
8  myFlow.start();
9}
ローカルフロー用に動的に作成されたインタビュー
1public void callFlow(String flowName, Map <String, Object> inputs) {
2  Flow.Interview myFlow = Flow.Interview.createInterview(flowName, inputs);
3  myFlow.start();
4}
管理フロー用に静的に作成されたインタビュー
1{
2  Map<String, Object> inputs = new Map<String, Object>();
3  inputs.put('AccountID', myAccount);
4  inputs.put('OpportunityID', myOppty);
5  
6  Flow.Interview.myNamespace.Calculate_discounts myFlow = 
7    new Flow.Interview.myNamespace.Calculate_discounts(inputs);
8  myFlow.start();
9}
管理フロー用に動的に作成されたインタビュー
1public void callFlow(String namespace, String flowName, Map <String, Object> inputs) {
2  Flow.Interview myFlow = Flow.Interview.createInterview(namespace, flowName, inputs);
3  myFlow.start();
4}

例: 変数値の取得

次のサンプルでは、getVariableValue メソッドを使用してフローからブレッドクラム (ナビゲーション) 情報を取得します。そのフローにサブフロー要素が含まれ、参照される各フローにも vaBreadCrumb 変数が含まれる場合、どのフローでインタビューが実行されているかに関わらず、ブレッドクラムをユーザーに提供できます。
1public class SampleController {
2
3   //Instance of the flow
4   public Flow.Interview.Flow_Template_Gallery myFlow {get; set;}
5
6   public String getBreadCrumb() {
7      String aBreadCrumb;
8      if (myFlow==null) { return 'Home';}
9      else aBreadCrumb = (String) myFlow.getVariableValue('vaBreadCrumb');
10
11      return(aBreadCrumb==null ? 'Home': aBreadCrumb);
12
13   }
14}

Interview のメソッド

Interview のインスタンスメソッドを次に示します。

createInterview(namespace, flowName, inputVariables)

名前空間にあるフローのインタビューを作成します。

署名

public static Flow.Interview createInterview(String namespace, String flowName, Map<String,ANY> inputVariables)

パラメーター

namespace
型: String
フローの名前空間。
flowName
型: String
フローの API 参照名。
inputVariables
型: Map<String,Object>
フロー入力変数の初期値。

戻り値

型: Flow.Interview

使用方法

このメソッドを使用して、start() メソッドの Flow.Interview オブジェクトを動的に作成します。

インタビューから出力変数値を取得する方法は、インタビューを保存している Apex 変数の型によって異なります。
  • 変数が特定のフローにキャストされる場合、myFlow.myVar を使用して変数にアクセスできます。ここで、myVar は変数の名前です。
    1system.debug('My Output Variable: ' + myFlow.varName);
  • 変数が Flow.Interview 型で特定のフローにキャストされない場合、getVariableValue() を使用してフローの変数にアクセスする必要があります。
    1system.debug('My Output Variable: ' + myFlow.getVariableValue('varName'));

現在の組織にフローが存在しない場合、TypeException が発生します。

createInterview(flowName, inputVariables)

フローのインタビューを作成します。

署名

public static Flow.Interview createInterview(String flowName, Map<String,Object> inputVariables)

パラメーター

flowName
型: String
フローの API 参照名。
inputVariables
型: Map<String,Object>
フロー入力変数の初期値。

戻り値

型: Flow.Interview

使用方法

このメソッドを使用して、start() メソッドの Flow.Interview オブジェクトを動的に作成します。

インタビューから出力変数値を取得する方法は、インタビューを保存している Apex 変数の型によって異なります。
  • 変数が特定のフローにキャストされる場合、myFlow.myVar を使用して変数にアクセスできます。ここで、myVar は変数の名前です。
    1system.debug('My Output Variable: ' + myFlow.varName);
  • 変数が Flow.Interview 型で特定のフローにキャストされない場合、getVariableValue() を使用してフローの変数にアクセスする必要があります。
    1system.debug('My Output Variable: ' + myFlow.getVariableValue('varName'));

現在の組織にフローが存在しない場合、TypeException が発生します。

getVariableValue(variableName)

指定されたフロー変数の値を返します。フロー変数は、Visualforce ページに埋め込まれたフロー内、またはサブフロー要素によってコールされる個別のフロー内にあります。

署名

public Object getVariableValue(String variableName)

パラメーター

variableName
型: String
フロー変数の一意の名前を指定します。

戻り値

型: Object

使用方法

変数値は、インタビューが実行されているいずれかのフローから返されます。指定された変数がフロー内に見つからない場合、メソッドは null を返します。

このメソッドは、コンパイル時ではなく実行時にのみ変数の存在を確認します。

start()

自動起動フローまたはユーザープロビジョニングフローのインスタンス (インタビュー) を開始します。

署名

public Void start()

戻り値

型: Void

使用方法

このメソッドは、次のいずれかの種別のフローでのみ使用できます。
  • 自動起動フロー
  • ユーザープロビジョニングフロー
詳細は、Salesforce ヘルプの「フロー種別」を参照してください。

フローユーザーが自動起動フローを呼び出すと、有効なフローバージョンが実行されます。有効なバージョンがない場合は、最新バージョンが実行されます。フロー管理者がフローを呼び出すと、常に最新のバージョンが実行されます。