一時停止中のフローインタビューをユーザが再開する方法のカスタマイズ
デフォルトでは、ユーザはホームページの [一時停止中のインタビュー] コンポーネントから一時停止中のインタビューを再開できます。ユーザがインタビューを再開できる方法と場所をカスタマイズするには、<flow:interview> コンポーネントの pausedInterviewId 属性を使用します。
次の例は、ページレイアウトのボタンから、インタビューを再開したり新しいインタビューを開始したりする方法を示しています。ユーザが取引先責任者レコードから [調査顧客] をクリックすると、ユーザに「調査顧客」フローで一時停止中のインタビューがあるかどうかに応じて、Visualforce ページで次の 2 つのいずれかが実行されます。
- ユーザに一時停止中のインタビューがある場合、最初のインタビューが再開される。
- ユーザに一時停止中のインタビューがない場合、新しいインタビューが開始される。
Visualforce および Apex コントローラの作成
Visualforce ページは取引先責任者固有のボタンで参照されるため、その標準コントローラを使用する必要があります。Apex でコントローラ拡張を使用して、ページにロジックを追加します。このロジックで、再開するインタビューの ID がページに渡されます。
1<apex:page
2 standardController="Contact" extensions="MyControllerExtension_SurveyCustomers">
3 <flow:interview name="Survey_Customers" pausedInterviewId="{!pausedId}"/>
4</apex:page>この Apex コントローラ��張は、SOQL クエリを実行して一時停止中のインタビューのリストを取得します。クエリから何も返されない場合、getPausedId() は null 値を返し、Visualforce ページで新しいインタビューが開始されます。クエリから 1 つ以上のインタビューが返されると、Visualforce ページでそのリスト内の最初のインタビューが再開されます。
1public class MyControllerExtension_SurveyCustomers {
2
3 // Empty constructor, to allow use as a controller extension
4 public MyControllerExtension_SurveyCustomers(
5 ApexPages.StandardController stdController) { }
6
7 // Flow support methods
8 public String getInterviews() { return null; }
9
10 public String showList { get; set; }
11
12 public String getPausedId() {
13 String currentUser = UserInfo.getUserId();
14 List<FlowInterview> interviews =
15 [SELECT Id FROM FlowInterview WHERE CreatedById = :currentUser AND InterviewLabel LIKE '%Survey Customers%'];
16
17 if (interviews == null || interviews.isEmpty()) {
18 return null; // early out
19 }
20
21 // Return the ID for the first interview in the list
22 return interviews.get(0).Id;
23 }
24}ページレイアウトからの Visualforce ページの参照
この Visualforce ページを実際にユーザに公開するには、取引先責任者ページレイアウトからページを使用できるようにします。
まず、Visualforce ページにリンクする取引先責任者オブジェクトのカスタムボタンを作成します。次の項目値を使用してボタンを作成します。
| 項目 | 値 |
|---|---|
| ラベル | 調査顧客 |
| 表示の種類 | 詳細ページボタン |
| 内容のソース | Visualforce ページ |
| 内容 | YourVisualforcePage |
最後に、取引先責任者ページレイアウトにボタンを追加します。