アクションプランは、組織がベストプラクティスを簡単に共有できる再利用可能なタスクテンプレートにカプセル化するのに役立ちます。
次のオブジェクトのアクションプランを作成できます。
アクションプランはサポートされていません。アクションプランのコミュニティ支援については、Salesforce Trailblazerコミュニティにアクセスしてください。アイデアや問題を提出するには、GitHubのアクションプランにアクセスしてください。
アクションプランはオープンソースソフトウェアです。問題のレポート、アイデア、ドキュメント、コードの調整、その他すべての参加を歓迎します。もっと詳しく知る。
始めるのは簡単です。各オブジェクトについて、リストビューにボタンを追加する必要があります。詳細ページにボタンを追加する必要があります。アカウントについては、次の手順に従ってください。
アクションプランの設定を編集し、組織レベル、プロファイルレベル、またはユーザーレベルのいずれかで値を更新することにより、これらの設定を変更します。
[セットアップ]> [開発]> [カスタム設定]に移動します。 Action Plans Settings
の横にある「管理」をクリックします。 「デフォルトの組織レベル値」近くの「新しい」ボタンをクリックします。有効にする値を確認してください。
Enable Chatter Post
関連レコードのおしゃべりフィードに投稿を配置します(そのオブジェクトのおしゃべりが有効になっている場合)。チェックされていない場合、アクションプランはフィードポストを作成しません。Unassigned Task Defaults to Record Owner
アクションプランのテンプレートタスクが、「フィールド」に関連するレコードの所有者にフィールドに移動することを保証します。チェックされていない場合、空白の「 'フィールドに割り当てられたタスクが実行中のユーザーに割り当てられます。タスクは、アクションプランテンプレートで特定の人に割り当てることができ、この設定を上書きします。Default Object on Lead Conversion
アクションプランがリードに関連している場合、アクションプランを変換されたアカウント、連絡先、またはリードが変換されたときに移動する必要があるかどうかを指定します。デフォルトは連絡先です。Action Plans Business Hours ID
とUse Business Hours
将来の機能のために予約されています。 カスタムメタデータのWeekend Day
変更して、週末の曜日と、タスクを前または後方に移動する日が何日かを前週の終わりまたは来週の開始に移動する日を示します。これにより、別の週末と協力したり、特定の曜日に任意のタスクを割り当てることを避けることができます。すべての平日は両方の数値フィールドに0があるはずです。
各オブジェクトについて、リストビューにボタンを追加する必要があります。アカウントについては、次の手順に従ってください。
他の標準オブジェクトのためにこれらの手順を繰り返すアクションプランのサポート:連絡先、リード、機会など。
アクションプランオブジェクトについては、この手順に従ってください。
オプションでは、「アクションプランタスク」フィールドをタスクページレイアウトに追加しますが、このフィールドをクリアするとアクションプランの進行状況を追跡する機能が破られるため、読み取り専用である必要があります。
アクションプランには、 Action Plan
とAction Plan Template
2つの共有オブジェクトが含まれます。組織に合った方法で共有設定を構成することができます。
Tasks
にのみアクセスする必要があります。これらのタスクがアクションプランの一部であることを知らずに、タスクを割り当てることができます。タスクのステータスに変更する変更は、関連するアクションプランタスクテンプレートレコードに自動的に反映されます。許可セットは必要ありません。 アクションプランを使用する必要がある各ユーザーに適切な許可セットを割り当てます。
Action Plans Admin:
アクションプラン、アクションプランテンプレート、APタスク、APTタスクテンプレートの完全な権限。Action Plans Template Creator:
アクションプランテンプレートとAPテンプレートタスクの完全な権限。アクションプランアクセスなし。Action Plans Creator:
アクションプランとAPタスクの読み取り、作成、編集、削除。アクションプランテンプレートとAPTタスクテンプレートの読み取り専用。Action Plans Import/Export:
アクションプランテンプレートレコードへのエクスポートおよびインポートへのアクセス。エクスポート用の適切なボタンとインポート用のタブを表示します。Action Plans User:
アクションプランとAPタスクの読み取り専用。タスクの許可の編集は、ユーザーのプロフィールまたはその他の許可セットを介して提供される必要があります。各許可セットの使用:
Action Plans User
許可セットが必要です。アクションプランへの読み取り専用アクセスを提供します。Action Plans Creator
許可セットは、アクションプランテンプレートへの読み取り専用アクセスを提供し、アクションプランへのアクセスを読み取り、作成、編集、削除します。Action Plans Template Creator
許可セットを必要とします。これには、すべてのアクションプランテンプレートのみを読み取り、作成、編集、削除する許可が含まれます。アクションプランまたはタスクの許可は含まれません。これらのユーザーがアクションプランアクセスを必要とする場合、他の許可セットも同様に使用する必要があります。カスタム許可により、アクションプランテンプレートのエクスポートが可能になります。Action Plans Template Creator
のアドオンとして意図されたAction Plans Import/Export
許可セットにより、テンプレートの詳細ページとインポートタブでエクスポートボタンを表示できます。カスタム許可Action Plan Template Export
アクションプランテンプレートと関連するタスクのエクスポートが可能になります。組織独自のテンプレートの潜在的なセキュリティホールであるため、この許可を慎重に使用してください。これは、テンプレートをサンドボックスから制作組織に移動するのに最適な方法です。Action Plans Admin
には、4つのアクションプランオブジェクトすべてのすべてのアクセス許可(アクションプラン、アクションプランタスクテンプレート、アクションプランテンプレート、およびアクションプランテンプレートタスクテンプレート)が含まれます。カスタム許可により、アクションプランのテンプレートをエクスポートできます。注:フローまたはトリガー経由で使用される頂点は、実行するために特別な権限を必要としません。
MyObject__c
という名前のカスタムオブジェクトがある場合は、アクションプランMyObject__c
のフィールドに名前を付ける必要があります。Related Objects
フィールドセットにフィールドを追加します。before delete
とafter undelete
オブジェクトトリガーに次のコードを追加します(管理されたパッケージを使用していない場合は、 LabsActionPlans
名前空間を削除します): LabsActionPlans . ActionPlansTriggerHandlers . actionPlansSObjectTriggerHandler ( ' CustomObject__c ' );
カスタムオブジェクトのトリガーをカバーするために、テストクラスを作成することを忘れないでください。カバレッジ(ベストプラクティスではない!)に行くだけなら、テスト方法を挿入してからレコードを削除するだけです。残念ながら、このパッケージのコードは、カスタムオブジェクトのアクションプランを簡単に作成することに役立ちません。
Create Custom Object Action Plan
ボタンを追加するアクションプランはすでに新しいアクションプランアクションをオーバーライドしていますが、新しいボタンには新しいアクションプランの画面が表示されますが、既存のテンプレートを追加することはできません。 (おそらくこれは将来のリリースになります...セーフハーバー。)アクションプランオブジェクトに次の形式を備えたカスタムボタンを作成し、カスタムオブジェクトページレイアウトの関連リストに追加します。
LabsActionPlans__
名前空間を削除します): {!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType="CustomObject__c", refId=CustomObject__c.Id] )}
Create Action Plans
アカウントリストビューのボタンが複数のアクションプランを作成するボタンがあるように、カスタムオブジェクトに対して同じことを行うことができます。次のコードでVisualForceページを作成します。
< apex : page standardController = " CustomObject__c " recordsetvar = " o "
extensions = " LabsActionPlans.ActionPlansCreateMultipleAPsExtension "
showHeader = " false " action = " {!doRedirect} " >
< apex : form >
< apex : actionFunction name = " jsCancel " action = " {!cancel} " immediate = " true " />
</ apex : form >
< script >
var oids = '{!JSENCODE(objIDs)}';
if (oids.length < 15) {
alert('{!$Label.LabsActionPlans__ap_Errors_selectOneRecord}');
jsCancel();
}
</ script >
</ apex : page >
次に、そのオブジェクトのリストビューボタンを作成し、リストビューに追加します。
たとえば、アクションプランを契約に関連付けることを許可しない場合は、契約計画に関連するオブジェクトフィールドセットから契約フィールドを削除します。アクションプランオブジェクトからフィールドを削除する必要はありません。
これで、最初のテンプレートを作成する準備ができました。 [アクションプランテンプレート]タブに移動します。 [新しいアクションプランテンプレート]ボタンをクリックします。
テンプレート画面は次のようになります:
名前 - テンプレート名。
説明 - テンプレートの使用方法の説明。
週末のスキップ - 週末に週末または週末の翌日になるまでのタスクを自動的にスケジュールすることができます。チェックすると、ピックリストが表示され、週末の前後に選択できます。
アクション - 「x」をクリックして、テンプレートのステップを削除します。
件名 - タスクとは何か。
タスク依存関係 - 依存タスクは、制御タスクが完了したらのみ作成されます。
日 - この値は、タスクの期日を決定します。
に割り当てられている - ユーザーに見上げます。動的にタスクを割り当てたい場合は、空白のままにします。動的に割り当てるとき、デフォルトの動作は、実行中のユーザーにタスクを割り当てることです。また、アクションプランの設定を変更して、システムにレコード所有者に割り当てることもできます。上記の「設定をインストールする」ガイドを参照してください。
カテゴリ - どのタイプのアクティビティ。
優先度 - タスクの優先順位とレコードタイプ(該当する場合)から取得。
電子メール - チェック時に標準の新しいタスクメールを送信します。他のタスクに依存するタスクの場合、タスクが作成されるとメールが送信されます。
リマインダー - このチェックボックスは、アクションプランを作成するためにテンプレートを適用する際のリマインダーのデフォルトの動作を定義します。
チェックされていない場合、アクションプランの作成ページでリマインダーが最初に無効になります
チェックされている場合、リマインダーが利用可能になります。
コメント - タスクをサポートするコメント。
新しいタスクを追加 - タスクグリッドに追加の行を追加します。
保存 - テンプレートを保存します。
組織がタスクレコードタイプを使用している場合、各アクションプランとテンプレートレコードのすべてのタスクに使用するレコードタイプを指定する必要があります。これは、関連する各アクションプランタスクで利用可能なステータス値に影響します。アクションプランまたはテンプレートが作成されたら、これを変更することはできません。そのアクションプランまたはテンプレートのすべてのタスクに対して、1つのレコードタイプのみを指定できます。
アカウントリストビューに移動します。アクションプランを作成するアカウントを選択します。 [アカウントアクションプランの作成]ボタンをクリックします。
ルックアップで名前を入力してクリックして、使用するテンプレートを選択します。
この計画に固有の情報を入力してください。以前に選択したアカウントが表示されていることに注意してください。
アクションプランを保存します。注:アクションプランの作成は、甘い(非同期)プロセスによって処理されます。作成されたすべてのレコードを表示できるようになるには、数分かかる場合があります。
アクションプランとタスクを確認します。
アクションプランの最初のタスクを完了します。アクションプランは現在正しい関連リストにあり、このアカウントには1つのオープンアクティビティと1つの閉鎖アクティビティがあることに注意してください。テンプレート内の3番目のアクティビティは依存しており、制御タスクが完了した場合にのみ作成されます。 (ここに連絡先に関連するリストが表示されますが、これはアカウントに等しく適用されます。)
アクションプランタスクでSend Email
が選択されている場合にタスク通知を受信するには、ユーザーがタスク通知メールの受信を制御できるようにしていること(これはデフォルトでアクティブです)、および電子メール通知を送信することを許可していることを確認してください(これもそうですデフォルトで有効)。詳細については、Salesforce H&Tを参照してください。
アクションプランタスクに関するSend Email
フィールドをチェックして電子メール通知を送信する必要があります。設定により、 Allow Flow to send delegated task notifications on records created through Apex
も有効にする必要があります。 [設定]> [機能設定]> [販売]> [アクティビティ設定]に移動して、そのボックスを確認し、フロー作成アクションプランを介して電子メール通知を送信します。
ユーザーがタスク通知を有効にしている場合、アクションプランタスクが作成されるとそれらが送信されます。
Send Email
ボックスがチェックされていない場合、ユーザーが個人設定にある場合でもタスク通知を受信する場合があります。アクションプランのタスクをキューに割り当てることはできないため、親レコードがキューによって所有されている場合、各APタスクは実行中のユーザーに割り当てられます。そのアクションプランから生成されたタスクは、フローを使用してタスクを再割り当てすることにより、キューに割り当てることができます。 Invocable ApexはアクションプランタスクIDのリストを返すため、作成されたタスク(アクションプランのタスクとの関係がある)を同期的に作成し、すぐにクエリすることができるため、同じフローで更新できます。あるいは、タスクを再割り当てして、他の方法をキューするようにします。アクションプランを破ることはなく、キュー名はアクションプランの詳細ページに表示されます。
アクションプランには、フローに含めることができる呼び出し可能な頂点クラスが含まれます。トリガーレコードのレコードIDが必要です。IDまたは目的のテンプレートの名前と同様に。トリガーからアクションプランを開始する日はオプションです(デフォルトは0になります)。最初のタスクは、開始日からの日数(テンプレートで指定)が原因です。この日付は週末になる可能性がありますが、テンプレートに設定すると週末を避けるためにタスクの期日を移動できます。
Invocable Apexクラスは、作成されたすべてのアクションプランタスクのSalesforce IDを返します。これは、次のフローステップで使用できます。
以下を実行します:
sf apex run --file ./data/sample-data.apex
含まれたフローでこのテンプレートを使用するには、 New Customer Onboarding Activities
フローのCreate Action Plan From Template
を参照してください
アカウントを作成し、「顧客」から始まる任意の価値にType
を設定します
アクションプランで動作するプロセスビルダーを作成するときは、再帰ボックスをチェックしないことをお勧めします。
また、プロセスビルダーをまったく使用しないこともお勧めします!
トリガーまたは頂点クラスから呼び出される頂点を呼び出すには、次のサンプルコードを調整します。
String apTemplateName ;
ActionPlanTemplate__c apTemplate ;
List < SObject > toInsert ... // can use any object, such as Account, or the generic SObject class
List < ActionPlanCreateInvocable . CreateActionPlanRequest > requests = new List < ActionPlanCreateInvocable . CreateActionPlanRequest >();
for ( SObject a : toInsert ){
ActionPlanCreateInvocable . CreateActionPlanRequest req = new ActionPlanCreateInvocable . CreateActionPlanRequest ();
req . templateNameOrID = apTemplate . Id ;
req . relatedRecordID = a . Id ;
req . daysToActionPlanStart = 0 ;
req . actionPlanName = a . Name + ' - Onboarding ' ;
requests . add ( req );
}
List < Id > resultIDs = ActionPlanCreateInvocable . makeActionPlanFromTemplate ( requests );
String apTemplateName ;
LabsActionPlans__ActionPlanTemplate__c apTemplate ;
List < SObject > toInsert ... // can use any object, such as Account, or the generic SObject class
List < LabsActionPlans . ActionPlanCreateInvocable . CreateActionPlanRequest > requests = new List < LabsActionPlans . ActionPlanCreateInvocable . CreateActionPlanRequest >();
for ( SObject a : toInsert ){
LabsActionPlans . ActionPlanCreateInvocable . CreateActionPlanRequest req = new LabsActionPlans . ActionPlanCreateInvocable . CreateActionPlanRequest ();
req . templateNameOrID = apTemplateName ;
req . relatedRecordID = a . Id ;
req . daysToActionPlanStart = 1 ;
req . actionPlanName = a . Name + ' - Onboarding ' ;
requests . add ( req );
}
List < Id > resultIDs = LabsActionPlans . ActionPlanCreateInvocable . makeActionPlanFromTemplate ( requests );
変数:
templateNameOrID
(必須)名前は一意ではないため、IDが推奨されますrelatedRecordID
(必須)は、アクションプランオブジェクトから関連するレコードオブジェクト名という名前の関係フィールドを持っている必要がありますdaysToActionPlanStart
(不要)デフォルトは0です。計画の作成日actionPlanName
(不要)アクションプランにカスタム名を与えます。指定されていない場合、デフォルトは{テンプレート名} - {親レコード名}になります。アクションプランは、テンプレートのエクスポートとテンプレートのインポートを使用したベストプラクティスの共有と発見をサポートします。
エクスポートは簡単です。エクスポートするテンプレートに移動します。 [エクスポート]ボタンをクリックします。
エクスポートは、テンプレートヘッダーとタスク情報を含む単純なXMLファイルを作成します。また、誰がテンプレートを作成したかに関する情報も含まれています。注:このテンプレートを使用するオブジェクトに関するユーザー情報や機密データは含まれていません。
Lightning Experienceを使用している場合、エクスポートされたファイルは[ファイル]タブに、プライベートファイルライブラリにあります。 Salesforce Classicをまだ使用している場合は、[ドキュメント]タブのプライベートドキュメントフォルダーにあります。
ファイルの共有は簡単です。共有したい人にファイルをメールで送信してください。より多くの聴衆と共有したいですか?ファイルを[email protected]のSalesforce Labsにメールしてください。
インポートも簡単です。 [インポートテンプレート]タブに移動します。 「閲覧」を使用してインポートするファイルを選択し、「インポートテンプレート」をクリックしたことがわかったら。
このリポジトリには、サンプルアクションプランテンプレートファイルも含まれており、適切なタブでインポートできます。 GitHubから新しい顧客のオンボーディングまたはトレードショーのフォローアップをダウンロードするか、このSFDXプロジェクトでdata
フォルダーのSFDXプロジェクトで見つけることができます。