0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Salesforceのデータ処理の仕組み

Posted at

下記の図は、Salesforceのトランザクション処理の流れを示したものです。
具体的なオブジェクトやデータを用いて、わかりやすく整理しました。

image.png


Salesforceのデータ処理の流れ(トランザクションのライフサイクル)

Salesforceでは、データが保存されるまでに複数の処理ステップが存在します。これを理解することで、カスタマイズ時の動作やエラーの原因を把握しやすくなります。

1. Trigger.newの初期化

レコードが作成または更新される際、Trigger.newが初期化され、データがSalesforceのシステム検証ルール(標準の必須項目チェックなど)やカスタム検証ルールにかけられます。

例:

  • 「商談」オブジェクトの金額項目が必須の場合、空欄だとエラーになる。

2. Before Trigger(レコード保存前の処理)

レコードがデータベースに保存される前に実行されるApexトリガー。

例:

  • before insert取引先名を自動入力する。
  • before updateステータスが「契約済み」なら契約日を自動入力する。
trigger OpportunityTrigger on Opportunity (before insert, before update) {
    for (Opportunity opp : Trigger.new) {
        if (opp.StageName == 'Closed Won' && opp.CloseDate == null) {
            opp.CloseDate = Date.today();
        }
    }
}

3. 重複ルール(Duplicate Rules)

Salesforceの標準機能で、同じデータが登録されないようにチェック。

例:

  • 既に登録されている取引先と同じ名前の取引先を作成しようとすると警告が出る。

4. 割り当てルール(Assignment Rules)

ケースやリードに対し、自動的に担当者を割り当てるルール。

例:

  • リードの地域が「東京」なら担当者Aに割り当てる。

5. 自動レスポンスルール(Auto-Response Rules)

リードやケースに対して、自動返信メールを送る機能。

例:

  • サポート問い合わせを受け付けたら、自動で「お問い合わせを受け付けました」のメールを送信。

6. エスカレーションルール(Escalation Rules)

ケースが一定時間解決されない場合、マネージャーに通知したり、優先度を変更する。

例:

  • 優先度:高のケースが24時間以上放置されたら、マネージャーに通知する。

7. 保存(Database Commit)

ここまでの処理を通過したレコードはデータベースに保存される。


8. After Trigger(レコード保存後の処理)

データが保存された後に実行されるApexトリガー。

例:

  • 商談が作成されたら、自動で関連するタスクを作成。
trigger AfterInsertOpportunity on Opportunity (after insert) {
    List<Task> tasks = new List<Task>();
    for (Opportunity opp : Trigger.new) {
        Task newTask = new Task(
            Subject = 'フォローアップ',
            WhatId = opp.Id,
            Status = 'Not Started'
        );
        tasks.add(newTask);
    }
    insert tasks;
}

9. ワークフロールール(Workflow Rules)

フィールド更新、タスク作成、メール送信などの処理を自動化。

例:

  • 商談のステージが「成約」に変更されたら、契約日を自動入力。

10. プロセスビルダー(Process Builder)

ワークフロールールより高度な自動化を実現。

例:

  • 商談が「成約」になったら、自動で請求レコードを作成。

11. コミット(Commit)

トランザクションの確定処理。これ以降はロールバック不可。


12. コミット後のロジック

データの保存が確定した後に、外部システム連携や通知を行う。

例:

  • 商談が作成されたら、Slackに通知を送る。
  • 顧客データを外部システムに同期する。
public class OpportunityNotification {
    @future(callout=true)
    public static void sendSlackMessage(String message) {
        HttpRequest req = new HttpRequest();
        req.setEndpoint('https://slack.com/api/chat.postMessage');
        req.setMethod('POST');
        req.setBody('{"text": "' + message + '"}');
        Http http = new Http();
        HttpResponse res = http.send(req);
    }
}

まとめ

