2021.01.06

【Salesforce フロー】とは?初心者なら知っておきたい5つのテク

  • このエントリーをはてなブックマークに追加
  • follow us in feedly
gettyimages (19108)

Salesforce フローとは?

Salesforceフローとは、Salesforce上で独自のプロセス処理が作成できるノーコードツールです。
例えばレコードを保存した時に、何らかのプロセス処理をしたいというようなことありませんか。かんたんな処理であれば入力規則等で対応できますが、Salesforce フローを利用するとプログラムを書かなくても独自のプロセス処理が作成できます。

Salesforceの「フロー」というのは機能の総称であり、正確には、Lightningフロー*といいます。
Lightning フローには、Lightning プロセスビルダーとフロービルダーの2つがあります。しかしSalesforce界隈では「フロー」という言葉は、フロービルダーのことを指すことが多いようです。よって今回は、フロービルダーを使いこなすうえで知っておきたい5つポイントを紹介します。

1. フローの起動条件を理解する
2. 最低限知っておきたい3つのリソース
3. 空白とnullの違いに注意する
4. フロービルダーだけでメール送信ができる
5. 障害パスとオススメの利用法

それではまいりましょう。

* Lightningフロー
https://help.salesforce.com/articleView?id=extend_click_process.htm&type=5

1. フローの起動条件を理解する

フロービルダーを利用するうえで最初に理解したいのは、どのタイミングでフローを起動するかという点です。フロービルダーには5つの基本的なフローがあり、それをコアアクション(以降、コア)と言います。
コアは、いつフローを実行するか設定する機能であり、5つのコア*が定義されています。

さらに、Salesforceがコアに対して、あらかじめ設定を行ったテンプレートが存在します。テンプレートはその名の通り、フローのテンプレートで 、テンプレート設定を利用して独自のプロセスを構築できます。

*Winter21時点

コア

- 画面フロー
- レコードトリガフロー
- スケジュールトリガフロー
- プラットフォームイベントトリガフロー
- 自動起動フロー(トリガなし)

テンプレート

- ユーザープロビジョニングフロー
- 連絡要求フロー
- IDを検証
- ケースを作成
- パスワードリセット

フロービルダーのコアとテンプレート

テンプレートはコアを応用したものですので、ここではコアについて詳しく紹介します。

画面フロー

テキスト、スライダー、チェックボックスなどの部品を利用して独自の画面が作成できるフローです。利用用途としてホーム画面にフローの処理結果を表示したり、クイックアクションに配置して、項目の簡易入力画面を作成するといった使い方に向いてます。

レコードトリガフロー

レコードを作成、更新、削除された時に起動するフローです。
最初に紹介した「レコードを保存した時に、何らかのプロセス処理したい。」という場合にはレコードトリガフローを利用します。レコードトリガフローの開始条件には、「レコードの保存前」か「レコード保存後」を選択できます。

保存前のレコードの値をチェックしたり、変更したい場合は「レコードの保存前」、保存後に確定される項目(ID、自動採番、更新日など)を利用する場合には「レコード保存後」を選択します。

スケジュールトリガフロー

フローを定期的に自動起動するフローです。1回、毎日、毎週から選択できます。
利用用途として、「進行中の商談を定期的に見直す必要がある場合に、1ヶ月以上更新がなければ、商談の所有者にToDoを作成する」といった使い方ができます。

Winter21時点では、週に2回や毎月1回実行するといった使い方ができないため、そういったパターンで実行したい場合には何らかの工夫が必要になるでしょう。

プラットフォームイベントトリガフロー

Salesforceへ通知を受信した時に起動するフローです。例えば外部アプリケーションからプラットフォームイベントを受信した際、フローを呼び出し、ToDoを作成したり、メールを送信するといったことができます。

自動起動フロートリガなし

Apex、プロセス、REST API等から呼び出して利用するフローです。Apexで記載されたアプリやRESTを利用するアプリケーションからの呼び出しに利用します。

2.最低限知っておきたいリソース3つ

