Visualforce ページからのフロー変数値の設定
フローを Visualforce ページに埋め込んだ後に、<apex:param> コンポーネントを使用して、変数、レコード変数、コレクション変数、およびレコードコレクション変数の初期値を設定します。
次の表に、Visualforce を使用して、フローの変数、レコード変数、およびレコードコレクション変数値を設定できる方法を示します。
| 方法 | 変数 | レコード変数 | コレクション変数 | レコードコレクション変数 |
|---|---|---|---|---|
| コントローラを使用しない | ![]() |
|||
| 標準コントローラを使用する | ![]() |
|||
| 標準リストコントローラを使用する | ![]() |
|||
| カスタム Apex コントローラを使用する | ![]() |
![]() |
![]() |
![]() |
| インタビューマップを使用する | ![]() |
![]() |
![]() |
![]() |
コントローラを使用しない変数値の設定
この例では、インタビューの開始時に 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 を、Name が Acme のすべてのレコードの 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>