SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
EC-CUBE東京ユーザグループ勉強会
2019/02/07
chihiro-adachi (足立 智広)
株式会社イーシーキューブ
- @chihiro-adachi
- EC-CUBEエバンジェリスト
アジェンダ
● 導入
○ 今日のゴール
○ PurchaseFlowとは
● カスタマイズ例(デモ)
● PurchaseFlowの仕組み
● カスタマイズ例の解説
● まとめ
今日のゴール
● PurchaseFlowの仕組みがわかる
● Processorのカスタマイズができるようになる
PurchaseFlowとは
● 受注の集計処理や整合性チェック・受注明細の操作を拡
張できる仕組み
● たとえば...
○ 値引きの計算を行う
○ 送料計算を行う
○ 合計金額を集計する
○ 在庫切れ商品のチェックを行う
PurchaseFlowとは
● 集計処理や、在庫チェックなどのバリデーションは、受注に関わる共通したロ
ジック
● 従来は、利用される画面で個別に実装されており、カスタマイズ時の影響が
読みづらい、再利用しにくいなどの課題があった
● 集計フローを制御するPurchaseFlowと、各処理を行うProcessorに分離し、ロ
ジックを差し替えたり、新たなバリデーションを追加したりなど拡張できるよう
に対応
https://github.com/EC-CUBE/ec-cube/pull/2424
カスタマイズ例(デモ)
カスタマイズ例(デモ)
● 「10,000円以上の購入で500円の値引き」を作る
● 作成するファイルは一つだけ
○ app/Customize/Service/PurchaseFlow/Processor/NebikiProcessor.
php
● ソースコード
○ https://github.com/chihiro-adachi/ec-cube/tree/demo-tokyo
○ https://github.com/chihiro-adachi/ec-cube/compare/ad03d2d0078f8
347c0a8fae9acc1ced74bf6e967...demo-tokyo
PurchaseFlowの仕組み
PurchaseFlowとProcessor
● PurchaseFlow
○ 明細処理や集計処理の全体のフローを制御する
Processorを順次実行していく
● Processor
○ 受注や明細に対するバリデーションや操作を行う
○ たとえば
■ 値引き明細を追加する
■ 販売制限数のチェックを行う
○ 実行タイミングはアノテーションや実装するインター
フェースで指定する(後述)
PurchaseFlowの流れ
①受注明細のバリデーション
②受注のバリデーション
金額集計
③受注の操作
④値引き明細の操作
⑤金額確定後の操作・バリデー
ション
金額集計
金額集計
金額集計
※PurchaseFlow::validate()の処理
金額集計
2系・3系の購入処理の流れ
https://github.com/EC-CUBE/ec-cube/pull/2424
PurchaseFlowの流れ
概要 具体例(一部抜粋) 実装するインターフェース
明細のバリデーション 商品価格の変更チェック
商品の公開ステータスチェック
ItemValidator
受注のバリデーション 在庫チェック
販売制限数のチェック
ItemHolderValidator
受注の操作 注文番号の払い出し
送料の明細の追加
送料無料条件の適用
支払い手数料の明細の追加
ItemHolderPreprocessor
値引き明細の操作 ポイント値引明細の追加 DiscountProcessor
金額確定後の操作・バリデーション 合計金額のマイナスチェック ItemHolderPostValidator
3種類のフロー
● CartFlow
○ カート画面、カートブロックで実行される
● ShoppingFlow
○ 購入確認画面、完了画面で実行される
● OrderFlow
○ 管理画面の受注登録画面で実行される
カスタマイズ例の解説
(ソースコード見ながら)
まとめ
覚えるのは3つだけ
● PurchaseFlowは集計や明細処理のフロー全体を制御し、
Processorを実行していく
● Processorはバリデーションや明細の操作をする
● Processorをどのタイミングで実行するかは、アノテーショ
ンや実装するインターフェースで指定
Thanks
#eccube

Contenu connexe

Tendances

ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところY Watanabe
 
初めての Spanner 移行
初めての Spanner 移行初めての Spanner 移行
初めての Spanner 移行Igarashi Toru
 
BigQueryの課金、節約しませんか
BigQueryの課金、節約しませんかBigQueryの課金、節約しませんか
BigQueryの課金、節約しませんかRyuji Tamagawa
 
地理分散DBについて
地理分散DBについて地理分散DBについて
地理分散DBについてKumazaki Hiroki
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウトMasahiko Sawada
 
トランザクション入門
トランザクション入門 トランザクション入門
トランザクション入門 Kumazaki Hiroki
 
Spring CloudとZipkinを利用した分散トレーシング
Spring CloudとZipkinを利用した分散トレーシングSpring CloudとZipkinを利用した分散トレーシング
Spring CloudとZipkinを利用した分散トレーシングRakuten Group, Inc.
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advanceDaeMyung Kang
 
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送Google Cloud Platform - Japan
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化Kumazaki Hiroki
 
日本語:Mongo dbに於けるシャーディングについて
日本語:Mongo dbに於けるシャーディングについて日本語:Mongo dbに於けるシャーディングについて
日本語:Mongo dbに於けるシャーディングについてippei_suzuki
 