フロービルダーでフローを作る際は「レコードの取得」や、「フローの分岐」などの要素を利用してプロセスを作成します。そんな時、活躍するのがリソースです。

リソースを利用することで、似たような要素をまとめたり、差し込みテキストを作成できたりと、フローがより柔軟に構築できるようになります。

リソースには、変数、定数、数式、テキストテンプレート、フェーズがあり、ここではよく利用するであろう3つのリソースを詳しくご紹介します。

基本の”キ”である変数

変数とは、テキストの値や日付の値、真偽値などを一時的に保管するためのものですが、フロービルダーにおいても同様の目的で利用します。

フロービルダーの変数は単一の値だけでなく複数の値の保管ができますので、レコードを取得した際の保管用途として利用できます。

しかし、フロービルダーではレコードの取得結果を要素自体に持てるので、取得したレコード値を保存するために変数を使うのであれば、「すべての項目を自動的に保存」や「項目を選択して後はSalesforceに任せる」(下の図を参照)にした方が管理がカンタンでしょう。

フローはレコードの取得結果を要素に持てる

フローで変数を利用する場合はレコードの値の一時保管に使うケースよりも他の目的(計算結果の取得など)に利用することが多いということを覚えておきましょう。

差し込み項目を作成できるテキストテンプレート

テキストテンプレートとは、リッチテキストやプレーンなテキスト文章を作成するためのリソースです。テキストテンプレートによって、レコード項目の差し込み機能を利用できます。例えば

- フローで処理した内容をテキストテンプレートに差し込み、結果をChatterに投稿
- レコードの内容をテキストテンプレートに差し込み、メールの本文を組み立て送信

といった使い方が可能です。

テキストテンプレートの差込み文書機能を利用すると柔軟な文章が作成できる

いざというときの数式変数

フロービルダーでフローを作成しているとちょっとしたことで困ることあると思います。例えば

- 項目値を利用して計算式を作成したい
- 取得した項目の型を変更したい
- レコード遷移用のURLを作成したい

といったことです。

Salesforceではこのような時、数式を利用します。この数式は、嬉しいことにフロービルダーでも利用できます。基本的な数式は一部の関数を除き*、フロービルダーで利用できますので、困ったときは数式で実現できないか検討すると良いでしょう。

* フローの数式に関する考慮事項
https://help.salesforce.com/articleView?id=flow_considerations_design_formulas.htm&type=5

フロービルダーでは数式の記述方法が異なる

多くのウェブサイトに数式のサンプルがありますが、カスタム数式項目として利用することを想定したものがほとんどであり、そのままではフロービルダーで利用できません。例えばレコード遷移用のURLを作成する場合、項目の数式とフローの数式では次のような違いがあります。
LEFT($Api.Partner_Server_URL_350, FIND("/services/Soap/", $Api.Partner_Server_URL_350)) + Id
・カスタム項目で利用する際の数式記載方法
LEFT({!$Api.Partner_Server_URL_350},  FIND("/services/Soap/",{!$Api.Partner_Server_URL_350}) ) + {!$Record.Id}
・フロービルダーで利用する際の数式記載方法
このようにフロービルダーで変数を参照する場合、{! } で囲む必要があります。さらに言えば、Visualforceで項目を参照するときのお作法と似てますね。

3. 空白とnullの違いに注意する

空白とnullの違いはご存知でしょうか。
「空文字」は変数に文字が設定されていない状態のこと、「null」は変数にnullが設定されている状態のことです。フロービルダーにおいてこの2つは明確に分かれているため、違いを理解せず使用する想定通りの動作をしないことがあります。

変数の初期値

変数を作成した時に、デフォルト値を設定しないと値はnullになります。

レコード取得に返された値がない場合

レコードを取得する要素を利用する際、「返されたレコードがない場合、指定した変数をnullに設定する」オプションがあります。
このようにフロービルダーでは空文字とnullは違う値として表現されているため、使い分けることが重要です。

フロービルダーでデータが空文字かどうか判断するのは {!$GlobalConstant.EmptyString} を利用し、以下のようにチェックをします。

