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

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

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

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

入力アクセスを許可する変数のみを設定できます。それぞれのフロー変数では、入力アクセスは次の項目によって制御されます。 入力アクセスを許可しない変数では、変数の設定の試行は無視され、Visualforce ページ、その <apex:page> コンポーネント、または Apex クラスのコンパイルが失敗する可能性があります。
  • Cloud Flow Designer[入力/出力種別] 変数項目
  • Metadata APIFlowVariableisInput 項目

メモ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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