イベント

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

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

イベント定義は、Sitecore.Marketing.Definitions.Events.EventDefinitionManagerクラスによって管理されます。

EventDefinitionManagerへのアクセス

EventDefinitionManagerは、Sitecore DIコンテナから入手できます。クラスのコンストラクタにDefinitionManagerBase<IEventDefinition, EventDefinitionRecord> 型のパラメータを含め、コンテナからクラスをプルして、コンテナがインスタンスを解決できるようにすることをお勧めします。

public MyClass(DefinitionManagerBase<IEventDefinition, EventDefinitionRecord> eventDefinitionManager)
{
        ...
}

コンテナを使用してクラスを構築できない場合は、サービス ロケータを使用できます。このクラスは、Sitecore DIコンテナーでも使用できます。

using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions;

ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IEventDefinition>();

イベントの定義

イベントは、Sitecore.Marketing.Definitions.Events.Model名前空間の型を使用して定義されます。

Guid eventId = Guid.NewGuid(); // Event ID
CultureInfo eventCulture = new CultureInfo("es"); // Event culture
string eventName = "Newly created event"; // Event name
DateTime creationDate = DateTime.UtcNow; // Event creation date
string createdBy = "sitecore\admin"; // Event creator

EventDefinition event = new EventDefinition(eventId, "Event item name", eventCulture, eventName, creationDate, createdBy);

event.ShowInXfileAsLatestEvent = true;
event.ShowInXfileEventsList = true;
event.EngagementValuePoints = 20;

    event.IsLiveEvent = false;

ライブイベント

IsLiveEventプロパティは基本EventDefinitionクラスの一部であり、イベントをセッション終了時ではなくすぐに処理する必要があるかどうかを判断するためにMarketing Automationによって使用されます。ライブイベント処理の詳細については、こちらをご覧ください。

イベントの保存

イベントを定義したら、定義マネージャーでSaveAsync() メソッドを呼び出してイベントを保存できます。

Guid eventId = Guid.NewGuid(); // Event ID
CultureInfo eventCulture = new CultureInfo("es"); // Event culture
string eventName = "Download Brochure"; // Event name
DateTime creationDate = DateTime.UtcNow; // Event creation date
string createdBy = "sitecore\admin"; // Event creator

EventDefinition event = new EventDefinition(eventId, "Event item name", eventCulture, eventName, creationDate, createdBy);

    EventDefinitionManager manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IEventDefinition>();
    manager.SaveAsync(event);

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

manager.SaveAsync(event, true);

イベントのアクティブ化

イベントは、管理の外部で使用できるようになる前にアクティブ化する必要があります。イベントは、SaveAsync()メソッドのactivate (2番目) パラメーターにtrueを渡すことで、イベントを保存するときにアクティブ化できます。

manager.SaveAsync(event, true);

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

manager.ActivateAsync(eventId);

ActivateAsync()メソッドはイベントのIDを受け取り、イベント定義モデルは必要ありません。

イベントの削除

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

manager.Delete(eventId);

イベントの取得

1つのイベントは、マネージャーのGet() メソッドのいずれかを使用してID取得できます。

Guid eventId = Guid.NewGuid(); // Ensure this is the ID of an existing event

// Get by ID and culture. Will get the latest active version
IEventDefinition event = manager.Get(eventId, new CultureInfo("da"));

// Get by ID and culture. Will get the latest version, including if the version is inactive
IEventDefinition event = manager.Get(eventId, new CultureInfo("da"), true);

エイリアスによるイベントの取得

また、エイリアスでイベントを取得することもできます。

CultureInfo eventCulture = new CultureInfo("fr-fr");
var eventDefinitionByAlias = definitionManager.GetByAlias("My alias", eventCulture);

既存のイベントを更新する

既存のイベント定義を更新するには、IDでイベントを取得し、イベントを編集します

Guid eventId = Guid.NewGuid(); // Ensure this is the ID of an existing event

// Get by ID and culture. Will get the latest active version
IEventDefinition event = manager.Get(eventId, new CultureInfo("da"));

// Make updates to event
event.Name = "Updated name";

// Save to update
manager.SaveAsync(event);

すべてのイベントの取得

GetAll() メソッドを使用して、マネージャーからすべてのイベントを取得できます。定義が多数ある可能性があるため、このメソッドはページングをサポートします。戻り値は1ページの結果です。

    // Get All with defaults which will be first page, page size 20, latest active versions only
    ResultSet<DefinitionResult<IEventDefinition>> events = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IEventDefinition, string>());

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

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

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

IEventDefinition event = page1Events.DataPage.ElementAt(0);

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

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