sap-commerce-cloud について
SAP Commerce Cloud の拡張、API、ストアフロント、デプロイを扱うエンジニア向けの開発スキルです。コマース開発のワークフローに沿って、ガイド、テンプレート、スクリプトを整理しています。
主な機能
- 01拡張機能とタイプシステムの開発
- 02サービスレイヤーとデータ管理の指針
- 03OCC API のカスタマイズ
- 04Composable Storefront の統合
- 05CCv2 デプロイと SAP BTP 統合
- 06テストパターンとユーティリティスクリプト
活用シーン
- 01カスタム Commerce 拡張機能の作成
- 02データのインポートとアイテムの検索
- 03OCC エンドポイントのカスタマイズ
- 04Composable Storefront または CCv2 のデプロイ準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ emenowicz/ sap-commerce-skill --skill sap-commerce-cloudインストール後、Claude Code で/sap-commerce-cloudを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/business-process/custom-process.xmlCustomProcessAction.javaprocess-setup.impexprocess-spring.xmlassets/checkout-customization/checkout-items.xmlcheckout-spring.xmlCustomCheckoutFacade.javaCustomCheckoutStepController.javaCustomStepForm.javacustomStepPage.jspDefaultCustomCheckoutFacade.javaassets/composable-storefront/custom-banner.component.tscustom-feature.module.tsspartacus-configuration.module.tsassets/cronjob/cronjob-items.xmlcronjob-setup.impexcronjob-spring.xmlCustomJobPerformable.javaassets/extension-structure/customextension/extensioninfo.xmlassets/extension-structure/customextension/resources/customextension-items.xmlcustomextension-spring.xmlassets/extension-structure/customextension/resources/localization/customextension-locales_en.propertiesassets/extension-structure/customextension/src/com/example/custom/constants/CustomextensionConstants.javaassets/extension-structure/customextension/src/com/example/custom/setup/CustomextensionSystemSetup.javaassets/extension-structure/customextension/web/webroot/WEB-INF/web.xmlassets/flexiblesearch-queries/complex-joins.fxsorder-queries.fxsproduct-queries.fxsuser-queries.fxsassets/impex-scripts/b2b-organization.impex詳細
SAP Commerce の開発
概要
SAP Commerce Cloud(旧称 Hybris)は、Java と Spring を基盤とするエンタープライズ向け e コマースプラットフォームです。このスキルでは、拡張機能の開発、型システムのモデル化、サービスレイヤーの実装、データ管理、API のカスタマイズ、アクセラレーターパターン、Composable Storefront(Spartacus/Angular)との統合、CCv2 クラウドへのデプロイ、SAP BTP/Kyma との統合、Cloud(CCv2)とオンプレミス両方のデプロイメント向けのテストパターンについて解説します。
プラットフォームのベースライン: 例では SAP Commerce Cloud 2211-jdk21.1 以降を対象とし、JDK 21、Spring 6、Jakarta API、OpenAPI 3 を使用します。CCv2 では
commerceSuiteVersion: "2211-jdk21"を使用すると、この系列の最新アップデートに準拠できます。jdk21-migration.md を参照してください。
最新のストアフロントに関する注意: JSP ベースの Accelerator ストアフロント(Spring Web Flow、JSP/JSTL)は従来の方式です。推奨される最新のストアフロントは Composable Storefront(旧称 Spartacus)です。これは、バックエンドと OCC REST API のみで通信する Angular/TypeScript のシングルページアプリケーションです。新しいプロジェクトでは Composable Storefront を使用してください。composable-storefront.md を参照してください。
コアアーキテクチャ
型システム
items.xml を使用したデータモデリングによって、アイテムタイプ、属性、リレーション、列挙型を定義します。ビルド時に型が Java クラスにコンパイルされます。構文とパターンについては、type-system.md を参照してください。
拡張機能
機能を拡張機能に配置するモジュール型アーキテクチャです。各拡張機能には、メタデータを定義する extensioninfo.xml、型を定義する items.xml、Bean を定義する *-spring.xml があります。extension-development.md を参照してください。
サービスレイヤー
4 層アーキテクチャです:ファサード(コントローラー向け API)→ サービス(ビジネスロジック)→ DAO(データアクセス)→ モデル(型から生成)。service-layer-architecture.md を参照してください。
データ管理
ImpEx:データのインポート/エクスポートに使用するスクリプト言語です。impex-guide.md を参照してください。 FlexibleSearch:アイテム向けの SQL ライクなクエリ言語です。flexiblesearch-reference.md を参照してください。
OCC API
コマース機能を公開する RESTful Web サービスです。コントローラーは DTO 変換に DataMapper を使用します。occ-api-development.md を参照してください。
アクセラレーター(従来型 JSP ストアフロント)
構築済みの JSP/Spring MVC ストアフロントです。B2C(小売)と B2B(承認ワークフローを備えたエンタープライズ向け)があります。従来の方式であり、新しいプロジェクトでは Composable Storefront またはヘッドレス方式を使用してください。accelerator-customization.md を参照してください。
Composable Storefront(Spartacus)
JSP アクセラレーターに代わる Angular/TypeScript の SPA です。OCC API のみで通信します。B2C/B2B 向けの PWA、SSR、機能ライブラリーをサポートしています。composable-storefront.md を参照してください。
ヘッドレスコマース
SAP Commerce Cloud をヘッドレスバックエンドとして使用し、OCC API をあらゆるフロントエンド(React、Vue、モバイルアプリなど)から利用できます。バックエンドは、商品、カタログ、カート、注文、ユーザーのデータを REST 経由で提供します。Composable Storefront は SAP が提供するリファレンス用のヘッドレスフロントエンドですが、カスタムフロントエンドもサポートされています。
CCv2 クラウドへのデプロイ
SAP Commerce Cloud v2(CCv2)はマネージドクラウドサービスです。拡張機能、アスペクト(storefront/api/backoffice)、プロパティを定義する manifest.json に基づいてデプロイします。ccv2-deployment.md を参照してください。
SAP BTP との統合
API Registry モジュールと SAP BTP Extensions Integration Module(Kyma ランタイム)を介して SAP Business Technology Platform と統合します。マイクロサービス/サーバーレス関数で Commerce のイベントに対応できます。sap-btp-integration.md を参照してください。
CronJobs とタスクエンジン
スケジュール実行および非同期のジョブ実行です。AbstractJobPerformable の実装を定義し、ImpEx で ServicelayerJob、CronJob、Trigger を設定します。cronjob-task-engine.md を参照してください。
ビジネスプロセス
注文処理、返品、承認、カスタムフロー向けのステートフルなワークフローです。アクション Bean(AbstractSimpleDecisionAction、AbstractAction)、待機状態、イベントトリガーを含む XML プロセス定義を使用します。business-process.md を参照してください。
Solr 検索
Apache Solr を利用した商品検索とファセットナビゲーションです。インデックス対象タイプ、プロパティ、値プロバイダー、ブーストルールを設定します。solr-search-configuration.md を参照してください。
プロモーションとルールエンジン
条件とアクションを使用する、Drools ベースのプロモーションルールです。注文、商品、顧客向けのプロモーション、クーポン、カスタムアクションに対応しています。promotions-rule-engine.md を参照してください。
キャッシュ
プラットフォームのリージョンキャッシュ(エンティティ、クエリ、型システム)、Spring の @Cacheable、クラスター対応の無効化による多層キャッシュです。caching-guide.md を参照してください。
Backoffice
cockpitng による管理 UI のカスタマイズです。ウィジェット設定、カスタムエディター、検索/リストビュー、ウィザード、ディープリンクを扱います。backoffice-configuration.md を参照してください。
一般的なワークフロー
カスタム拡張機能の作成
ant extgenで構造を生成するか、assets/extension-structure/のテンプレートを使用します- 依存関係を指定して
extensioninfo.xmlを設定します items.xmlで型を定義します*-spring.xmlで Bean を設定しますlocalextensions.xmlに追加します- ビルドします:
ant clean all
参考資料:extension-development.md | テンプレート:assets/extension-structure/
カスタムアイテムタイプの定義
- 拡張機能内の
*-items.xmlを作成または変更します - 属性とリレーションを含む itemtype を定義します
- ビルドしてモデルクラスを生成します
- サービス/DAO で使用します
参考資料:type-system.md | テンプレート:assets/item-type-definition/
サービスレイヤーの実装
- データ転送用の DTO クラスを作成します
- FlexibleSearch を使用して DAO のインターフェースと実装を作成します
- ビジネスロジックを含むサービスのインターフェースと実装を作成します
- 外部 API 用のファサードのインターフェースと実装を作成します
*-spring.xmlで Bean を設定します
参考資料:service-layer-architecture.md | テンプレート:assets/service-layer/
ImpEx によるデータのインポート
- ヘッダーとデータ行を含む
.impexファイルを作成します - 作成/変更操作には INSERT_UPDATE を使用します
- 再利用可能な値にはマクロを定義します
- HAC または
ant importImpexでインポートします
参考資料:impex-guide.md | テンプレート:assets/impex-scripts/
FlexibleSearch によるクエリ
SELECT {pk} FROM {Product} WHERE {code} = ?code
SELECT {p.pk} FROM {Product AS p JOIN Category AS c ON {p.supercategories} = {c.pk}} WHERE {c.code} = ?category
参考資料:flexiblesearch-reference.md | 例:assets/flexiblesearch-queries/
OCC API のカスタマイズ
@Controllerと@RequestMappingを使用してコントローラーを作成します- レスポンスデータ用の WsDTO を作成します
- モデルから DTO への変換用のポピュレーターを作成します
*-web-spring.xmlに登録します
参考資料:occ-api-development.md | テンプレート:assets/occ-customization/
Accelerator チェックアウトの拡張
CheckoutStepを実装するカスタムチェックアウトステップを作成します- チェックアウトフロー XML で設定します
- ステップ UI 用の JSP を作成します
*-spring.xmlに Bean を登録します
参考資料:accelerator-customization.md | テンプレート:assets/checkout-customization/
スケジュール済みジョブ(CronJob)を作成する
perform()メソッドを実装したAbstractJobPerformable<CronJobModel>を実装しますparent="abstractJobPerformable"を指定して Spring Bean を登録します- ImpEx で
ServicelayerJob、CronJob、Triggerを作成します - HAC > Platform > CronJobs でテストします
参考:cronjob-task-engine.md | テンプレート:assets/cronjob/
ビジネスプロセスを定義する
resources/processes/にプロセス定義 XML を作成しますAbstractSimpleDecisionActionを継承するアクション Bean を実装しますparent="abstractAction"を指定して Spring にアクション Bean を登録しますProcessDefinitionResourceSpring Bean を使ってプロセス定義を登録しますBusinessProcessService.createProcess()とstartProcess()を使ってプロセスを開始します
参考:business-process.md | テンプレート:assets/business-process/
Solr の商品検索を設定する
- サーバー、言語、通貨、カタログバージョンを指定して
SolrFacetSearchConfigを設定します - 商品用の
SolrIndexedTypeを定義します SolrIndexedPropertyエントリー(検索可能、ファセット、ソート可能)を設定します- インデクサー CronJob(毎晩の全件実行、5 分ごとの差分実行)を設定します
- HAC > Platform > Solr で検索をテストします
参考:solr-search-configuration.md | テンプレート:assets/solr-configuration/
プロモーションを設定する
- ストア用の
PromotionGroupを作成します - 条件とアクションを含む
PromotionSourceRuleを定義します - 必要に応じてクーポン(
SingleCodeCoupon/MultiCodeCoupon)を設定します - ルールを公開して有効化します
- Backoffice > Marketing > Promotion Rules でテストします
参考:promotions-rule-engine.md | テンプレート:assets/promotions/
Composable Storefront(Spartacus)を統合する
- Commerce バックエンドで OCC エンドポイントと CORS を設定します
- SAP の互換性マトリックスから Composable Storefront のバージョンを選択します
- Angular アプリをスキャフォールドします:
ng add @spartacus/schematics@<COMPATIBLE_VERSION> --base-url <OCC_URL> --base-site=<SITE_ID> --ssr provideConfigを使ってSpartacusConfigurationModuleを設定しますprovideConfigのcmsComponentsマッピングを使って CMS コンポーネントをカスタマイズします- 機能モジュールでカスタムサービスクラスを提供してサービスをオーバーライドします
参考:composable-storefront.md | テンプレート:assets/composable-storefront/
CCv2 にデプロイする
- リポジトリのルートにある
manifest.jsonでcommerceSuiteVersion、extensions、aspectsを設定します - CCv2 Cloud Portal またはプロパティファイルで環境プロパティを設定します
- 接続済みのリポジトリにプッシュしてビルドを開始します
- 環境間でビルドを昇格します(dev → staging → production)
SAP BTP / Kyma を統合する
- API Registry モジュールを設定して Commerce の API とイベントを公開します
- SAP BTP Extensions Integration Module を介して Kyma ランタイムに接続します
- Commerce イベントに応答するマイクロサービス/ラムダを実装します
- Webhook ベースのアウトバウンド通信に API Registry を使用します
カスタム拡張機能のテストを作成する
- 単体テストには
@UnitTest、統合テストには@IntegrationTestを付けます - 単体テストでは Mockito モックを使用し、Spring コンテキストは使わず、
testsrc/に配置します - 統合テストでは
ServicelayerTestまたはServicelayerTransactionalTestを継承します - OCC API 統合テストでは、稼働中の OCC エンドポイントに対して REST Assured または MockMvc を使用します
importCsv("/myext/test/testdata.impex", "utf-8")でテストデータを読み込みます- ローカルで実行します:
ant unittests -Dtestclasses.extensions=myextension "tests"の下にあるmanifest.jsonで CCv2 のテスト実行を設定します
クイックリファレンス
| タスク | リファレンス | アセット | スクリプト |
|---|---|---|---|
| 拡張機能のセットアップ | extension-development.md | assets/extension-structure/ | scripts/generate-extension.sh |
| 型定義 | type-system.md | assets/item-type-definition/ | - |
| サービスレイヤー | service-layer-architecture.md | assets/service-layer/ | - |
| データインポート | impex-guide.md | assets/impex-scripts/ | scripts/validate-impex.sh |
| クエリ | flexiblesearch-reference.md | assets/flexiblesearch-queries/ | scripts/query-items.sh |
| API のカスタマイズ | occ-api-development.md | assets/occ-customization/ | - |
| チェックアウト/ストアフロント(レガシー) | accelerator-customization.md | assets/checkout-customization/ | - |
| Composable Storefront | composable-storefront.md | assets/composable-storefront/ | - |
| CCv2 のデプロイ | ccv2-deployment.md | - | - |
| SAP BTP/Kyma | sap-btp-integration.md | - | - |
| JDK 21 への移行 | jdk21-migration.md | - | - |
| テスト | testing-guide.md | - | - |
| Spring の設定 | spring-configuration.md | - | - |
| データパターン | data-modeling-patterns.md | - | - |
| トラブルシューティング | troubleshooting-guide.md | - | - |
| CronJobs | cronjob-task-engine.md | assets/cronjob/ | - |
| ビジネスプロセス | business-process.md | assets/business-process/ | - |
| Solr 検索 | solr-search-configuration.md | assets/solr-configuration/ | - |
| プロモーション | promotions-rule-engine.md | assets/promotions/ | - |
| キャッシュ | caching-guide.md | - | - |
| Backoffice | backoffice-configuration.md | - | - |
リソース
scripts/
一般的なタスクに使用するユーティリティスクリプト:
generate-extension.sh- 新しい拡張機能の構成をひな形から作成しますvalidate-impex.sh- インポート前に ImpEx の構文を検証しますquery-items.sh- HAC 経由で FlexibleSearch クエリを実行します
references/
各トピックの詳細ガイドです。詳しい情報が必要な場合に読み込んでください。
assets/
分野ごとに整理された、特定用途向けのリファレンステンプレートです。タスクに関連するファイルのみをコピーし、com.example パッケージを置き換え、本番環境で使用する前にプロジェクト固有のビジネスルールに合わせて調整してください。