daniel kucharski @inspiran_be [email protected]

29
Daniel Kucharski @inspiran_be [email protected] www.vespolina.org vrijdag 8 juni 12

Upload: vuongdung

Post on 06-Jan-2017

218 views

Category:

Documents


1 download

TRANSCRIPT

Page 2: Daniel Kucharski @inspiran_be daniel@xerias.be

What is V?

Why V?

Design

State & Roadmap

Demo

Agenda

vrijdag 8 juni 12

Page 3: Daniel Kucharski @inspiran_be daniel@xerias.be

Expandable ecommerce framework

Interchangeable bundles

Process driven

What is V?

vrijdag 8 juni 12

Page 4: Daniel Kucharski @inspiran_be daniel@xerias.be

vrijdag 8 juni 12

Page 5: Daniel Kucharski @inspiran_be daniel@xerias.be

Focussed towards a simple Order to Cash scenario

Do not focus on the entire ecommerce process (eg. order handling, work load distribution, legal recovery )

Extending means hacking

Why?

Other platforms

vrijdag 8 juni 12

Page 6: Daniel Kucharski @inspiran_be daniel@xerias.be

Flexibility: plug ecommerce into your Symfony2 site

Configurable: easily configure the application behavior and adjust processes

Reusability: lets stop reinventing the wheel

Expandability: a system that grows with the customer’s growth

Why?

We wanted

vrijdag 8 juni 12

Page 7: Daniel Kucharski @inspiran_be daniel@xerias.be

Framework

Technical side (libraries, bundles & optional sandbox)

Functional / business side

Provide (localized) store configurations

Provide commonly used ecommerce flows

What is V?

vrijdag 8 juni 12

Page 8: Daniel Kucharski @inspiran_be daniel@xerias.be

Cart -> Order

https://github.com/vespolina/vespolina-sandbox/wiki/Order-to-Cash-Process-Flow-Diagrams

Why?

A possible B2C example

vrijdag 8 juni 12

Page 9: Daniel Kucharski @inspiran_be daniel@xerias.be

Why?

https://github.com/vespolina/vespolina-sandbox/wiki/Order-to-Cash-Process-Flow-Diagrams

A possible B2B scenario

vrijdag 8 juni 12

Page 10: Daniel Kucharski @inspiran_be daniel@xerias.be

Hotel booking

Client asks for a B2C focussed site

Booking Request -> Confirm -> Pay

What is V?

So you think you can build an ecommerce site?

vrijdag 8 juni 12

Page 11: Daniel Kucharski @inspiran_be daniel@xerias.be

So you think you can maintain an ecommerce site?

What is V?

Hotel booking