Aws Batchを用いたサーバレスな競馬スクレイピング環境.pptx
Aws Batchを用いたサーバレスな競馬スクレイピング環境.pptxAws Batchを用いたサーバレスな競馬スクレイピング環境.pptx
Aws Batchを用いたサーバレスな競馬スクレイピング環境.pptxShichijoYuhi
 
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかAWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかShun Fukazawa
 
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...Google Cloud Platform - Japan
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)NTT DATA Technology & Innovation
 
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -Yahoo!デベロッパーネットワーク
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 

Tendances (20)

ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 
初めての Spanner 移行
初めての Spanner 移行初めての Spanner 移行
初めての Spanner 移行
 
BigQueryの課金、節約しませんか
BigQueryの課金、節約しませんかBigQueryの課金、節約しませんか
BigQueryの課金、節約しませんか
 
地理分散DBについて
地理分散DBについて地理分散DBについて
地理分散DBについて
 
レガシーコードに向き合ってみた話
レガシーコードに向き合ってみた話レガシーコードに向き合ってみた話
レガシーコードに向き合ってみた話
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
トランザクション入門
トランザクション入門 トランザクション入門
トランザクション入門
 
Spring CloudとZipkinを利用した分散トレーシング
Spring CloudとZipkinを利用した分散トレーシングSpring CloudとZipkinを利用した分散トレーシング
Spring CloudとZipkinを利用した分散トレーシング
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
 
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
日本語:Mongo dbに於けるシャーディングについて
日本語:Mongo dbに於けるシャーディングについて日本語:Mongo dbに於けるシャーディングについて
日本語:Mongo dbに於けるシャーディングについて
 
Aws Batchを用いたサーバレスな競馬スクレイピング環境.pptx
Aws Batchを用いたサーバレスな競馬スクレイピング環境.pptxAws Batchを用いたサーバレスな競馬スクレイピング環境.pptx
Aws Batchを用いたサーバレスな競馬スクレイピング環境.pptx
 
Yahoo! JAPANにおけるApache Cassandraへの取り組み
Yahoo! JAPANにおけるApache Cassandraへの取り組みYahoo! JAPANにおけるApache Cassandraへの取り組み
Yahoo! JAPANにおけるApache Cassandraへの取り組み
 
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかAWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすか
 
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 

Similaire à 2019/2/7 EC-CUBE東京UG勉強会-PurchaseFlowの使い方-

Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理You&I
 
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」VirtualTech Japan Inc.
 
JPiere 伝票の基礎知識
JPiere 伝票の基礎知識JPiere 伝票の基礎知識
JPiere 伝票の基礎知識Hideaki Hagiwara
 
kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事Cybozu, Inc.
 
ログにまつわるエトセトラ
ログにまつわるエトセトラログにまつわるエトセトラ
ログにまつわるエトセトラ菊池 佑太
 
SubversionとSugarsync
SubversionとSugarsyncSubversionとSugarsync
SubversionとSugarsyncHidenori Goto
 
Gui自動テストツール基本
Gui自動テストツール基本Gui自動テストツール基本
Gui自動テストツール基本Tsuyoshi Yumoto
 
プロジェクトマネジメント入門以前 Web
プロジェクトマネジメント入門以前 Webプロジェクトマネジメント入門以前 Web
プロジェクトマネジメント入門以前 Webminamo
 
GC_Naiseika_Day_q3_0706_Keynote.pdf
GC_Naiseika_Day_q3_0706_Keynote.pdfGC_Naiseika_Day_q3_0706_Keynote.pdf
GC_Naiseika_Day_q3_0706_Keynote.pdfssuser41f27b
 

Similaire à 2019/2/7 EC-CUBE東京UG勉強会-PurchaseFlowの使い方- (10)

Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理
 
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」
 
JPiere 伝票の基礎知識
JPiere 伝票の基礎知識JPiere 伝票の基礎知識
JPiere 伝票の基礎知識
 
kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事
 
ログにまつわるエトセトラ
ログにまつわるエトセトラログにまつわるエトセトラ
ログにまつわるエトセトラ
 
SubversionとSugarsync
SubversionとSugarsyncSubversionとSugarsync
SubversionとSugarsync
 
Gui自動テストツール基本
Gui自動テストツール基本Gui自動テストツール基本
Gui自動テストツール基本
 
プロジェクトマネジメント入門以前 Web
プロジェクトマネジメント入門以前 Webプロジェクトマネジメント入門以前 Web
プロジェクトマネジメント入門以前 Web
 
TopSE.20121119
TopSE.20121119TopSE.20121119
TopSE.20121119
 
GC_Naiseika_Day_q3_0706_Keynote.pdf
GC_Naiseika_Day_q3_0706_Keynote.pdfGC_Naiseika_Day_q3_0706_Keynote.pdf
GC_Naiseika_Day_q3_0706_Keynote.pdf
 

2019/2/7 EC-CUBE東京UG勉強会-PurchaseFlowの使い方-