フローインタビューの再開

カスタム LWC コンポーネントに lightning-flow コンポーネントを埋め込むことで、ユーザがインタビューを再開できる方法と場所をカスタマイズできます。

このコンポーネントを使用するには、その前に、Salesforce Flow Builder でフローを作成します。このコンポーネントには、戻る、次へ、一時停止、完了のナビゲーションボタンが含まれています。

フローに、カスタムの Lightning Web コンポーネントまたは Aura コンポーネントがある場合、Lightning Web Runtime を使用する Experience Cloud サイトで lightning-flow を使用することができません。

Note

例 

デフォルトでは、ユーザはホームページの [一時停止中のインタビュー] コンポーネントから、一時停止したインタビューを再開できます。ユーザがインタビューを再開できる方法と場所をカスタマイズするには、カスタム LWC コンポーネントに lightning-flow コンポーネントを埋め込み、flow-interview-id 属性にインタビュー ID を渡します。

次の例では、インタビューを再開したり新しいインタビューを開始したりする方法を示します。ユーザが取引先責任者レコードから [Survey Customer (顧客調査)] をクリックすると、lightning-flow コンポーネントは次のいずれかのアクションを実行します。

  • [Survey Customers (顧客調査)] フローのインタビューが一時停止されている場合、lightning-flow コンポーネントが最初のインタビューを再開する。
  • [Survey Customers (顧客調査)] フローのインタビューが一時停止されていない場合、lightning-flow コンポーネントが新しいインタビューを開始する。
1<!-- myComponent.html -->
2<template>
3  <lightning-flow flow-api-name={flowName} flow-interview-id={pausedInterviewId}>
4  </lightning-flow>
5</template>

この Apex コントローラは、SOQL クエリを実行して一時停止中のインタビューのリストを取得します。一時停止中のインタビューがない場合、クエリは null 値を返し、コンポーネントが新しいインタビューを開始します。クエリが少なくとも 1 つのインタビューを返した場合、コンポーネントがリストの最初のインタビューを再開します。

1// InterviewsController.apex
2public class InterviewsController {
3    @AuraEnabled(cacheable=true)
4    public static String getPausedId() {
5        // Get the ID of the running user.
6        String currentUser = UserInfo.getUserId();
7        // Find all of that user’s paused interviews for the Survey customers flow.
8        List<FlowInterview> interviews =
9             [ SELECT Id FROM FlowInterview WHERE CreatedById = :currentUser AND
10                 InterviewLabel LIKE '%Survey customers%'];
11        if (interviews == null || interviews.isEmpty()) {
12            return null; // early out
13        }
14        // Return the ID for the first interview in the list.
15        return interviews.get(0).Id;
16    }
17}

Apex コントローラからインタビュー ID が返されると、pausedInterviewIdflow-interview-id 属性に渡されます。Apex コントローラから null のインタビュー ID が返されると、フロー名が flow-api-name 属性に渡されることにより、コンポーネントで新しいインタビューが開始されます。

1// myComponent.js
2import { LightningElement, wire } from "lwc";
3import getPausedId from "@salesforce/apex/InterviewsController.getPausedId";
4
5export default class MyComponent extends LightningElement {
6  flowName;
7  pausedInterviewId;
8
9  @wire(getPausedId)
10  getPausedInterviewId({ error, data }) {
11    if (error) {
12      // start a new interview since no interview id was returned.
13      this.flowName = "Survey_customers";
14    } else if (data) {
15      // resume the flow with the returned interview id.
16      this.pausedInterviewId = data;
17    }
18  }
19}

The Japanese Summer '24 guide is now live

日本語の Summer '24 ガイドが公開されました! 「Component Reference (コンポーネントリファレンス)」は、以前と同様にコンポーネントライブラリにあります。