Salesforce学習記録-ビジネスプロセスの自動化

# Salesforceビジネスプロセスの自動化
[ここから](https://help.salesforce.com/s/articleView?id=sf.extend_click_process.htm&type=5&language=ja)の抜粋

Salesforce には、ガイド付き視覚的環境の自動化、バックグランドの自動化、承認の自動化など、各種ビジネスプロセスを自動化するツールが用意されています。
Salesforce には、**承認、プロセスビルダー、ワークフロー、Flow Builder**など、組織で反復するビジネスプロセスを自動化するためのツールがいくつか備えられています。

**自動ツールの機能**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274047/826a0879-a370-d4a0-721a-083ce927b37e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274047/2aa27d76-490e-5887-b748-e8a43f141e0f.png)

## ①Flow Builder（フロー）　ツール
フローは、Salesforce 組織または外部システム内でデータを収集し、アクションを実行する Salesforce フローの一部です。Salesforce フローでは、画面フローと自動起動フローの 2 種類のフローが提供されます。
人からデータを収集するビジネスプロセスを自動化するには、画面フローを使用します。たとえば、画面を含むガイド付きチュートリアルまたはウィザードを作成します。

レコードが変更されたときや、ユーザがボタンをクリックしたときにフローを内部で起動するには、自動起動フローを使用します。たとえば、ページまたはアプリケーションに自動化を追加して、ユーザがボタンをクリックしたときに、レコードに対するアクションを実行します。

### 次のような目的に使用します
・ガイド付き視覚的環境を自動化する。
・バックグラウンドのビジネスプロセスを開始するタイミング:
　ユーザがボタンなどをクリックしたとき
　レコードを作成したとき
　レコードを更新したとき
　レコードを削除したとき
　プラットフォームイベントが発生したとき
　指定した時間と頻度

### サンプルシナリオ
　・サイトメンバーが**ステップバイステップウィザードのガイド**に従って新しいクレジットカードを申請する。
　・営業担当が商談の**ボタンをクリック**すると、割引計算機能が起動する。
　・取引先が**更新**されたら、その取引先に**関連する**すべての取引先責任者を更新する。
　・ある商談フェーズが更新されたら、**カスタムチェックボックス項目も更新**する。
　・**プラットフォームイベントが発生**したら**タスクを作成**する。
　・**一定時間が経過したら、または指定時間**になったら、Salesforce のリード**レコードを更新**する。
　・**商談が完了**したら、自動的に**更新商談を作成**する。

