SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
Omni Commerce:
From Buzzword
to Technology


Jürgen Albertsen
Enterprise Architect
hybris
Commerce is Everywhere
TV
Console
Web
POS
Mobile
Call Center
Social
Print
Digital Ads
Marketplace
Mobile Native
A Few Examples
TV Mobile
+ + =
Live stream, shop as you
watch
Mobile
+ =
Want this, alert me when
near shop
Product
Product
Checkout
Location
POS
+ =
Not available in store,
deliver to home
Product Checkout
We call it
Multi Channel
No, Omni Channel
No, Omni Commerce
Nice word but:
How to do it?
The solution:
Web Services
of course
The Problem:
hybris is pretty
old mature
Core Services
Core / Jalo
Over theYears We Stacked up Quite a Stack
Commerce Services
Commerce Façades
Accelerator (Web Storefront) OCC (Web Services)
Let’s Zoom In
Controller
Converter
Service
Façade
DTO
Model
Populator
A DTO
public class CartData implements Serializable {
!
private String code;
private boolean net;
private PriceData totalPrice;
//...
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
!
//...
}
A Descriptor for DTOs
<bean class="de.hybris.platform.commercefacades.order.CartData">
<property name="code" type="String"/>
<property name="net" type="boolean"/>
<property name="totalPrice"
type="de.hybris.platform.commercefacades.product.PriceData"/>
<!-- ... -->
</bean>
A Façade
public interface CartFacade
{
!
CartData getSessionCart();
!
CartData getMiniCart();
!
CartModificationData addToCart(String code,
long quantity)
throws CommerceCartModificationException;
!
// ...
!
}
A Controller for the Storefront
@Controller
public class AddToCartController extends AbstractController
{
@Resource(name = "cartFacade")
private CartFacade cartFacade;
!
@RequestMapping(value = "/cart/add", method = RequestMethod.POST)
public String addToCart(@RequestParam("productCodePost") String code,
Model model, @Valid AddToCartForm form, BindingResult bindingErrors)
{
// ...
CartModificationData cartModification = cartFacade.addToCart(code, qty);
if (cartModification.getQuantityAdded() == 0L)
{
model.addAttribute(ERROR_MSG_TYPE,
"basket.information.quantity.noItemsAdded." +
cartModification.getStatusCode());
}
else if (cartModification.getQuantityAdded() < qty)
{
model.addAttribute(ERROR_MSG_TYPE,
"basket.information.quantity.reducedNumberOfItemsAdded." +
cartModification.getStatusCode());
}
// ..
}
}
Spring MVC doesn’t
care if it’s HTML,
XML, JSON, 

or whatever
Another Controller — this Time for a Web Service
@Controller
public class CartController extends BaseController
{
@Resource(name = "cartFacade")
private CartFacade cartFacade;
!
@RequestMapping(value = "/entry", method = RequestMethod.POST)
@ResponseBody
public CartModificationData addToCart(@RequestParam(required = true) String code,
@RequestParam(required = false, defaultValue = "1") long qty)
throws CommerceCartModificationException
{
return cartFacade.addToCart(code, qty);
}
!
}
Marshal Response DTOs to XML/JSON
<!-- from springmvc-servlet.xml -->
!
<mvc:annotation-driven>
<mvc:message-converters register-defaults="false">
<bean parent="resolverXStreamJSONConverter"/>
<bean parent="resolverXStreamXmlConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
We expose 

commerce logic 

and data model 1:1
What Else?
REST-like
ETag
OAuth 2.0 & HTTPS
Template
Shipped as source
Questions?
Beer?

Más contenido relacionado

Similar a Occ tech for commerce

How To Choose The Best Marketplace Platform.pdf
How To Choose The Best Marketplace Platform.pdfHow To Choose The Best Marketplace Platform.pdf
How To Choose The Best Marketplace Platform.pdfStoreHippo
 
Benefits of VoIP
Benefits of VoIPBenefits of VoIP
Benefits of VoIPpascom
 
Ism ecompany ecommerce software comparison
Ism ecompany  ecommerce software comparisonIsm ecompany  ecommerce software comparison
Ism ecompany ecommerce software comparisonvalantic NL
 
How To Find The Best Multi Vendor Ecommerce Software.pdf
How To Find The Best Multi Vendor Ecommerce Software.pdfHow To Find The Best Multi Vendor Ecommerce Software.pdf
How To Find The Best Multi Vendor Ecommerce Software.pdfStoreHippo
 
