---
title: "カスタムイベントモデルを作成する"
slug: "create-a-custom-event-model"
abstract: "定義項目やカスタムイベントモデルの作成方法、モデル内のカスタムファセットの定義方法、そしてカスタムイベントモデルの使い方についても教えてください。"
---
# カスタムイベントモデルを作成する

このトピックでは、EnterStoreという名前のカスタムイベントモデルを作成する方法を説明します。このイベントモデルは、買い物客が端末からサインアウトして自分の商品をスキャンできる店舗で使用可能であり、以下の要件を前提としています。

-   EnterStoreモデルは複数の定義項目で使用できるため、固定された定義項目を持ちません。
-   EnterStoreモデルは目標や結果ではなく、したがって基本Sitecore.XConnect.Eventクラスを継承します。

## 定義項目を作成する

以下の例は、複数のイベント定義項目を作成する方法を示しています。連絡先がさまざまな店舗に入る様子を表します。

1.  Sitecoreコンテンツエディターを開きます。
    
2.  */sitecore/system/Marketing Control Panel/Events*に行って。
    
    > !注ウェブ固有のページイベントを作成する場合は、一貫性のために定義項目を */sitecore/system/Settings/Analytics/Page Events*の下に作成してください。
    
3.  イベントアイテムを右クリックし、イベントを挿入>、アイテム名を入力してください。「Express Storeに入る」という名前のイベントと、スーパーストアの入り口というイベントを1つ作成します。
    
    ![Create a new event definition item](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/93/sitecore-experience-platform/images/custom-events1.png)
    
4.  新しく作成した定義を選択し、デプロイ>レビュータブをクリックします。これにより定義がウェブデータベースに公開され、Reference Data Serviceデータベースに展開されます。
    
    ![Publish a new event definition](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/93/sitecore-experience-platform/images/deploy-event1.png)
    

## カスタムイベントモデルを作成する

新しいクラスを作成してEnterStore。クラスにはTookBasketという単一のプロパティがあり、連絡先が店舗に入る際にバスケットを拾ったかどうかを示します。

using Sitecore.Events;
using System;

namespace Documentation
{
 public class EnterStore : Sitecore.XConnect.Event
 {
 public EnterStore(Guid definitionID, DateTime dateTime) : base(definitionID, dateTime) { }

 public bool TookBasket { get; set; }
 }
}

## モデル内でカスタムファセットを定義します

コレクションモデルで新しいイベントを .DefineEventTypeメソッドで定義します。以下の例では、イベントモデルがSampleModelというモデルに追加されています。Sitecoreコンテキストでモデルを使用する場合、モデルクラスは [クライアント設定ファイルに登録](https://doc.sitecore.com/xp/ja/developers/93/sitecore-experience-platform/create-a-custom-model.html "Create a custom model")されている必要があります。

using Sitecore.XConnect;
using Sitecore.XConnect.Schema;

namespace Documentation
{
 public class SampleModel
 {
 public static XdbModel Model { get; } = SampleModel.BuildModel();

 private static XdbModel BuildModel()
 {
 XdbModelBuilder modelBuilder = new XdbModelBuilder("SampleModel", new XdbModelVersion(0, 1));

 modelBuilder.ReferenceModel(Sitecore.XConnect.Collection.Model.CollectionModel.Model);
 modelBuilder.DefineEventType<EnterStore>(false);

 return modelBuilder.BuildModel();
 }
 }
}

> !警告イベントモデルを登録しなければ、使用できません。「このインスタンスのタイプはスキーマ内のどのタイプとも対応しません」といったエラーが発生します。

## カスタムイベントモデルを使います

xConnect Client APIを使って [、イベントをインタラクションに追加](https://doc.sitecore.com/xp/ja/developers/93/sitecore-experience-platform/add-interaction-events.html "Add interaction events")してください。以下の例は、2つの異なる定義アイテムIDでイベントモデルをインスタンス化する方法を示しています:

// Event definition ID
Guid enterExpressStore = Guid.Parse("{2493F99D-E85F-4869-9704-C1A5C2944778}");

var enterExpressStoreEvent = new EnterStore(enterExpressStore, DateTime.UtcNow)
{
 TookBasket = true
};

// Event definition ID
Guid enterSuperStore = Guid.Parse("{CD7155D5-2DA5-46AB-8BE9-33A4597735A1}");

var enterSuperStoreEvent = new EnterStore(enterSuperStore, DateTime.UtcNow)
{
 TookBasket = false
};

## トラッカーでカスタムイベントモデルを使います

トラッカー内でカスタムイベントモデルを使用するには、イベント変換パイプラインプロセッサを作成する必要があります。詳細については、「 [カスタムイベントのトリガー」](https://doc.sitecore.com/xp/ja/developers/93/sitecore-experience-platform/triggering-custom-events.html "Triggering custom events")をご覧ください。