フローでレコードをリダイレクトしてメッセージ表示をさせてみた

LWC版はこちらになります。

[(LWC版)フローでレコードをリダイレクトしてメッセージ表示をさせてみた](https://qiita.com/DEKA_PIYO/items/e56a57407fd0e0b5bedf)

## フローの手の届かないところ
フローをそこそこ使えるようになると不便だなと思うところが、標準機能では作成した**レコードにリダイレクトが出来ない**ことです。また**成功メッセージの表示も標準では出来ない**ことです。

こうした**不便を解消するためにはフローで使えるコアアクションを作成**し、フローに設定する必要があります。

**コアアクションの作成にはAuraコンポーネント**(Lightning コンポーネント)を使います。開発者コンソールを起動してFile > New > Lightning componentで名前を決めれば最初のコンポーネントが表示されます。必要に応じて右側にあるCONTROLLERやDESIGNをCreateすればそれぞれコードの入力が可能です。

![開発者コンソール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510376/8373f1d4-f278-740f-4c7f-d5c4bd6c5f45.png)


## レコードのリダイレクト

```js:RedirectRecord.cmp

<aura:component implements="force:lightningQuickAction,lightning:availableForFlowActions">
   <aura:attribute name="recordId" type="String" />
</aura:component>

```

```js:RedirectRecordController.js

({    invoke : function(component, event, helper) {
   var record = component.get("v.recordId");
   var redirect = $A.get("e.force:navigateToSObject");
   redirect.setParams({
      "recordId": record
   });
   redirect.fire();
}})

```

```js:RedirectRecord.design

<design:component>
   <design:attribute name="recordId" label="Record ID" />
</design:component>

```

これはヘルプ記載のままです。
[ローカルアクションを使用したフローユーザのリダイレクト](https://help.salesforce.com/articleView?id=flow_concepts_finish_override.htm&type=5)


## 成功メッセージの表示

```js:MessageCoreAction.cmp

<aura:component implements="lightning:availableForFlowActions">
    <aura:attribute name="type" type="string" />
    <aura:attribute name="title" type="string" />
    <aura:attribute name="message" type="string" />    
</aura:component>

```

```js:MessageCoreActionController.js

({
    invoke : function(component, event, helper) {
        var type = component.get("v.type").toLowerCase(); 
        var title = component.get("v.title");
        var message = component.get("v.message");
        helper.showToast(type, title, message);
    }
})

```

```js:MessageCoreActionHelper.js

({
    showToast : function(type, title, message) {
        var toastEvent = $A.get("e.force:showToast");
        toastEvent.setParams({
            "title": title,
            "message": message,
            "type": type
        });
        toastEvent.fire();
    }
})

```

```js:MessageCoreAction.design

<design:component >
    <design:attribute name="type" label="種別" />
    <design:attribute name="title" label="タイトル"  />
    <design:attribute name="message" label="メッセージ" required="true" />
</design:component>

```


以下のサイトを参考にして作成しています。
[Show Toast – Flow Action – UnofficialSF](https://unofficialsf.com/show-toast-flow-action/)
[Aura コンポーネントバンドルのデザインリソース](https://developer.salesforce.com/docs/atlas.ja-jp.lightning.meta/lightning/components_config_for_app_builder_design_files.htm)
[Toast Message in Salesforce flow – Deepthi Thati](https://dthati.wordpress.com/2018/12/10/toast-message-in-salesforce-flow/)


## レコードリダイレクトとメッセージ表示のフロー

上記を使用したサンプルとしてシンプルな商談作成のフローを作成しました。
![フロー：リダイレクト・メッセージ表示.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510376/9886e2ef-e942-180a-f868-2b099ad47f5d.png)


まずは相互関係のアクションを選択し、先ほど作成したリダイレクトのAuraコンポーネントを選択します。そうするとラベル・API名・入力値の設定が設定できるのでそちらの設定を行います。Record IDにはリダイレクトしたいレコードを指定します。今回は作成したレコードにリダイレクトしたいのでそれを選択します。

![コアアクション：リダイレクト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510376/18a7b20f-2b84-5a12-6df4-779aa9ef6892.png)


おなじようにアクションから成功メッセージのAuraコンポーネントを選択し入力を行っていきます。メッセージは入力しないと表示されませんので、必須の設定にしています。また**種別はsuccess以外にもerror、waringなど必要に応じて表示メッセージの外観を変えることができます**。タイトルを入力するとタイトルとメッセージの2段に分けて表示することができます。

![フロー：メッセージ表示.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510376/692091a8-391e-6bbd-5a0e-0fdf97152294.png)

なお、フロービルダーのデバッグではレコードのリダイレクトや表示メッセージを確認できません（デバッグの詳細には表示されます）。

上手く設定が出来れば次のような感じで作成できるはずです。

![レコードリダイレクトとメッセージ表示.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510376/d803cbc4-2fd7-3f37-f3c0-db3a8ca6b548.gif)