Ip.Digital.Signage(Eng).102011
Ip.Digital.Signage(Eng).102011Ip.Digital.Signage(Eng).102011
Ip.Digital.Signage(Eng).102011Chanho Lee
 
2016.05 Liferay Webinar, Alistair Oildfield
2016.05 Liferay Webinar, Alistair Oildfield2016.05 Liferay Webinar, Alistair Oildfield
2016.05 Liferay Webinar, Alistair OildfieldEmeldi Group
 
Retail Pro POS v8, v9, Prism Ecommerce Integration
 Retail Pro POS v8, v9, Prism Ecommerce Integration Retail Pro POS v8, v9, Prism Ecommerce Integration
Retail Pro POS v8, v9, Prism Ecommerce Integration24Seven Commerce
 
Pyrotechnic Software Systems Profile
Pyrotechnic Software Systems ProfilePyrotechnic Software Systems Profile
Pyrotechnic Software Systems Profilenplasar
 
Benchmark of ecommerce solutions (short version, english)
Benchmark of ecommerce solutions (short version, english)Benchmark of ecommerce solutions (short version, english)
Benchmark of ecommerce solutions (short version, english)Philippe Humeau
 
Digital transformation and customer care
Digital transformation and customer careDigital transformation and customer care
Digital transformation and customer careMiguel Mello
 
Getting Started In Digital Signage
Getting Started In Digital SignageGetting Started In Digital Signage
Getting Started In Digital SignageDave Haar
 
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel JedrzejewskiPROIDEA
 
10 Business people make their voices heard
10 Business people make their voices heard10 Business people make their voices heard
10 Business people make their voices heardGreg Eicke
 

Similar a Occ tech for commerce (20)

How To Choose The Best Marketplace Platform.pdf
How To Choose The Best Marketplace Platform.pdfHow To Choose The Best Marketplace Platform.pdf
How To Choose The Best Marketplace Platform.pdf
 
Benefits of VoIP
Benefits of VoIPBenefits of VoIP
Benefits of VoIP
 
Ism ecompany ecommerce software comparison
Ism ecompany  ecommerce software comparisonIsm ecompany  ecommerce software comparison
Ism ecompany ecommerce software comparison
 
How To Find The Best Multi Vendor Ecommerce Software.pdf
How To Find The Best Multi Vendor Ecommerce Software.pdfHow To Find The Best Multi Vendor Ecommerce Software.pdf
How To Find The Best Multi Vendor Ecommerce Software.pdf
 
Ip.Digital.Signage(Eng).102011
Ip.Digital.Signage(Eng).102011Ip.Digital.Signage(Eng).102011
Ip.Digital.Signage(Eng).102011
 
2016.05 Liferay Webinar, Alistair Oildfield
2016.05 Liferay Webinar, Alistair Oildfield2016.05 Liferay Webinar, Alistair Oildfield
2016.05 Liferay Webinar, Alistair Oildfield
 
Ecommerce Development
Ecommerce DevelopmentEcommerce Development
Ecommerce Development
 
Ecommerce Development
Ecommerce DevelopmentEcommerce Development
Ecommerce Development
 
Retail Pro POS v8, v9, Prism Ecommerce Integration
 Retail Pro POS v8, v9, Prism Ecommerce Integration Retail Pro POS v8, v9, Prism Ecommerce Integration
Retail Pro POS v8, v9, Prism Ecommerce Integration
 
Nestosh portfolio
Nestosh portfolioNestosh portfolio
Nestosh portfolio
 
Force Platform
Force PlatformForce Platform
Force Platform
 
Pyrotechnic Software Systems Profile
Pyrotechnic Software Systems ProfilePyrotechnic Software Systems Profile
Pyrotechnic Software Systems Profile
 
Benchmark of ecommerce solutions (short version, english)
Benchmark of ecommerce solutions (short version, english)Benchmark of ecommerce solutions (short version, english)
Benchmark of ecommerce solutions (short version, english)
 
Digital transformation and customer care
Digital transformation and customer careDigital transformation and customer care
Digital transformation and customer care
 
Open Telco API
Open Telco APIOpen Telco API
Open Telco API
 
Getting Started In Digital Signage
Getting Started In Digital SignageGetting Started In Digital Signage
Getting Started In Digital Signage
 
Inovent
InoventInovent
Inovent
 
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
 
10 Business people make their voices heard
10 Business people make their voices heard10 Business people make their voices heard
10 Business people make their voices heard
 
