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

<flow:interview> を使用した高度な例

<flow:interview> コンポーネントは、複雑な Visualforce の相互作用を簡単に開発できるようにするために設計されています。カスタムコントローラを作成してフロー内の追加機能にアクセスできます。カスタムコントローラを使用すると、相互にやりとりできる複数のコンポーネントを含むページを作成できます。独自の Apex 型によって組織内のすべてのフローを個別に参照でき、フロー内の変数にはメンバー変数としてアクセスできます。
入力アクセスを許可する変数の設定と、出力アクセスを許可する変数の取得のみ行うことができます。それぞれのフロー変数では、入出力アクセスは次の項目によって制御されます。 入力アクセスまたは出力アクセスを許可しない変数では、変数の取得の試行は無視され、Visualforce ページ、その <apex:page> コンポーネント、または Apex クラスのコンパイルが失敗する可能性があります。
  • Cloud Flow Designer の [入力/出力種別] 変数項目
  • Metadata API の FlowVariableisInput 項目および isOutput 項目

メモ

次の例では、一意の名前「ModemTroubleShooting」を持つフローは Flow.Interview.ModemTroubleShooting として参照されます。マークアップでは、ページの他の部分でフロー変数の値を表示する方法を示します。

管理パッケージのフローである場合、name 属性は namespace.flowuniquename の形式で指定する必要があります。

メモ

上記のマークアップのコントローラは、次のようになります。

カスタムコントローラを使用する場合、フローコンストラクタのフローの先頭で変数の初期値も設定できます。<apex:param> タグを使用して値を設定する場合、コンストラクタを使用して変数を渡すことは省略可能で、必須ではありません。

次は、コンストラクタのフロー変数の値を設定するカスタムコントローラの例です。

Flow.Interview クラスで getVariableValue メソッドを使用して、Visualforce コントローラがフロー変数の値にアクセスできるようにすることができます。変数は、Visualforce ページに埋め込まれたフローか、サブフロー要素でコールされる別のフローに含まれている場合があります。変数値は、これらのうちインタビューが現在実行されているフローから返されます。指定された変数がフロー内に見つからない場合、メソッドは null を返します。このメソッドは、コンパイル時ではなく実行時にのみ変数の存在を確認します。

次のサンプルでは、getVariableValue メソッドを使用してフローからブレッドクラム (ナビゲーション) 情報を取得します。そのフローにサブフロー要素が含まれ、参照される各フローにも vaBreadCrumb 変数が含まれる場合、どのフローでインタビューが実行されているかに関わらず、ブレッドクラムをユーザに提供できます。
次の表に、フローと Apex との間での、サポートされているデータ型の名前付けの違いを示します。
フロー Apex
text String
number decimal
currency decimal
date date、dateTime
Boolean Boolean
Apex コードのテストを記述する適切な方法として、次に ModemTroubleShootingCustomSetVariables のテストクラスを作成する単純な例を挙げます。

reRender 属性の設定

reRender 属性を使用することにより、<flow:interview /> コンポーネントはページ全体を更新することなくフローを再表示します。

reRender 属性を設定しない場合、フロー内の他の画面に移動するボタンをクリックすると、<flow:interview> コンポーネントのみでなく Visualforce ページ全体が更新されます。

警告