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

Visualforce ページからのフロー変数値の設定

フローを Visualforce ページに埋め込んだ後に、<apex:param> コンポーネントを使用して、変数、レコード変数、コレクション変数、およびレコードコレクション変数の初期値を設定します。

インタビューの開始では変数の設定のみを行うことができます。<apex:param> タグはフローが起動されるときに一度のみ評価されます。

入力アクセスを許可する変数のみを設定できます。入力アクセスを許可しない変数を参照している場合、その変数を設定しようとしても無視されます。Visualforce ページ、その <apex:page> コンポーネント、または Apex クラスでコンパイルに失敗する可能性があります。

メモ

次の表に、Visualforce を使用して、フローの変数、レコード変数、およびレコードコレクション変数値を設定できる方法を示します。

コントローラを使用しない変数値の設定

この例では、インタビューの開始時に myVariable を値 01010101 に設定します。

1<apex:page>
2    <flow:interview name="flowname">
3        <apex:param name="myVariable" value="01010101"/>
4    </flow:interview>
5</apex:page>

標準コントローラを使用した変数値の設定

標準 Visualforce コントローラでレコードのデータを渡して変数を設定できます。この例では、インタビューの開始時に myVariable の初期値を Visualforce 式 {!account} に設定します。

1<apex:page standardController="Account" tabStyle="Account">
2    <flow:interview name="flowname">
3        <apex:param name="myVariable" value="{!account}"/>
4    </flow:interview>
5</apex:page>

標準リストコントローラを使用したレコードコレクション変数値の設定

レコードコレクション変数は値の配列を表すため、標準リストコントローラまたはカスタム Apex コントローラを使用する必要があります。この例では、インタビューの開始時に myCollection{!accounts} の値に設定します。

1<apex:page standardController="Account" tabStyle="Account" recordSetVar="accounts">
2    <flow:interview name="flowname">
3        <apex:param name="myCollection" value="{!accounts}"/>
4    </flow:interview>
5</apex:page>

カスタム Apex コントローラを使用した変数値の設定

標準コントローラよりも詳細に Visualforce ページを制御する場合、変数値を設定するカスタム Apex コントローラを作成し、Visualforce ページでそのコントローラを参照します。この例では、インタビューの開始時に Apex を使用して myVariable を特定の取引先の ID に設定します。

1public class MyCustomController {
2    public Account apexVar {get; set;}
3
4     public MyCustomController() {
5        apexVar = [
6            SELECT Id, Name FROM Account
7            WHERE Name = ‘Acme’ LIMIT 1];
8    }
9}
1<apex:page controller="MyCustomController">
2    <flow:interview name="flowname">
3        <apex:param name="myVariable" value="{!apexVar}"/>
4    </flow:interview>
5</apex:page>

この例では、Apex を使用して、レコードコレクション変数 myAccount を、NameAcme のすべてのレコードの Id および Name 項目値に設定します。

1public class MyCustomController {
2    public Account[] myAccount { 
3        get {
4            return [ 
5                SELECT Id, Name FROM account 
6                WHERE Name = 'Acme'
7                ORDER BY Id
8            ] ;
9        }
10        set {
11            myAccount = value;
12        }
13    }
14    public MyCustomController () {
15    }
16}
1<apex:page id="p" controller="MyCustomController">
2    <flow:interview id="i" name="flowname">
3        <apex:param name="accountColl" value="{!myAccount}"/>
4    </flow:interview>
5</apex:page>

インタビューマップを使用した変数値の設定

この例では、インタビューの開始時にインタビューマップを使用して accVar の値を特定の取引先の ID に設定します。

1public class MyCustomController {
2    public Flow.Interview.TestFlow myflow { get; set; }
3
4     public MyCustomController() {
5        Map<String, Object> myMap = new Map<String, Object>();
6        myMap.put('accVar', [SELECT Id FROM Account 
7                             WHERE Name = 'Acme' LIMIT 1]);
8        myflow = new Flow.Interview.ModemTroubleShooting(myMap);
9    }
10}
1<apex:page controller="MyCustomController">
2    <flow:interview name="flowname" interview="{!myflow}"/>
3</apex:page>

インタビューの開始時に accVar の値を新規取引先に設定する同様の例を次に示します。

1public class MyCustomController {
2    public Flow.Interview.TestFlow myflow { get; set; }
3
4     public MyCustomController() {
5        Map<String, List<Object>> myMap = new Map<String, List<Object>>();
6        myMap.put('accVar', new Account(name = 'Acme'));
7        myflow = new Flow.Interview.ModemTroubleShooting(myMap);
8    }
9}
1<apex:page controller="MyCustomController">
2    <flow:interview name="flowname" interview="{!myflow}"/>
3</apex:page>
次の例では、対応付けを使用して文字列コレクション変数 (stringCollVar) と数値コレクション変数 (numberCollVar) にそれぞれ 2 つの値を追加します。
1public class MyCustomController {
2    public Flow.Interview.flowname MyInterview { get; set; }
3
4    public MyCustomController() {
5        String[] value1 = new String[]{'First', 'Second'};
6        Double[] value2 = new Double[]{999.123456789, 666.123456789};
7        Map<String, Object> myMap = new Map<String, Object>();
8        myMap.put('stringCollVar', value1);
9        myMap.put('numberCollVar', value2);
10        MyInterview = new Flow.Interview.flowname(myMap);
11    }
12}
1<apex:page controller="MyCustomController">
2    <flow:interview name="flowname" interview="{!MyInterview}" />
3</apex:page>