プログラムを作成して業務を自動化する
業務ロジックを実行するプログラム作成を行い本番環境にリリースをおこなう。
0.はじめに
今回は、標準化された業務の処理を自動化するためにプログラムを作成し組織にリリースする手順について説明します。
「プログラムの作成」 には専門的な技術が必要な場合があります。
しかし、比較的簡単な処理であれば Salesforce の手順に慣れている人にとってはラクに作成することができます。
- ヒント:
- コンピュータのシステムについて話をする場合、「プログラム」は一般的な使い方とは少し違う意味合いを持ちます。
詳しくは下記のサイトを参照ください。IT用語辞典 プログラムとは?
http://e-words.jp/w/E38397E383ADE382B0E383A9E383A0.html
業務の処理をスタートさせるタイミングによって、最適な方法を選択します。
主には次の2つに分けることができます。
(ワークフローと承認プロセスは単純な自動化処理なのでここでは除外します。)
- レコードに 何らかのアクション(登録、更新、削除、ごみ箱からの復元)があったときにスタート
- あらかじめ時間を決めておき、その時間がきたらスタート
前者を 「トリガ」、後者を「スケジュールジョブ」といいます。両方ともにApexというプログラムを作成する必要があります。
- ヒント:
- 一度にたくさんのレコードに対して処理を行うものを「バッチ」と呼びます。
「バッチ」は大量のデータを処理する際に利用することが多いため、他とくらべて処理時間がかかる可能性が高くなります。そのため予め時間をきめて実行する「スケジュールジョブ」として登録することが多いです。
まとめると次のようなイメージで捉えることができます。- トリガ ・・・ レコードに何かあった時に処理をおこなう
- スケジュールジョブ ・・・ 決められた時間に処理をおこなう
- バッチ ・・・ 一度にたくさんのレコードに対して処理をおこなう
今回は「スケジュールジョブ」について説明します。
1.何をするかを確認する
今回自動処理を登録する例としてあげるのが以下の処理になります。
要件
- 成約済みの商談の受注金額の合計を取引先の項目に登録する
- 上記処理をすべての取引先に対して、毎日夜 0:00 に実行する
この要件を満たすために以下の手順をおこないます。
- 処理をおこなうApexクラスを作成してSalesforceに登録する
- 登録したApexをスケジュールジョブとして登録する
ここで注意が必要なのですが、Apexクラスを登録するにはまずSandboxに登録して問題なく実行できるかをテストする必要があります。また本番環境に登録するためには「リリース」作業が必要です。
※ リリースについては【サンドボックスに設定・データをコピーし、検証した設定を本番にリリースする】
では手順をひとつずつ見ていきます。
2.処理をおこなうApexクラスを作成してSalesforceに登録する
SQL という言葉をご存知でしょうか。大量の情報の中から、お目当てのものだけを抽出するために考えだされた言語です。
- ヒント:
-
SQL とは?という方は以下のサイトを参照ください。
http://ascii.jp/elem/000/000/486/486077/index-3.html
さらにこの記事から「リレーショナルデータベース」についても 確認しておくとよいです。リレーショナルデータベースに関して理解ができていれば、Activation!トレーニングの内容がさらにわかりやすくなるかもしれません
Salesforce には SQL とよく似た、「SOQL」という言語が用意されています。
この SOQL を Apex プログラムの中から使うことで今回の要件の1をおこなうことができます。
その内容が以下です。
2箇所、角括弧[] で囲まれた箇所が SOQL で、それ以外が Apex のコードになります。
上記の内容を Apexクラスとして Salesforce に登録します。
その前に、Apexクラスで集計した値を登録するカスタム項目を「取引先」オブジェクトに作成しておきます。
カスタム項目名は「totalAmmount」, ラベル名は「成約商談金額合計」とします。ラベル名は分かりやすいものであれば別のものでもよいです。
つぎに、上記のApexクラスの右下、「View Raw」アイコンを右クリックで新規ウィンドウで開いてください。
表示されたウィンドウに、Apex のプログラムが表示れますので、「すべて選択」して「コピー」しておきます。
[ 設定 ] | [ ビルド ] | [ 開発 ] | [ Apexクラス ] を開き、[ 新規 ] をクリックします。
Apexプログラムを入力する画面で、さきほどコピーしたものを貼り付けて [ Save ] をクリックします。
これで Apex が登録されました。次の手順に進みます。
SQL という言葉をご存知でしょうか。大量の情報の中から、お目当てのものだけを抽出するために考えだされた言語です。
- ヒント:
-
SQL とは?という方は以下のサイトを参照ください。
http://ascii.jp/elem/000/000/486/486077/index-3.html
さらにこの記事から「リレーショナルデータベース」についても 確認しておくとよいです。リレーショナルデータベースに関して理解ができていれば、Activation!トレーニングの内容がさらにわかりやすくなるかもしれません
Salesforce には SQL とよく似た、「SOQL」という言語が用意されています。
この SOQL を Apex プログラムの中から使うことで今回の要件の1をおこなうことができます。
その内容が以下です。
2箇所、角括弧[] で囲まれた箇所が SOQL で、それ以外が Apex のコードになります。
上記の内容を Apexクラスとして Salesforce に登録します。
その前に、Apexクラスで集計した値を登録するカスタム項目を「取引先」オブジェクトに作成しておきます。
カスタム項目名は「totalAmmount」, ラベル名は「成約商談金額合計」とします。ラベル名は分かりやすいものであれば別のものでもよいです。
つぎに、上記の Apexクラスの右下、「View Raw」アイコンを右クリックで新規ウィンドウで開いてください。
表示されたウィンドウに、Apex のプログラムが表示れますので、「すべて選択」して「コピー」しておきます。
[ 歯車マーク] | [ 設定 ] [ カスタムコード] | [ Apexクラス ] を開き、[ 新規 ] をクリックします。
Apexプログラムを入力する画面で、さきほどコピーしたものを貼り付けて [ Save ] をクリックします。
これで Apex が登録されました。次の手順に進みます。
3.登録したApexをスケジュールジョブとして登録する
スケジュールを登録します。
[ 設定 ] | [ ビルド ] | [ 開発 ] | [ Apexクラス ] [ Apexをスケジュール ] をクリックします。
スケジュールに必要な情報を登録します。
ジョブ名を「商談合計金額集計」、Apexクラスには、「OpportunityAmountSammaryToAccount」を選択します。
頻度に「毎週」 日曜から月曜すべてにチェックをつけます。開始はそのままで終了は1年後を設定します。
[ 保存 ] を押すと、スケジュールの登録が完了します。
登録されたスケジュールは [設定] | [ ビルド ] | [ 監視 ] | [ ジョブ ] で確認することができます。次回の実行が直近の 0:00 になっていることが確認できます。
これで、本日から1年後の日付まで、毎日 0:00 に、登録した商談の合計金額を集計する処理が実行されるようになります。
スケジュールを登録します。
[ 歯車マーク ] | [ 設定 ] | [ カスタムコード ] | [ Apexクラス ] | [ Apexをスケジュール ] をクリックします。
スケジュールに必要な情報を登録します。
ジョブ名を「商談合計金額集計」、Apexクラスは「OpportunityAmountSammaryToAccount」を選択します。
頻度に「毎週」 日曜から月曜すべてにチェックをつけます。開始はそのままで終了は1年後を設定します。
[ 保存 ] を押すと、スケジュールの登録が完了します。
登録されたスケジュールは [ 歯車マーク ] | [ 設定 ] | [ 環境 ] | [ ジョブ ] | [ スケジュール済みジョブ ] で確認することができます。今回の設定では、次回の実行が直近の 0:00 になっていることが確認できます。
これで、本日から1年後の日付まで、毎日 0:00 に、登録した商談の合計金額を集計する処理が実行されるようになります。
4.その他のスケジュールジョブの登録方法
説明したスケジュールジョブの登録方法以外に、Apexクラスを作成してスケジュールを登録する方法もあります。
こちらはさらに細かな条件を指定してスケジュールを登録することができます。
Apexクラスを作成してスケジュールジョブを登録する方法については【独自の画面を作成する】で説明しています。
5.演習
今回紹介した Apex のコードを Sandbox 上で登録してください。
そして、そのコードが問題なく実行されることを確認してください。
そのうえで、本番環境に Apex をリリースしてください。
※ 本番環境では別途 スケジュールの登録が必要です。
- ヒント:
- Sandbox と本番環境へのリリースについては 【サンドボックスに設定・データをコピーし、検証した設定を本番にリリースする】を参照ください。