Client asks later on to add B2B support (eg. customer is travel agency

inbound Booking Requests -> Confirm -> Sales Order

Periodically aggregate sales orders into invoice and follow up payments

vrijdag 8 juni 12

Page 12: Daniel Kucharski @inspiran_be daniel@xerias.be

Design?

Bundles, bundles, bundles

CartBundle InventoryBundle

FulfillmentBundle MerchandiseBundle

OrderBundle MonetaryBundle

PartnerBundle PricingBundle

ProductBundle WorkflowBundle

TaxationBundle

TaxonomyBundle AdminBundle

StoreBundle CoreBundle

vrijdag 8 juni 12

Page 13: Daniel Kucharski @inspiran_be daniel@xerias.be

Manages a product

Default product with features and options

Custom products processed through handlers

Products can use multiple identification types (SKU, EAN, UPC,...)

Design?

ProductBundle

vrijdag 8 juni 12

Page 14: Daniel Kucharski @inspiran_be daniel@xerias.be

Features are attributes to a product

a movie might have a director and studio

music might have a producer and label

Options are choice within the same product

color - red, green, blue

size - small, medium, large

Combinations can be mapped to SKU’s

Design?

ProductBundle

vrijdag 8 juni 12

Page 15: Daniel Kucharski @inspiran_be daniel@xerias.be

Manages a cart

Cart, CartItem, CartableItem (eg. product)

Adjust behavior per cartable item with Cart Handlers

Pricing of a Cart with pricing providers

Basic cart management (controller, twig templates)

Design?

CartBundle

vrijdag 8 juni 12

Page 16: Daniel Kucharski @inspiran_be daniel@xerias.be

Manages partners to an ecommerce system

Customers, contact persons, employee, suppliers, ...

Role based approach

Partner

personalDetails (eg. social security id)

organisationalDetails (eg. VAT id)

Design?

PartnerBundle

vrijdag 8 juni 12

Page 17: Daniel Kucharski @inspiran_be daniel@xerias.be

Manages the hassle of dealing with regional taxes

Tax zones, tax categories & rates

Provides tax schemas

Tax related webservices (eg. VIES service)

Design?

TaxationBundle

vrijdag 8 juni 12

Page 18: Daniel Kucharski @inspiran_be daniel@xerias.be

Generic classification (tags & hierarchical categories )

Taxonomy term have properties

Eg. product categorisation, customer classification

Multiple classifications for the same entity collection (eg. frontend classification, internal organisational classification)

Design?

TaxonomyBundle

vrijdag 8 juni 12

Page 19: Daniel Kucharski @inspiran_be daniel@xerias.be

Manages a store and its global behavior

operational mode (standard, daily deal )

Multi store in mind

Store zones

Design?

StoreBundle

vrijdag 8 juni 12

Page 20: Daniel Kucharski @inspiran_be daniel@xerias.be

Design?

StoreBundle

Luxary Store

sales_channel: luxary_web

Beverages Store

sales_channel: beverages_web

Clothing Store Zone

Jewelry Store Zone

taxonomyName: clothing_taxonomyproduct_view: tiled

taxonomyName: jewelry_taxonomyproduct_view: small_list

Beer Store Zone

taxonomyName: beer_taxonomyproduct_view: tiled

vrijdag 8 juni 12

Page 21: Daniel Kucharski @inspiran_be daniel@xerias.be

Design?

StoreBundle : Process

CheckoutB2C

IdentifyCustomer

3. CheckoutB2C extends Process/AbstractProcess and knows which steps to execute in a given state

4. Create an instance of IdentifyCustomer which extend Process/AbstractProcessStep

Try to look if the customer can be identified (eg. through the session) Implements Process/

AbstractProcessStep

CheckoutController

IdentifyCustomerController

DetermineFulfillmentChoose Payment

type

Review

Pay

1. url /checkout delegates to store/controller/checkoutcontroller

2. check if an active checkout process exists, if not create one and execute

4b If the customer could not be identified we create an identifyCustomer controller which returns

an UI to login / create a new account

4c When the login form is submitted the IdentifyCustomer Controller should update the process state and signal the main process to

continue with it's subsequent steps (eg. through event dispatcher) (Todo: decouple and use event dispatcher)

vrijdag 8 juni 12

Page 22: Daniel Kucharski @inspiran_be daniel@xerias.be

Design?

StoreBundle : Process

vrijdag 8 juni 12

Page 23: Daniel Kucharski @inspiran_be daniel@xerias.be

Manages sellable products

Conceptual difference between known products and sellable products

Read RFC bit.ly/KkWzJg

Design?

MerchandiseBundle (RFC)

vrijdag 8 juni 12

Page 24: Daniel Kucharski @inspiran_be daniel@xerias.be

Product Master

jupiler_bottle

Design?

MerchandiseBundle (RFC)

sf_live_t_shirt

sf_live_badge

product feeds

vrijdag 8 juni 12

Page 25: Daniel Kucharski @inspiran_be daniel@xerias.be

Product Master

jupiler_bottle

Design?

MerchandiseBundle (RFC)

Beverages Store

SF Storesf_live_t_shirt

sf_live_badgesf_live_t_shirt

1 eurojupiler_bottle

14 euro

10 euro

sf_live_t_shirt

product feeds

vrijdag 8 juni 12

Page 26: Daniel Kucharski @inspiran_be daniel@xerias.be

Demo environment setup

http://try.vespolina.org

Sandbox frontend is working

Some bundles are used already in production

Backend = TODO

State & Roadmap

vrijdag 8 juni 12

Page 27: Daniel Kucharski @inspiran_be daniel@xerias.be

Decouple process framework from store bundle

Move into a db driven process framework (ex Workflow Bundle)

Documentation

Admin bundle

REST services

Merchandise bundle

...

State & Roadmap

vrijdag 8 juni 12

Page 28: Daniel Kucharski @inspiran_be daniel@xerias.be

Many bundles need additional love

Feel free to help

https://github.com/vespolina

IRC irc.freenode.org / #vespolina

Contribute

vrijdag 8 juni 12