カスタムアクションを追加する
学習の目的
この単元を完了すると、次のことができるようになります。
- カスタムアクションの機能と場所を定義する。
- サンプルコードを使用して Apex クラスを作成する。
- Apex クラスの権限を設定する。
- カスタムアクションをディスパッチャーコンソールに追加する。
カスタムアクションをユーザーが必要とする場所に表示する
Jacinta は別の依頼をするために Maria のところへやってきました。時々、派遣作業員は体調不良や予定が長引いていることを Jacinta に連絡してきます。このようなスケジュールの変更は、次の予定に影響して今日中に完了できなくなる危険性があります。Jacinta はこういった予定の状況をガントチャートから直接 [In Jeopardy (対応が必要)] に設定することを望んでいます。Maria は力になることができるでしょうか?
もちろん、できます。Maria はカスタムアクションを作成して Jacinta のガントチャートに追加し、予定の状況を設定できます。カスタムアクションを使用すると、Apex クラスをコールするか、Visualforce ページを開くことができます。また、カスタムアクションはディスパッチャーコンソールのいくつかの領域でレコードに対して実行できます。Maria は、このアクションは Apex クラスを使用して実行するのが最善であると判断します。
Maria は Jacinta にカスタムアクションを表示したい場所を尋ねます。Maria はシステム管理者がカスタムアクションをディスパッチャーコンソールに追加できる場所として、次を挙げます。
- 個別または複数の予定に関するサービス予定リスト
- 個別または複数の予定に関するガントチャート
- 個々の派遣作業員またはリソースの不在に関するガントチャート
- 地図上の多角形 (多角形内の予定に対してアクションを実行)
Jacinta は Maria にカスタムアクションをガントチャート上の個々のサービス予定に追加するように頼みます。これで、Maria は次の手順を行う準備ができました。
- Apex クラスを作成する。
- 権限をクラスに割り当てる。
- カスタムアクションをディスパッチャーコンソールに追加する。
Apex クラスを作成する
Maria は、Jacinta の依頼に対応するコードがすでに存在するかどうかを確認します。Maria は、「Field Service Lightning 開発者ガイド」でまさに必要としていることを実行する Apex クラスのコードサンプルを見つけて感激し、そこで提供されている toggleServiceAppointmentJeopardy クラスを使用して、次の手順で作業をやり遂げます。
- をクリックして、[開発者コンソール] を選択します。
- [File (ファイル)] メニューから、[New (新規)] | [Apex Class (Apex クラス)] を選択します。
- クラス名に
toggleServiceAppointmentJeopardy
と入力し、[OK] をクリックします。 - 開発者コンソールでコードをすべて選択して削除します。
- 新しいコードを入力します。Maria はコードサンプルを貼り付けます。
global class toggleServiceAppointmentJeopardy implements FSL.CustomGanttServiceAppointmentAction { global String action(List<Id> serviceAppointmentsIds, Datetime ganttStartDate, Datetime ganttEndDate, Map<String, Object> additionalParameters) { List<ServiceAppointment> saList = [SELECT FSL__InJeopardy__c, AppointmentNumber FROM ServiceAppointment WHERE Id in: serviceAppointmentsIds]; String reply = ''; List<String> saNames = new List<String>(); for (ServiceAppointment s : saList) { s.FSL__InJeopardy__c = !s.FSL__InJeopardy__c; saNames.add(s.AppointmentNumber); } upsert saList; reply = String.join(saNames, ', '); return 'Service Appointments successfully processed: ' + Reply; } }
- [File (ファイル)] | [Save (保存)] を選択します。
Maria の新しいクラスは、Apex クラスのリストに保存されます。
権限を割り当てる
Maria はクラスを作成しましたが、適切な権限を設定するまではそのクラスをディスパッチャーコンソールに追加することはできません。
まず、新しいガントチャートのカスタムアクションに対してカスタム権限を設定します。
- をクリックし、[設定] を選択します。
- [クイック検索] ボックスに、
permission
(権限) と入力します。 - [カスタム権限] を選択します。
- [新規] をクリックします。
- 表示ラベル、名前、説明を入力します。Maria は次のように入力します。
- 表示ラベル:
toggle Service Jeopardy
(サービスの要対応を切り替える) - 名前:
toggle_Service_Jeopardy
- 説明:
Grant permission to view and use the toggleServiceJeopardy class on the Gantt.
(ガントチャートの toggleServiceJeopardy クラスを表示および使用する権限を付与する。)
- 表示ラベル:
- [保存] をクリックします。
次に、派遣担当リーダー用のカスタム権限セットを作成し、新しく作成した権限を追加します。
- をクリックし、[設定] を選択します。
- [クイック検索] ボックスに
permission
(権限) と入力し、[権限セット] をクリックします。 - [新規] をクリックします。
- [表示ラベル] に
Lead Dispatcher
(派遣担当リーダー) と入力し、[保存] をクリックします。 - 表示されたタブで、スクロールダウンして [カスタム権限] をクリックします。
- [編集] をクリックします。
-
[toggle Service Jeopardy (サービスの要対応を切り替える)] を選択して、[追加] をクリックします。
- [保存] をクリックします。
- [割り当ての管理] をクリックします。
- [割り当てを追加] をクリックします。
- 自分の名前の横にあるチェックボックスをオンにして、[割り当て] をクリックします。
これで、Maria にディスパッチャーコンソールにアクションを追加するための適切な権限が設定されました。あと一歩で完了です。
アクションをディスパッチャーコンソールに追加する
続いて、Maria は Jacinta が表示できるように、新しいアクションをディスパッチャーコンソールに追加します。
- アプリケーションランチャー から、[Field Service Admin] を開きます。
- [Field Service 設定] タブをクリックします。
- [Dispatcher Console UI (ディスパッチャーコンソール UI)] を開き、[Custom Actions (カスタムアクション)] をクリックします。
- 左側の列で、アクションカテゴリを選択して、アクションの位置と範囲を定義します。Maria は [Gantt (ガントチャート)] を選択します。
-
[New Action (新規アクション)] をクリックして、詳細を入力します。Maria は次のように入力します。
- Label in Dispatcher Console (ディスパッチャーコンソールでの表示ラベル):
Change Jeopardy Status
(要対応状況を変更する) - Action Type (アクション種別): Apex Class (Apex クラス)
- Apex Class (Apex クラス): toggleServiceAppointmentJeopardy
- Required Custom Permission (必須カスタム権限): toggle Service Jeopardy (サービスの要対応を切り替える)
- Icon (アイコン): アクションの表示ラベルの横に表示するアイコンを選択します。
- Label in Dispatcher Console (ディスパッチャーコンソールでの表示ラベル):
- [Save (保存)] をクリックします。
Maria は Jacinta に新しいアクションの準備が整ったことを伝えます。Jacinta がガントチャート上の既存のサービス予定を右クリックすると、要対応状況を変更するためのオプションが表示されます。複数のサービス予定を選択するには、Ctrl キーを押したままにして選択します。
Maria はアクションをガントチャートに追加しました。また、アクションを定義し、それをどこに配置するかを決め、必要なことを実行するコードサンプルを見つけ、権限を設定しました。次に、そのアクションを [Dispatcher Console UI (ディスパッチャーコンソール UI)] 設定に追加しました。これで、Jacinta は必要に応じてサービス予定の要対応状況を変更できるようになりました。
Maria と Jacinta は、チームのニーズに合わせてディスパッチャーコンソールをカスタマイズしました。皆さんに自分のディスパッチャーコンソールをカスタマイズする方法を考えるようにお願いしたのを覚えていますか? きっとすばらしいアイデアが浮かんだ思います。