自動化計画
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
自動化計画の定義はSitecore.Marketing.Definitions.AutomationPlans.AutomationPlanDefinitionManagerクラスによって管理されます。
AutomationPlanDefinitionManagerへのアクセス
AutomationPlanDefinitionManagerはSitecore DIコンテナから利用可能です。クラスのコンストラクタに型DefinitionManagerBase<IAutomationPlanDefinition, AutomationPlanDefinitionRecord>のパラメータを含め、コンテナからクラスを引き出すことで、コンテナがインスタンスを解決するのが望ましいです。
public MyClass(DefinitionManagerBase<IAutomationPlanDefinition, AutomationPlanDefinitionRecord> planDefinitionManager) { ... }
コンテナを使ってクラスを構築できない場合は、サービスロケーターを使うことができます。このクラスはSitecore DIコンテナでも利用可能です:
using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions;
ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager
自動化計画の定義
オートメーションプランは、Sitecore.Marketing.Definitions.AutomationPlans.Model名前空間の型を用いて定義されます。多くの他の定義がほぼ単純なPOCOであるのに対し、オートメーションプランはより複雑で、コレクションプロパティを含みます。
計画の定義
自動化計画はSitecoreの定義項目で表現されます。以下の例は基本プランの定義方法を示しています:
var manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager
Guid planId = Guid.NewGuid();
AutomationPlanDefinition plan = new AutomationPlanDefinition(planId, "Plan item name" CultureInfo.InvariantCulture, "Yuletide Gnome Campaign Plan", DateTime.UtcNow, "sitecore\\emma") { ReentryMode = AutomationPlanReentryMode.Multiple, ContextKeyFactoryType = "MyFactory, MyAssembly", // Only needed if ReentryMode is set to Multiple Description = "A campaign plan about festive garden gnomes.", EndDate = new DateTime(2005, 12, 12), };
以下の点を覚えておいてください:
- ContextKeyFactoryType は ReentryMode が に設定されている場合のみ必須です。 AutomationPlanReentryMode.Multiple
プラン入力スケジュール
特定の連絡先セグメントごとに登録スケジュールを定義します。例えば、新規連絡先を毎時間のプランに登録するオプションを選ぶことができます。
以下の例は、PlanEntryScheduleプロパティを毎日指定された時間に実行するDailyScheduleに設定します。計画は既存の接触セグメントを対象にID {2546482E-887A-4CAB-A403-AD9C326FFDA5}を対象とします。
var manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager
Guid planId = Guid.NewGuid();
AutomationPlanDefinition plan = new AutomationPlanDefinition(planId, "Plan item name" CultureInfo.InvariantCulture, "Welcome new user plan", DateTime.UtcNow, "sitecore\\emma")
{
ReentryMode = AutomationPlanReentryMode.Multiple,
ContextKeyFactoryType = "MyFactory, MyAssembly", // Only needed if ReentryMode is set to Multiple
Description = "A campaign plan for brand new users.",
EndDate = new DateTime(2040, 12, 12),
PlanEntrySchedule = new List
プランのスケジュールは4種類あります:
- DailySchedule - 毎日決まった時間に運行されます。
- WeeklySchedule - 特定の曜日(月曜日や金曜日など)に運行される。
- SameDayEachMonthSchedule - 特定の月の特定の日(例)に運行されます。
- WeeklyDayEachMonthSchedule - 毎月1回、特定の曜日(例えば第2金曜日)に開催されます。月の最終週に登録をスケジュールするために -1 を指定します。
!注1つのプランに複数のスケジュールを割り当てることができます。ただし、マーケティングオートメーションのユーザーインターフェースは複数のスケジュール編集には対応せず、削除のみ可能です。
活動
自動化計画には活動の集合が含まれています。活動はプラン項目自体のJSONとして保存され、個別のサブ項目としては 保存 されません。計画内の各アクティビティは、自身から次の活動への法的経路を定義します。連絡先は法的経路に沿って活動から活動へと移動しながら計画を横断します。
活動を定義する際には以下の点を念頭に置いてください:
- アクティビティIDは自動化計画内で一意でなければなりません
- EntryActivityIdを定義しなければなりません。これはコンタクトが始まるAutomationActivityDefinitionのIDです
- アクティビティに単一のパスしか含まれていない場合、それはしばしば デフォルト パスと呼ばれます
- ActivityTypeIdはマーケティングオートメーションエンジンで設定された活動タイプのIDに一致するべきです
- 活動を追加する順序 は重要ではなく 、連絡先が計画を通過できる順番は、各活動が定義する法的経路によって決まります
以下の計画には3つの活動があります。 firstActivityは2つのパスを定義しています。1つはemailActivity (デフォルト)に連絡を送るパス、もう1つはsnailmailActivityに連絡を送る方法です。
using Sitecore.Marketing.Definitions.AutomationPlans.Model; using System; using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions; using System.Globalization;
namespace Documentation
{
public class AutomationPlans
{
public void Example()
{
var manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager
Guid planId = Guid.NewGuid();
Guid entryActivityGuid = Guid.NewGuid(); Guid secondActivityGuid = Guid.NewGuid();
AutomationPlanDefinition plan = new AutomationPlanDefinition(planId, "Plan item name", CultureInfo.InvariantCulture, "Yuletide Gnome Campaign Plan", DateTime.UtcNow, "sitecore\\emma") { ReentryMode = AutomationPlanReentryMode.Multiple, ContextKeyFactoryType = "MyFactory, MyAssembly", // Only needed if ReentryMode is set to Multiple Description = "A campaign plan about festive garden gnomes.", EndDate = new DateTime(2005, 12, 12), EntryActivityId = entryActivityGuid };
// Email activity type // THIS IS THE ACTIVITY TYPE DESCRIPTOR ID Guid secondActivityTypeGuid = Guid.Parse("62632708-110a-46ad-995d-6a4a709e90d4");
var emailActivity = new AutomationActivityDefinition { Id = secondActivityGuid, // ID of this instance ActivityTypeId = secondActivityTypeGuid, };
// Snail mail activity // THIS IS THE ACTIVITY TYPE DESCRIPTOR ID Guid thirdActivityTypeGuid = Guid.Parse("A2632708-F10a-46ad-995d-6a4a709e90d4");
var snailmailActivity = new AutomationActivityDefinition { Id = secondActivityGuid, // ID of this instance ActivityTypeId = secondActivityTypeGuid, };
// Entry activity // THIS IS THE ACTIVITY TYPE DESCRIPTOR ID Guid activityTypeGuid = Guid.Parse("56632708-510a-46fd-995d-6a4a709e90d4");
var firstActivity = new AutomationActivityDefinition { Id = entryActivityGuid, // ID of this instance ActivityTypeId = activityTypeGuid, Paths = { { "default", emailActivity.Id }, { "snailMail", snailmailActivity.Id }
} };
plan.AddActivity(emailActivity); plan.AddActivity(emailActivity); plan.AddActivity(firstActivity); } } }
活動の種類
各アクティビティはアクティビティタイプを参照します。アクティビティタイプは、連絡先がアクティビティに登録された際に実行されるロジックを決定します。アクティビティタイプは、設定とともに自動化エンジンにデプロイされるクラスです。各アクティビティタイプには、Emmaが必要とするすべての情報を含む アクティビティタイプディスクリプタアイテム も存在します。例えば、アクティビティタイプ名、説明、アクティビティが受け入れるパラメータなどです。
ActivityTypeIdです。アクティビティタイプについて、そしてそれらの作成方法についてさらに詳しく知りましょう
!注同じ活動タイプは同じプラン内でも複数のプランでも複数回使用できます。
活動パラメータ
アクティビティタイプは、アクティビティのインスタンスごとに設定するパラメータを定義できます。パラメータは、アクティビティタイプクラスのシンプルなプロパティと 、ディスクリプタ項目のマッチングアイテムで表現されます。
以下の例は、アクティビティ型ID {56632708-510a-46fd-995d-6a4a709e90d4} に関連付けられたクラスがFromAddressプロパティを持つことを前提としています。この計画を実行すると、指定された値が使われます:
var snailmailActivity = new AutomationActivityDefinition { Id = Guid.NewGuid(), // ID of this instance ActivityTypeId = Guid.Parse("56632708-510a-46fd-995d-6a4a709e90d4"), // Activity type descriptor ID Parameters = { { "FromAddress", "1234 Sitecore, Sitecore World, Denmark" } } };
自動化計画の節約
プランを定義したら、定義マネージャーのSaveAsync() メソッドを呼び出して保存できます。
AutomationPlanDefinition plan = CreatePlan();
AutomationPlanDefinitionManager manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager
manager.SaveAsync(plan);
また、セーブ中にSaveAsync() メソッドの2つ目のパラメータにtrueを渡すことで計画を起動することも可能です。
manager.SaveAsync(plan, true);
既存の自動化計画を更新する
既存のプラン定義を更新するには、再度saveメソッドを呼び出してください。
AutomationPlanDefinition plan = CreatePlan();
AutomationPlanDefinitionManager manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager
// Save plan so it exists manager.SaveAsync(plan);
// Make updates to plan plan.ReentryMode = ReentryMode.None;
// To update, simply call save again. manager.SaveAsync(plan);
より一般的なシナリオとしては、まずプランを取得し(下記参照)、モデルを更新し、更新されたプランでセーブを呼び出すことです。
自動化計画を起動する
計画は、管理外で利用可能になる前に、例えばリファレンスデータサービスに「公開」される前に有効化されなければなりません。
計画は保存時にSaveAsync() メソッドの有効化(2つ目の)パラメータにtrueを渡すことで有効化できます。
manager.SaveAsync(plan, true);
また、ActivateAsync() メソッドを使って、セーブを呼ばずにプランを有効化することも可能です。
manager.ActivateAsync(planId);
ActivateAsync()法は計画のIDを取り、計画定義モデルを必要としません。
自動化計画を削除する
プランを削除するには、マネージャーのDelete() メソッドを使います。個々のカルチャーは定義から削除できず、定義全体からのみ削除できます。メソッド呼び出しに提供されるカルチャーは、null(デフォルト値)またはCultureInfo.InvariantCultureのいずれかであるべきです。
manager.Delete(planId);
自動化計画の取得
単一のプランは、マネージャーのGet() メソッドのいずれかを用いてIDで取得できます。
IAutomationPlanDefinition planId = Constants.MyPlanId; // Ensure this is the ID of an existing plan
// Get by ID and culture. Will get the latest active version IAutomationPlanDefinition plan = manager.Get(planId, new CultureInfo("da"));
// Get by ID and culture. Will get the latest version, including if the version is inactive IAutomationPlanDefinition plan = manager.Get(planId, new CultureInfo("da"), true);
// Get a specific version by ID, culture and version number IAutomationPlanDefinition plan = manager.Get(planId, new CultureInfo("da"), 3);
別名で自動化計画を取得する
また、自動化計画をエイ リアス(別名)から取得することもできます:
CultureInfo planCulture = new CultureInfo("fr-fr"); var planDefinitionByAlias = definitionManager.GetByAlias("My alias", planCulture);
すべての自動化計画を取得する
GetAll()メソッドはマネージャーからすべてのプランを取得するために使用できます。定義が多数存在する場合があるため、このメソッドはページングをサポートしています。返却値は結果の1ページ分です。
// Get All with defaults which will be first page, page size 20, latest active versions only
ResultSet<DefinitionResult
// Get page 2
ResultSet<DefinitionResult
// Include inactive versions
ResultSet<DefinitionResult
結果にアクセスするには、結果のDataPageプロパティを使いましょう。
IAutomationPlanDefinition plan = page1AllPlans.DataPage.ElementAt(0);
その結果には、定義の総数や現在のページインデックス、ページサイズを公開するプロパティも含まれています。
long totalDefinitionCount = page1AllPlans.Total; int pageNumber = page1AllPlans.PageNumber; int pageSize = page1AllPlans.Count;