Low-Code/No-Code Advent Calendar 2018 23日目、本日はかしゆかの誕生日です、ほんとにおめでとうございます! めっちゃアウェイのところへやってきましたが、かしゆかの誕生日を祝う気持ちはどこでも一緒です、どうぞよろしくお願いいたします。
さて、Salesforce はご存知でしょうか。Sales CloudやService Cloudなど、CRMやコールセンターなどの SaaSとして提供されているアプリケーションサービスです。Salesforceには、Lightning Platform(旧名 Force.com)というaPaaS
(Application Platform as a Services)を包含していて、標準的な機能のカスタマイズや拡張はもちろん、一から新しいアプリケーションを開発することもできます。また、その開発されたアプリケーションはAppExchange(旧名:AppStore - Appleさんに名前上げたあれ)で公開し、販売することができます。
ビジネス向けaPaaSの仕組みを持つLightning Platformですので、各処理にドリブンして様々な機能をキックすることができます。今回はその中からプロセスビルダーを使って、取引先の担当者の誕生日がかしゆかと同じかどうかを確認して、同じだったらそれを通知する仕組みを「ノーコード」で実現してみます。
ここで実現できることは、Salesforce開発環境で利用できます。サインアップすれば、誰でも無償でお使いいただけますので、試してみてください。
プロセスの自動化
ビジネスアプリケーションでありがちなのは、何かの値を変更したら、それを受け取って、別のデータを更新したり、通知したり、別の機能を呼び出したりして、ビジネスプロセスを自動化していくことでしょう。
Salesforceでは、プロセスを自動化する機能として、「プロセスビルダー」と「ワークフロー」があります。人手を介するような「承認」が必要なプロセスには、「承認プロセス」もあります。使い方によって、これらを選別して利用します。
プロセスビルダーとワークフロー、どちらを使えばいいの?というときもありますが、プロセスビルダーでは次のようなときに利用します。
- 任意のオブジェクト種別のレコードを作成する。
- レコードとその親のみでなく、あらゆる関連レコードを更新する。
- クイックアクションを使用して、レコードの作成、レコードの更新、または活動の記録を行う。
- プロセスを別のプロセスから呼び出す。
- フローを起動する。このアクションはワークフローでスケジュールできません。
- メールを送信する。
- Chatter への投稿
- 承認を受けるレコードを送信する。
ワークフローでは、項目自動更新、外部システムへのアウトバウンドメッセージを行う場合に利用します。
プロセスビルダーを使ってみよう
Salesforceの設定画面から、プロセスビルダーを呼び出してみます。「クイック検索」のボックスに「プロセス」とか「ビルダー」「プロセスビルダー」打ち込むとアクセスがカンタンです。「プロセスの自動化」という中に「プロセスビルダー」があります。これをクリックします。
![Screen Shot 2018-12-22 at 13.52.47.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F37263%2Fd622fc47-f0f4-7311-2419-7032fa219147.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=4699fab703c5535c70b920b918820112)
すでに作成されているものがあれば、このようにプロセスの一覧が表示されます。結構謎な感じですが、「Trailhead」とか Salesforce社のハンズオンをやってると、似たような感じにきっとなります。「高額交際費API」とかめっちゃ気になりますね。
そのあたりのことは一旦忘れて、右上の「新規」ボタンをクリックして、プロセスを実際に作っていくこととしましょう。
![Screen Shot 2018-12-22 at 13.53.31.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F37263%2F6f7bfb50-784d-3a56-5186-8646b0ffd2aa.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=444f7fe9bb6ced5fb6a5527db29e1e24)
プロセスを作成する
プロセスの名前などを決めます。「プロセス名」や「説明」は好きにわかりやすいように付けます。API参照名は、Salesforce独自のApex
言語や他の機能から呼び出すときの参照値となりますので、これもわかりやすくしておきましょう。残念ながら、この名前の付け方は意味不明です。
プロセスを開始するタイミングは、このプロセスを始動するきっかけはなんですか、を指定します。今は、「レコード(保管されているデータのこと)の変更」とプラットフォームイベントで呼び出される場合、それから他のプロセスビルダーで作ったプロセスから呼び出される場合になります。
![Screen Shot 2018-12-22 at 13.54.16.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F37263%2F8b66092d-b05d-577f-8c2a-e06861735eeb.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=3efac2a14e710c8f2b7576fe3f1e8bc8)
IT関係者だと見覚えのよくある、フローチャート的な何かがでてきます。直感でひらめいたとおりの動き方をします。まずは、きっかけとなるオブジェクト(データベースでいうテーブル、データを保管する箱の最小単位)を指定します。
![Screen Shot 2018-12-22 at 13.54.25.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F37263%2Fd9d11fbe-087d-e4b7-f5a5-2a30699080f8.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=5be34514583e79bdf4111f2935c43ed3)
Salesforceでは、顧客担当者情報を入れるオブジェクトを「取引先責任者」という名前にしています。オブジェクトからそれを選択し、「レコードを作成または編集したとき」にしておきます。すべてのデータを最初からすべて入れるわけではなく、あとで更新する可能性がありますので、今回はこちらのほうが使い勝手が良いでしょう。
![Screen Shot 2018-12-22 at 13.54.47.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F37263%2Ff45d1790-3558-a5bc-fefe-1be8bf2ebaa4.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=44130dc272c83784c1aefa901f7e9cb6)
保存すると、また元のフローチャートの画面に戻ってきますから、分岐部分の「+ 条件を追加」を押してみます。
条件名は好きにして良いですが、まぁこんな感じですかね。取引先責任者には「誕生日」という項目がありますので、その項目が「1988/12/23」だったらということにします。
![Screen Shot 2018-12-22 at 14.30.36.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F37263%2F610c069f-ed74-47dd-2d2a-c44c660c645f.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=c4b22fb775b86a72d92eb30e22c1f779)
なお、この項目名、真面目に入れる場合にはAPI参照値
を入れないといけないのですが、クリックして選択できます。なので、この項目の中から検索したり、階層を選んだりして「誕生日」を選択すればよいだけです。便利(当然か)。
![Screen Shot 2018-12-22 at 13.55.52.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F37263%2Fd117cb22-d92d-b5dc-22bd-c0c849ff9337.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=84b7572efc6b0544c2f5bd725bd0b337)
最後に「ルール適用時のアクション」を入れます。先程の分岐条件にマッチしたときに、何をするのかを定義する部分ですね。まずは、どのようなアクションを行うのかを選択します。次の9つから選択できます。今回はChatterに投稿してほしいので、「Chatter に投稿」を選択しました。
![Screen Shot 2018-12-22 at 14.33.41.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F37263%2Fcb9471ee-79fb-5094-3af4-27829d108f71.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=6903ac68bf26f91c2fbd044cb2789810)
個々のアクションで入力すべきものは変わりますが、Chatterに投稿する場合には、「どこへ投稿するのか」と「メッセージ」を決めます。アクション名は分かりやすく、好きなものをどうぞ。ここで、「メッセージ」のところに「先込み項目」というものがあります。該当のレコードと関連する項目を指定すると、その内容で変更をしてくれるようになります。今回は、顧客担当者の名前を入れておきたいので、「姓」を選択しました。その結果が「{![Contact].LastName}になっています。Contact
(取引先責任者)内のLastName
(姓)を意味してるの、雰囲気でもわかりますね。あとは、メッセージを入れてきます。気持ち的には素晴らしいというか、羨ましいです。
![Screen Shot 2018-12-22 at 13.58.41.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F37263%2F64df39ed-c364-e358-01cc-5a3a701a972d.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=3680a8eadd45f6f5b0c4713ee7c47e08)
ここまでの内容すべて「保存」したあとに、右上の「有効化」ボタンをクリックします。すると、このプロセスが実行状態になります。
![Screen Shot 2018-12-22 at 13.58.56.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F37263%2F2ff988a8-b7bf-4c22-1252-df63b966b1c2.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=ad7655e274c42d8cbe5cdc2fbfee9be8)
で、実際に取引先責任者を作って、「誕生日」を「1988/12/23」にして保存すると...。
![Screen Shot 2018-12-22 at 14.00.26.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F37263%2Fab119956-eeb9-882f-6d2b-14ff8956e452.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=7aea0a20c0f4bf4d2ce523626a736b74)
該当の取引先責任者のChatterへ、このように投稿がなされる...ということになります。やった、かんたんにできましたね?
まとめ
このように、Salesforceでは、プロセスを自動化するためにプロセスビルダーなどの機能を標準で持っています。これらは、ノーコードで開発を行うことができますので、開発者でなくとも、かんたんにビジネスアプリケーションを開発することができる仕組みとなっています。これは、お便利ですね。