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

Newer Version Available

This content describes an older version of this product. View Latest

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 ヘルプの「フロー種別」を参照してください。

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