「判断したいデータ」 一致する {!$GlobalConstant.EmptyString}

変数がnullかどうか判定する場合には以下のようにします。

「変数名」 null   True

下の図も参考にしてください。

変数が空文字かnullか判定する方法

フロービルダーで変数を利用する際は空文字とnullの違いを理解して利用しましょう。

4. フロービルダーだけでメール送信ができる

「イベントの申し込みフォーム」に登録したあと、申し込み完了のメールが来るというのは一般的ですよね。
フロービルダーではそのような「メールを送信するフロー」を作成できます。フロービルダーでメールを作成するには2つの方法があり、それぞれメリット、デメリットが存在します。

1. メールアラートとメールテンプレート経由でメール送信
2. フローだけでメールを送信

1. メールアラートとメールテンプレート経由でメール送信

メールアラートとメールテンプレート経由でメール送信する場合、次の手順で作成します。

1.  Salesforceの設定でメールテンプレートを開く
2.  メールテンプレートを作成
3.  Salesforceの設定でメールアラートを開く
4. メールアラートを作成、
5. メールアラートとメールテンプレートを関連づける
6. フロービルダーからメールアラートを呼び出す。

というように設定が多く、複雑になります。

2. フローだけでメールを送信

フロービルダーだけでメール送信プロセスを作成する場合、設定はシンプルです。

1. 変数でテキストテンプレートを作成する
2. メールアクションを作る
3. メールアクションで変数を設定する

非常にわかりやすいですね。

フロービルダーだけでメールの文章作成から送信設定まで可能なので、フロービルダーを利用している限り、メールテンプレートは不要でしょうか?
いいえ。メールテンプレートを他でも利用したり、メールの本文だけを頻繁に更新するという場合には、これまでどおりメールテンプレートで文書を作った方が良いかもしれません。

以下の表にそれぞれの違いをまとめてみました。
フローだけでメールを送信 メールアラートとメールテンプレート経由でメール送信
設定の手軽さ X
メールのメンテナンス性 X
メールの流用性 X
フローだけでメールを送信するか、これまで通りメールアラートを利用するかはメリット、デメリットを踏まえて検討しましょう。

5. 障害パスの設定とおすすめの利用法

プログラムが何らかのトラブルによって停止することがありますよね。

Salesforceのフローにおいても、必須の項目を入力していないため保存に失敗したり、項目の型が合っておらず例外が起きたりと、さまざまなケースでエラーが発生する可能性があります。

そんな時、不具合箇所を見つけるに活躍するのが「障害パス」です。

障害パスは次の要素で使用できます。

- アクションの実行
- レコードの取得
- レコードの書き込み


基本的な利用法として、対象の部品を選択して、障害パスを設定します。

障害パスの設定後、続く要素で、項目の値を差し込んだテキストテンプレートとメールを利用すれば、障害の把握に役立つでしょう。

障害パスを設定しなくてもフローでエラーが発生した際はメールが送信されますが、詳細な情報が欲しいときは障害パスを設定しておくと、もしもの時に役立ちます。

障害パスの設定例

障害パスについては下記のヘルプも確認することをオススメします。

https://help.salesforce.com/articleView?id=flow_build_logic_fault_email.htm&type=5

(おまけ)フローと他の製品と組み合わせて業務を改善する

フローは他の製品と組み合わせて利用することももちろんできます。
salesforce architectsブログではHerokuとフロービルダーを組み合わせて使用する例もあります。
また、以下の弊社のブログでは、mitocoのカレンダーの予定で会議室を入力した際、自動的に予定の場所項目に会議室を入れています。

終わりに

今回は、Salesforce フローについて初心者なら知っておきたい5つのテクをご紹介しました。フロービルダーは汎用性が高くSalesforceでローコードを作成する際の主役になりえる存在です。この機会にフロービルダーを使ってみることをオススメします。

*この記事はSalesforce 開発者向けブログ投稿キャンペーンへのエントリー記事です。
63 件
     
  • banner
  • banner

関連する記事