ステップ 処理内容
1. Trigger.new 初期化 システム検証・カスタム検証 必須項目チェック
2. Before Trigger レコード保存前の処理 取引先名自動入力
3. 重複ルール 既存データのチェック 同じ名前の取引先を防ぐ
4. 割り当てルール レコードの自動割り当て リードを地域別に担当者割当
5. 自動レスポンスルール 自動メール送信 問い合わせ受付の自動返信
6. エスカレーションルール ケースの優先度変更 放置されたケースをマネージャーに通知
7. 保存 データベースに保存 正式にデータ確定
8. After Trigger レコード保存後の処理 タスク自動作成
9. ワークフロー シンプルな自動化 商談のステージ変更で契約日更新
10. プロセスビルダー 高度な自動化 商談成立で請求書作成
11. コミット トランザクション確定 データ確定処理
12. コミット後のロジック 外部システム連携 Slack通知や外部API連携

この流れを理解することで、Salesforceの自動化を活用し、システム設計の最適化が可能になります!

bk


📌 例:商談 (Opportunity) の作成処理の流れ

あなたがSalesforceで新しい商談 (Opportunity) を作成するとき、データの処理は以下の順番で実行されます。


🔹 1. Trigger.new の初期化

(システム入力規則 & カスタム入力規則の適用)

  • :UIから商談を新規作成したとき、Trigger.new という変数に、新しいレコードの情報が入る。

🔹 2. Beforeトリガー (Before Insert, Before Update)

  • 処理の前に実行されるApexトリガー
  • :「商談の金額 (Amount) が 10,000 円以下なら、自動でステージを '見込み' にする」
trigger OpportunityTrigger on Opportunity (before insert, before update) {
    for (Opportunity opp : Trigger.new) {
        if (opp.Amount < 10000) {
            opp.StageName = '見込み';
        }
    }
}

🔹 3. 重複ルール

  • 同じデータがすでに存在しないかチェック
  • :「同じ取引先 (Account) に同じ商談名の商談があれば、作成をブロックする」

🔹 4. 割り当てルール

  • 商談の担当者を自動で決定
  • :「商談の地域が '東京' なら、担当者を佐藤にする」

🔹 5. 自動レスポンスルール

  • 自動的に顧客にメールを送信
  • :「新規商談が作成されたら、顧客に自動で「お問い合わせありがとうございます」とメールを送る」

🔹 6. エスカレーションルール

  • 特定の条件で商談を上位マネージャーにエスカレーション
  • :「商談の金額が1,000,000円以上なら、上司に通知する」

🔹 7. 保存 (データベースに保存)

  • ここで初めてデータがSalesforceに保存される

🔹 8. Afterトリガー (After Insert, After Update)

  • レコードが保存された後に実行
  • :「商談が作成されたら、関連するカスタムオブジェクト '見積書' を自動作成する」
trigger CreateQuote on Opportunity (after insert) {
    for (Opportunity opp : Trigger.new) {
        Quote__c quote = new Quote__c();
        quote.Opportunity__c = opp.Id;
        quote.TotalAmount__c = opp.Amount;
        insert quote;
    }
}

🔹 9. ワークフロールール

  • レコード更新時に実行する自動処理
  • :「商談のステージが '交渉中' になったら、自動で 'フォローアップタスク' を作成」

🔹 10. プロセス (Process Builder)

  • より高度な自動化処理
  • :「商談が '成立' になったら、取引先責任者に感謝メールを送る」

🔹 11. コミット

  • データベースへの最終確定
  • :「すべての処理が問題なければ、データベースに完全保存」

🔹 12. コミット後の処理

  • メール送信、アウトバウンドメッセージ、イベント処理など
  • :「商談成立後、会計システムにデータを送る」

📌 まとめ

Salesforceでデータを保存する際は、以下のように順番に処理が実行される。

  1. データの初期化(Trigger.new, 入力規則)
  2. Beforeトリガー(データを保存前に修正)
  3. 重複ルール(同じデータがないか確認)
  4. 割り当てルール・レスポンスルール(担当者決定 & メール送信)
  5. エスカレーションルール(必要なら上司へ通知)
  6. データ保存
  7. Afterトリガー & 自動処理(ワークフロー、プロセスビルダー)
  8. コミット
  9. コミット後の処理(メール送信、外部システム連携)

この流れを理解すれば、Salesforceのデータ処理の仕組みがよくわかる!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?