---
title: "Commerce Connect抽象サービス層"
slug: "commerce-connect-abstract-service-layers"
abstract: "Commerce Connectのコアフレームワークに含まれる抽象的なサービス層の概要。"
---
# Commerce Connect抽象サービス層

Commerce Connectのコアフレームワークには、さまざまな外部コマースシステムに対応した汎用的で拡張可能な抽象サービス層がいくつか含まれています。

Commerce Connectのサービス層:

-   ウェブショップのソリューションとバックエンドのECシステムの間で重要なeコマース情報を携帯しましょう。
-   外部商取引システムのビジネスロジックをカプセル化し、抽象化します。
-   訪問者の行動を追跡しフォローアップします。新しい目標、ページイベント、マーケティング自動化キャンペーン、レポートを提供します。

Commerce Connectを使ってeコマースソリューションを構築する際は、外部コマースシステム内のAPIに直接アクセスするのではなく、Commerce Connectのサービス層にあるAPIを使うべきです。その理由は以下の通りです:

-   顧客エンゲージメントはサービス層に組み込まれています。サービス層のAPIが使われなければ、パーソナライズ、レポーティング、マーケティング自動化のための組み込みの商取引シナリオがトリガーまたは展開されません。
-   一部の外部コマースシステムは、Commerce Connectがサポートするすべてのシナリオをサポートしていません。したがって、Commerce Connectに組み込まれたフォールバック機能を活用するために、Commerce Connect APIを利用するべきです。
-   APIをカスタマイズ・拡張して一つの外部コマースシステムに独自の機能を対応させても、その機能は必ずしも別のコマースシステムでサポートされるわけではありません。標準のCommerce Connect APIを使うことで、最小限の労力で外部コマースシステムを置き換えることができます。
-   複数の外部システムをConnectパイプラインで統合する場合、各外部システムを個別に呼ぶのではなく、単一の入力ポイントとしてConnect APIを呼び出すだけで済みます。

> !注求める機能が存在しないか、Commerce Connectの範囲外の場合のみ、外部商取引システムのAPIを直接呼び出してください。

## イベント

サービス層はeコマースシナリオで発生するイベントを処理します。イベントはサービスメソッドと対応するSitecoreパイプラインで表現され、フロントエンドとバックエンドのイベントに分けられます。

以下は、ウェブサイト上のアクションによってトリガーされるフロントエンドイベントの例です。

-   顧客アカウントを作成する
-   ウィッシュリストの更新
-   ショッピングカートを更新する
-   注文をする

以下は、商取引システム内のアクションによってトリガーされるバックエンドイベントの例です:

-   製品情報の更新
-   注文状況の更新
-   商品価格の更新

## Commerce Connectサービス層パイプライン

Commerce ConnectにはSitecoreと連携するパイプラインプロセッサが含まれています。Commerce ConnectコネクターはCommerce Connectパイプラインを修正または上書きします。

### パイプラインの例

以下は、特定の外部商取引システムに合わせて商品をショッピングカートに追加し、修正されたパイプラインの例です:

<Sitecore.Commerce.Cart.AddProductToShoppingCart>
 <processor type="CommerceSystem.Cart.ValidateProduct" />
 <processor type="CommerceSystem.Cart.CheckInventory" />
 <processor type="CommerceSystem.Cart.PutHoldOnProduct" />
 <processor type="Sitecore.Commerce.Cart.RecordPageEvent" />
</Sitecore.Commerce.Cart.AddProductToShoppingCart>

このパイプラインでは:

-   太字のプロセッサはSitecore専用で、Commerce Connectがデフォルトパイプライン定義の一部として提供しています。開発者はプロセッサを修正または削除できますが、パイプラインを削除または名前変更してはなりません。
-   他のプロセッサはSitecoreと統合された外部コマースシステム専用です。これらは外部コマースシステムのコネクタを構成する部分であり、コネクタの一部である別の設定ファイルからConnectパイプラインに統合されます。

## 外部商取引システム向けのサービス層のカスタマイズ

各サービス層はAPI、各API呼び出しに対する1つ以上のパイプライン、そして拡張可能なドメインモデルで構成されています。

-   各サービスレイヤーにはカスタマイズ可能なデフォルトAPIがあります。各サービスレイヤーメソッドはRequestオブジェクトとResultオブジェクトを受け取り、どちらも外部商取引システムのニーズに応じてカスタマイズ可能です。デフォルトのRequestクラスを継承し、それを構成に置き換えることで拡張Requestオブジェクトを作成できます。同様に、デフォルトのResultクラスを継承し、それを構成に置き換えることで拡張Resultオブジェクトを作成できます。
    
-   各サービス層メソッドは、1つ以上のパイプラインを呼び出せるパイプラインを実行します。各パイプラインは、パイプライン内のプロセッサを注入、削除、または置き換えることでカスタマイズ可能です。
    
-   すべてのドメインモデルオブジェクトおよびネストされたドメインモデルオブジェクトは、カスタムプロパティで継承および拡張可能です。デフォルトクラスを継承し、設定で置き換えることで拡張ドメインモデルオブジェクトや拡張ネストドメインモデルオブジェクトを作成できます。
    
    すべてのサービスメソッドは、カスタマイズされたドメインモデルオブジェクトを使っても、既存の定義された署名を保持します。
    

## 実装の詳細

各サービス層には、ドメインモデル、パイプライン、ファクトリー、リポジトリ、サービス層API実装を構成するエンティティを定義する独自の設定ファイルが含まれています。

-   Sitecore Factoryはドメインモデルオブジェクトのインスタンス化に使われ、個々のエンティティのカスタマイズ、設定、インスタンス化が可能です。
-   リポジトリ設計パターンは、Sitecoreへのデータの読み書きを行うプロセッサで使われます。つまり、必要に応じてリポジトリを簡単に置き換えたりカスタマイズしたりできます。
-   Commerce Connectのデフォルトパイプライン構成では、外部コマースシステム用のプロセッサが期待される場所にプレースホルダープロセッサが配置されています。一部のサービス層では代わりにコメントが存在します。プレースホルダープロセッサは空でコードを実行しません。
-   外部コマースシステムコネクタは、コマースシステムとやり取りするプロセッサと、パイプライン内のプレースホルダープロセッサを置き換えるCommerce Connect設定ファイルをパッチする設定ファイルで構成されています。