自動化プラン

Version:
日本語翻訳に関する免責事項

このページの翻訳は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<IAutomationPlanDefinition>();

自動化計画の定義

オートメーション プランは、Sitecore.Marketing.Definitions.AutomationPlans.Model名前空間のタイプを使用して定義されます。ほぼ単純なPOCOである他の多くの定義とは異なり、オートメーション プランはより複雑で、コレクション プロパティが含まれています。

プランの定義

自動化プランは、Sitecoreの定義アイテムで表されます。次の例は、基本プランを定義する方法を示しています。

var manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IAutomationPlanDefinition>();

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は、ReentryModeAutomationPlanReentryMode.Multiple

エントリースケジュールの計画

コンタクトの特定のセグメントの登録スケジュールを定義します。たとえば、すべての新しいコンタクトを新しいユーザーのプランに1時間ごとに登録することを選択できます。

次の例では、PlanEntryScheduleプロパティを、毎日指定した時刻に実行されるDailyScheduleに設定します。このプランは、IDが {2546482E-887A-4CAB-A403-AD9C326FFDA5}の既存の連絡先セグメントを対象としています。

var manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IAutomationPlanDefinition>();

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<Schedule> {                    
            new DailySchedule {                        
                TimeOfDay = new TimeSpan(1,0,0)
            },
        ScheduledContactListId = new Guid("2546482E-887A-4CAB-A403-AD9C326FFDA5");
};

次の4つのプラン スケジュールがあります。

  • DailySchedule - 毎日決まった時間に運行しています。

  • WeeklySchedule - 特定の曜日 (月曜日や金曜日など) の特定の時間に実行されます。

  • SameDayEachMonthSchedule - 月の特定の日(1日や22日など)の特定の時間に実行されます。

  • WeeklyDayEachMonthSchedule - 毎月1回、特定の曜日の特定の時間に実行されます (例: 第2金曜日)。月の最終週に登録をスケジュールする -1を指定します。

メモ

1つのプランに複数のスケジュールを割り当てることができます。ただし、マーケティングオートメーションのユーザーインターフェースは、複数のスケジュールの編集には対応しておらず、削除のみをサポートしています。

活動

自動化プランには、アクティビティのコレクションが含まれています。アクティビティは、個々のサブアイテム としてではなく 、プランアイテム自体にJSONとして保存されます。プラン内の各アクティビティは、それ自体から次のアクティビティへの有効なパスを定義します。連絡先は、法的パスに沿ってアクティビティからアクティビティに移動することで、プランを横断します。

アクティビティを定義する際には、以下の点に注意してください。

次のプランには3つのアクティビティがあります。 firstActivityでは、連絡先をemailActivityに送信するパス (デフォルト) と、連絡先をsnailmailActivityに送信するパスの2つのパスが定義されています。

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<IAutomationPlanDefinition>();

                        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として使用するものです。アクティビティの種類とその作成方法の詳細をご覧ください

手記

1つのアクティビティ タイプを、同じプラン内または複数のプラン間で複数回使用できます。

アクティビティパラメータ

アクティビティの種類では、アクティビティのインスタンスごとに設定するパラメーターを定義できます。パラメータは、アクティビティタイプクラスの単純なプロパティと、記述子アイテムの下の一致するアイテムで表されます。

次の例では、アクティビティの種類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<IAutomationPlanDefinition>();

manager.SaveAsync(plan);

オプションで、保存中にSaveAsync() メソッドの2番目のパラメータにtrueを渡すことで、プランをアクティブ化することもできます。

manager.SaveAsync(plan, true);

既存の自動化プランを更新する

既存のプラン定義を更新するには、saveメソッドを再度呼び出します。

AutomationPlanDefinition plan = CreatePlan();
AutomationPlanDefinitionManager manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IAutomationPlanDefinition>();

// 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);

より一般的なシナリオは、最初にプランを取得し (以下を参照)、モデルを更新してから、更新されたプランでsaveを呼び出すことです。

オートメーション プランのアクティブ化

プランは、Reference Data Serviceに "公開" されるなど、管理の外部で使用できるようになる前にアクティブ化する必要があります。

プランは、SaveAsync() メソッドのactivate(2番目の)パラメータにtrueを渡すことで、保存時にアクティブ化できます。

manager.SaveAsync(plan, true);

プランは、ActivateAsync() メソッドを使用して、saveを呼び出さずにアクティブ化することもできます。

manager.ActivateAsync(planId);

ActivateAsync()方法は、プランのIDを取り、プラン定義モデルを必要としません。

オートメーションプランの削除

プランを削除するには、マネージャーでDelete() メソッドを使用します。個々のカルチャを定義から削除することはできず、定義全体のみを削除します。メソッド呼び出しに提供されるカルチャは、null (既定値) またはCultureInfo.InvariantCultureである必要があります。

manager.Delete(planId);

オートメーションプランの取得

1つのプランは、マネージャーの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<IAutomationPlanDefinition>> plans = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IAutomationPlanDefinition, string>());

// Get page 2
ResultSet<DefinitionResult<IAutomationPlanDefinition>> page2Plans = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IAutomationPlanDefinition, string>(pageNumber: 2));

// Include inactive versions
ResultSet<DefinitionResult<IAutomationPlanDefinition>> page1AllPlans = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IAutomationPlanDefinition, string>(), true);

結果にアクセスするには、結果のDataPageプロパティを使用します。

IAutomationPlanDefinition plan = page1AllPlans.DataPage.ElementAt(0);

この結果には、定義の総数と現在のページ・インデックスおよびページ・サイズを公開するプロパティも含まれます。

long totalDefinitionCount = page1AllPlans.Total;
int pageNumber = page1AllPlans.PageNumber;
int pageSize = page1AllPlans.Count;
この記事を改善するための提案がある場合は、 お知らせください!