Ecommerce
EcommerceEcommerce
Ecommerce
 

Más de Neoworks

Search relevancy
Search relevancySearch relevancy
Search relevancyNeoworks
 
Search refinement
Search refinementSearch refinement
Search refinementNeoworks
 
Payments nick
Payments nickPayments nick
Payments nickNeoworks
 
Neoworks research
Neoworks researchNeoworks research
Neoworks researchNeoworks
 
Delivery method
Delivery methodDelivery method
Delivery methodNeoworks
 

Más de Neoworks (7)

Search relevancy
Search relevancySearch relevancy
Search relevancy
 
Search refinement
Search refinementSearch refinement
Search refinement
 
Payments nick
Payments nickPayments nick
Payments nick
 
Payments
PaymentsPayments
Payments
 
Neoworks research
Neoworks researchNeoworks research
Neoworks research
 
Delivery method
Delivery methodDelivery method
Delivery method
 
Shutl
ShutlShutl
Shutl
 

Último

What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 

Occ tech for commerce

  • 1. Omni Commerce: From Buzzword to Technology 
 Jürgen Albertsen Enterprise Architect hybris
  • 2. Commerce is Everywhere TV Console Web POS Mobile Call Center Social Print Digital Ads Marketplace Mobile Native
  • 3. A Few Examples TV Mobile + + = Live stream, shop as you watch Mobile + = Want this, alert me when near shop Product Product Checkout Location POS + = Not available in store, deliver to home Product Checkout
  • 7. Nice word but: How to do it?
  • 9. The Problem: hybris is pretty old mature
  • 10. Core Services Core / Jalo Over theYears We Stacked up Quite a Stack Commerce Services Commerce Façades Accelerator (Web Storefront) OCC (Web Services)
  • 12. A DTO public class CartData implements Serializable { ! private String code; private boolean net; private PriceData totalPrice; //... public String getCode() { return code; } public void setCode(String code) { this.code = code; } ! //... }
  • 13. A Descriptor for DTOs <bean class="de.hybris.platform.commercefacades.order.CartData"> <property name="code" type="String"/> <property name="net" type="boolean"/> <property name="totalPrice" type="de.hybris.platform.commercefacades.product.PriceData"/> <!-- ... --> </bean>
  • 14. A Façade public interface CartFacade { ! CartData getSessionCart(); ! CartData getMiniCart(); ! CartModificationData addToCart(String code, long quantity) throws CommerceCartModificationException; ! // ... ! }
  • 15. A Controller for the Storefront @Controller public class AddToCartController extends AbstractController { @Resource(name = "cartFacade") private CartFacade cartFacade; ! @RequestMapping(value = "/cart/add", method = RequestMethod.POST) public String addToCart(@RequestParam("productCodePost") String code, Model model, @Valid AddToCartForm form, BindingResult bindingErrors) { // ... CartModificationData cartModification = cartFacade.addToCart(code, qty); if (cartModification.getQuantityAdded() == 0L) { model.addAttribute(ERROR_MSG_TYPE, "basket.information.quantity.noItemsAdded." + cartModification.getStatusCode()); } else if (cartModification.getQuantityAdded() < qty) { model.addAttribute(ERROR_MSG_TYPE, "basket.information.quantity.reducedNumberOfItemsAdded." + cartModification.getStatusCode()); } // .. } }
  • 16. Spring MVC doesn’t care if it’s HTML, XML, JSON, 
 or whatever
  • 17. Another Controller — this Time for a Web Service @Controller public class CartController extends BaseController { @Resource(name = "cartFacade") private CartFacade cartFacade; ! @RequestMapping(value = "/entry", method = RequestMethod.POST) @ResponseBody public CartModificationData addToCart(@RequestParam(required = true) String code, @RequestParam(required = false, defaultValue = "1") long qty) throws CommerceCartModificationException { return cartFacade.addToCart(code, qty); } ! }
  • 18. Marshal Response DTOs to XML/JSON <!-- from springmvc-servlet.xml --> ! <mvc:annotation-driven> <mvc:message-converters register-defaults="false"> <bean parent="resolverXStreamJSONConverter"/> <bean parent="resolverXStreamXmlConverter"/> </mvc:message-converters> </mvc:annotation-driven>
  • 19. We expose 
 commerce logic 
 and data model 1:1
  • 20. What Else? REST-like ETag OAuth 2.0 & HTTPS Template Shipped as source