This document discusses delivery method integration and Shutl, a delivery service built by Neoworks. Shutl offers two delivery options: Shutl Now for rapid delivery within 15 minutes, and Shutl When for delivery within a specified hour. The document provides code examples for integrating Shutl services into a Hybris e-commerce platform and outlines some features and considerations for message caching, file endpoints, database transactions, and ensuring data consistency.
2. Vendors share
≒ Similar goods
≒ Similar pricing
Differentiators
≒ Customer experience
≒ Delivery
Delivery Matters
3. ≒ Links stores and couriers
≒ Handles the hard stuff
≒ Courier selection
≒ Price calculation
≒ Lead times
≒ Exposes a simple API
Shutl
4. ≒ Shutl Now
≒ Rapid delivery, as soon as possible
≒ Can be as fast as 15 minutes
≒ Shutl When
≒ Delivery within a specified hour
Shutl services
5. ≒ Built by neoworks
≒ Data model and business services
≒ Location service
≒ Delivery service
≒ CS cockpit widget
Shutl Hybris Extension
6. locs = ls.getNearbyShutlLocations(
cart.getDeliverAddress(), 20.0);
Quote = ds.getDeliveryQuotation(cart,
locs.get(0),
cart.getDeliveryAddress(), null);
cart.setDeliveryQuotation(quote);
conf = ds.bookDelivery(cart);
For a demo, go to thetoyshop.com
Shutl Now Example
7. ≒ Cancel quote
≒ Failure in process after quote was booked
≒ Preview quotes
≒ Rapid, approximate
Feature wish list
8. ≒ Separate retrieval of data and processing
≒ Retrieved data leaves audit trail
≒ Good for debugging
≒ No need to refetch data if the error was local
≒ Remember to clean up
≒ Some data expires
Message Caching
9. ≒ Add file end points for inbound data interfaces
≒ Allows for easy production fixes
≒ Remember to track the source of the data
≒ Spring integration is good for this
File Endpoints
10. ≒ Atomicity, Consistency, Isolation, Durability
≒ Stock example
≒ Stock numbers guaranteed by ACID properties
≒ What happens when some stock is destroyed?
≒ Downside: bottleneck due to locking
Database Transactions
11. ≒ Stock example
≒ Many people buy the same goods
≒ Web applications are very concurrent
≒ Single SQL statement
≒ UPDATE StockLevel SET qty = 98 WHERE
qty = 100 AND sku = 1234
≒ Retry if no rows updated
No transactions?