### Apex
Flow Builder の標準機能以外の機能が必要な場合には、Apex を使用します。
この場合は、呼び出し可能な Apex メソッドとして([InvocableMethod アノテーションを使用](https://developer.salesforce.com/docs/atlas.ja-jp.234.0.apexcode.meta/apexcode/apex_classes_annotation_InvocableMethod.htm))、より複雑な機能を作成します。作成した Apex をプロセス内の Apex アクションとして、またはフロー内の Apex アクション要素としてコールします。
####※呼び出し可能な Apex メソッド####
・呼び出し可能なアクションとして実行できるメソッドを識別するには InvocableMethod アノテーションを使用します。

```Apex:サンプル
public with sharing class GetFirstFromCollection {
  @InvocableMethod
  public static List <Results> execute (List<Requests> requestList) {
  } 
}
```

・実装メモ
　－呼び出し可能なメソッドは、**static で、public または global である必要**があり、その**クラスは外部クラスである必要**があります。
　－**クラスの 1 つのメソッドにのみ** InvocableMethod アノテーションを付加できます。
　－**他のアノテーション**と InvocableMethod アノテーションを**併用することはできません**。

##②プロセスビルダー　ツール##
割り当てる ToDo、送信するメール、および他のレコード更新の多くは、標準プロセスの重要な部分です。この反復作業を手動で実行する代わりに、プロセスを設定して自動的に実行できます。プロセスビルダーを使用すると、ビジネスプロセスを自動化しやすくなり、作成時のプロセスを視覚的に表現できます。
・下記Salesforce記載より、既存のプロセスを編集する以外、Flow Builder の使用をお勧めします。
　【
　バックグラウンドの自動化ニーズには Flow Builder の使用をお勧めします。
　プロセスビルダーは、すでに使い慣れている方が既存のプロセスを編集する場合にのみ使用してください。
　新しい自動化プロセスを作成する場合は、Flow Builder を使用してください。
　】
・**できること**
　任意のオブジェクト種別のレコードを作成する。
　レコードとその親のみでなく、あらゆる関連レコードを更新する。
　クイックアクションを使用して、レコードの作成、レコードの更新、または活動の記録を行う。
　プロセスを別のプロセスから呼び出す。
　フローを起動する。このアクションはワークフローでスケジュールできません。
　メールを送信する。
　カスタム通知を送信する。
　Chatter に投稿
　承認を受けるレコードを送信する。

・**プロセスは次のタイミングで開始します**
　レコードが作成されたとき
　レコードが更新されたとき
　プラットフォームイベントが発生したとき

## ③ワークフロー　ツール
ワークフローにより、標準的な社内手続きやプロセスを自動化し、組織全体で時間を節約できます。ワークフロールールは、一連のワークフロー手順のメインコンテナです。これらの手順はすべて、**if/then ステートメントに要約**できます。
###ワークフローの考慮事項###
　・ワークフロールールは、レコードが**保存または作成されたときならいつでもルール条件に基づいてトリガできます**。
　・**主従関係**の中の標準またはカスタムオブジェクトに親が再設定されると、そのオブジェクトの評価条件が [レコードが次の場合にルールを評価: 作成されたとき、および**その後基準を満たすように編集されたとき**] に設定されているときでも、ワークフロールールがトリガされます。
レコードの保存または作成によって複数のルールをトリガできます。
　・組織で**複数の言語**を使用している場合は、検索条件値は**個々の言語で入力**します。
　・表示ラベルがトランスレーションワークベンチで翻訳されたワークフロールールの条件でレコードタイプを使用する場合、翻訳された表示ラベルの値ではワークフロールールがトリガされません。**ワークフロー条件ではマスタラベルの値が評価され、翻訳された値は無視されます**。この問題を**回避するには、[値] 項目にマスタレコードタイプの表示ラベルの値を手動で入力して、この値を評価するようにワークフロー条件を設定します**。
　・キャンペーン統計項目 (個々のキャンペーン統計やキャンペーン階層統計など) はワークフロールールをトリガできません。
　・条件が参照する項目に値がない場合は、ワークフロールールがトリガされません。たとえば、ユーザベースのワークフロールールが「ロール」「次の文字列と一致しない」「CEO」をチェックする場合、ロールが割り当てられていないユーザにはルールがトリガされません。条件の代わりに数式を使用して、項目が Null なのか「CEO」以外のものに設定されているのかを確認します。
###User オブジェクトのワークフロー (ベータ)###
User オブジェクトのワークフロールールやワークフローアクションを作成できます。たとえば、新入社員に**お知らせメール**を送信したり、**アウトバウンドメッセージアクション**を使用してユーザデータを**サードパーティのサービスと同期**させたりできます。
**使用事例**
　・メールアラートアクションを使用して、**トレーニングリソースを含むお知らせメール**を、新しく作成されたユーザに送信する。
　・メールアラートアクションを使用して、**ユーザがロールを変更したり、無効化されたりしたときにメールアラート**を送信する。
　・項目自動更新アクションを使用して、**指定した期間後に臨時従業員を無効**にする。
　・**アウトバウンドメッセージアクションを使用**して、ユーザデータを**サードパーティのシステムと同期**させる。
### 時間ベースのアクションとタイムトリガの考慮事項
　・時間ベースのワークフローは、ユーザではなく組織のタイムゾーンに基づいて評価されます。
　・null 項目を参照するタイムトリガは無視されます。
　・待機中のアクションを持つレコードを削除すると、ワークフローキューから待機中のアクションが削除されます。
　・ToDo の [期日] を「ルール適用日」に設定すると、タイムトリガおよびワークフロー ToDo 期日が、ワークフロータイムトリガのアクションが実行された日付に基づいて設定されます。たとえば、**ToDo 期日が「ルール適用日から 10 日後」で、1 月 1 日にタイムトリガが実行される場合、ToDo 期日は 1 月 11 日に設定**されます。
　・タイムトリガは、分および秒をサポートしていません。

## ④承認
承認機能では自動化をさらに 1 歩進めて、レコードの承認に必要な一連のステップを指定できます。
例：
・組織で 3 階層のプロセスを使用して経費を承認するとします。この承認プロセスでは、申請された金額に基づいて、各申請が組織内の適切な担当者に自動的に割り当てられます。
・経費レコードが承認申請されると、ユーザが編集できないようにレコードがロックされ、状況が [申請済み] に変更されます。
・金額が $50 以下の場合は、申請が承認されます。金額が $50 を超える場合は、承認申請が直属マネージャに送信されます。金額が $5,000 を超え、最初の承認申請が承認された場合は、承認申請が副社長に送信されます。
・すべての承認申請が承認されると、状況が [承認済み] に変更され、レコードのロックが解除されます。いずれかの承認申請が却下された場合は、状況が [却下] に変更され、レコードのロックが解除されます。

## 自動アクションの実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274047/8ce4e148-362a-c5cd-93d7-8c4bdeb792f2.png)