Case Study: Big Lots Store Inventory Management

Similar documents
Improve and Expand JavaServer Faces Technology with JBoss Seam

Java EE 6: Develop Web Applications with JSF

Oracle Developer Day

Type of Classes Nested Classes Inner Classes Local and Anonymous Inner Classes

Ajax and JSF: Natural Synergy

Mastering JavaServer Faces

Developing Applications with Java EE 6 on WebLogic Server 12c

JSF Tools Reference Guide. Version: M5

Migrating traditional Java EE applications to mobile

Seam 3. Pete Muir JBoss, a Division of Red Hat

<Insert Picture Here> Advanced ADF Faces. Frank Nimphius Principal Product Manager

JSF Tools Reference Guide. Version: beta1

Java EE 7 is ready What to do next? Peter Doschkinow Senior Java Architect

A Closer Look at XPages in IBM Lotus Domino Designer 8.5 Ray Chan Advisory I/T Specialist Lotus, IBM Software Group

1 Copyright 2011, Oracle and/or its affiliates. All rights reserved.

Oracle - Developing Applications for the Java EE 7 Platform Ed 1 (Training On Demand)

JBoss Users & Developers Conference. Boston:2010

Oracle Developer Day

Seam. Pete Muir JBoss, a Division of Red Hat.

Oracle ADF: The technology behind project fusion. Lynn Munsinger Principal Product Manager Application Development Tools Oracle Corporation

BEAWebLogic. Portal. Overview

What is it? What does it do?

Oracle Developer Day

SOFTWARE DEVELOPMENT SERVICES WEB APPLICATION PORTAL (WAP) TRAINING. Intuit 2007

Oracle Fusion Middleware 11g: Build Applications with ADF I

Enterprise Java Unit 1-Chapter 2 Prof. Sujata Rizal Java EE 6 Architecture, Server and Containers

1 Markus Eisele, Insurance - Strategic IT-Architecture

"Web Age Speaks!" Webinar Series

Developing ASP.NET MVC 5 Web Applications. Course Outline

JVA-163. Enterprise JavaBeans

Seam Tools Tutorial. Version: Final-SNAPSHOT

Tools to Develop New Linux Applications

Flex Data Services for Component Developers

Java Enterprise Edition

Oracle Fusion Middleware 11g: Build Applications with ADF I

Delivering Rich Internet Applications with Ajax4jsf

open source community experience distilled

Checklist for Testing of Web Application

Java- EE Web Application Development with Enterprise JavaBeans and Web Services

J2EE AntiPatterns. Bill Dudney. Object Systems Group Copyright 2003, Object Systems Group

EJB ENTERPRISE JAVA BEANS INTRODUCTION TO ENTERPRISE JAVA BEANS, JAVA'S SERVER SIDE COMPONENT TECHNOLOGY. EJB Enterprise Java

What s new in Spring Web Flow 2.0

presentation DAD Distributed Applications Development Cristian Toma

Not just an App. Server

Implementing a Numerical Data Access Service

Customizing the Blackboard Learn UI & Tag Libraries. George Kroner, Developer Relations Engineer

JBoss SOAP Web Services User Guide. Version: M5

Shale and the Java Persistence Architecture. Craig McClanahan Gary Van Matre. ApacheCon US 2006 Austin, TX

What's New in ActiveVOS 7.1 Includes ActiveVOS 7.1.1

Developing ASP.NET MVC 5 Web Applications

Java SE7 Fundamentals

Enterprise JavaBeans, Version 3 (EJB3) Programming

MICROSOFT VISUAL STUDIO 2010 Overview

1Z Oracle. Java Enterprise Edition 5 Enterprise Architect Certified Master

object/relational persistence What is persistence? 5

JSF 2.0: Insight and Opinion

20486: Developing ASP.NET MVC 4 Web Applications

Developing ASP.Net MVC 4 Web Application

imush Information Management Utilities for SharePoint

Building JavaServer Faces Applications

Jboss Enterprise Platform & Red Hat Partnering

Applying Code Generation Approach in Fabrique Kirill Kalishev, JetBrains

Integrating Seam and GWT

ADF Mobile Code Corner

20486 Developing ASP.NET MVC 5 Web Applications

COURSE 20486B: DEVELOPING ASP.NET MVC 4 WEB APPLICATIONS

The Next Generation. Prabhat Jha Principal Engineer

20486: Developing ASP.NET MVC 4 Web Applications (5 Days)

Seam & Web Beans. Pete Muir JBoss, a division of Red Hat.

ADF Mobile Code Corner

Developing ASP.NET MVC 4 Web Applications

COURSE 9 DESIGN PATTERNS

Course 20486B: Developing ASP.NET MVC 4 Web Applications

IBM Rational Application Developer for WebSphere Software, Version 7.0

Developing ASP.NET MVC 4 Web Applications

Oracle Fusion Middleware

Java EE Patterns 176

Specialized - Mastering JEE 7 Web Application Development

Chapter 6 Enterprise Java Beans

Visual Studio Course Developing ASP.NET MVC 5 Web Applications

AD105 Introduction to Application Development for the IBM Workplace Managed Client

Oracle Application Development Framework Overview

Oracle Developer Day

ASP.NET MVC Training

Contents at a Glance

Performance evaluation of J2EE

Visual Web Tools Reference Guide. ISBN: Publication date:

A business application development framework for PAS OpenEdge / WebSpeed

Skyway Builder 6.3 Reference

Fast Track to Java EE

Leverage Rational Application Developer v8 to develop Java EE6 application and test with WebSphere Application Server v8

Developing ASP.NET MVC 4 Web Applications

Vision of J2EE. Why J2EE? Need for. J2EE Suite. J2EE Based Distributed Application Architecture Overview. Umair Javed 1

Oracle Eloqua s User Guide

JSR-303 Bean Validation. Emmanuel Bernard Doer JBoss, a Division of Red Hat

Introduction to Seam. Pete Muir. JBoss, a division of Red Hat

In this Tutorial we present tips and trick for the development enviroment eclipse and the extension MyEclipse.

20486C: Developing ASP.NET MVC 5 Web Applications

Etanova Enterprise Solutions

Tooling for Ajax-Based Development. Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc.

Transcription:

Case Study: Big Lots Store Inventory Management Kunal Bajaj, Mark Hanes, Chris Henson, Keith Naas Information Technology Big Lots Columbus, Ohio

Agenda Introduction to Big Lots Project Overview Application Demo Technology Choices Technical Patterns Conclusions 2

Company Overview Fortune 500 retailer founded in 1967 ~1350 stores across the U.S. Closeout deals 3

Case Study Project Store technology refresh initiative MARS Year 1 point-of-sale hardware/software Year 2 inventory management software Inventory Counts Transfers Item Inquiry Inventory Adjustments Trailer Reconciliation Vendor Receiving and Returns 4

Project Constraints Tight deadlines driven by business needs User technology maturity Substantial bandwidth limitations from central office to the stores Need for offline support store must function even if disconnected from corporate headquarters ( central office ) 5

6 Applications Demo

7 Architecture

Technical Choices Open Source Flexibility Transparency Community support Big Lots contribution SymmetricDS.org JBoss (4.0.4) Stability Industry leading Java5 Customizable stack 8

Technical Choices: Web Stack EJB3 (RC7) / JPA (1.0) Industry standard Java5 POJO JSF (1.2 RI) Industry standard Componentized Facelets (1.1.12)!JSP Easily viewable Templating JBoss Seam (1.2) Bridges gap between EJB3 and JSF State management Security Integrates with almost everything Ajax4JSF (1.1.1) / RichFaces (3.0.1) Rich user experience Integration with Seam/JSF 9

Application Architecture - FASE Facelet Action (POJO) Service Entity (POJO) (EJB / JPA) 10

Technical Patterns Overview Infrastructure Devices Usability User Technology Maturity 11

12 Patterns: Infrastructure How do we make authorization rules so simple even a manager can do it? Use JAAS Seam Security supports EL (s:hasrole, s:haspermission) Views Components Config files Content Organization Split between protected/unprotected Divided by domain Matching view-id pattern simplified

13 Patterns: Infrastructure How do we consistently implement Conversations? Transactional pages @Begin @End FlushModeType.MANUAL Cleanup on abandonment? @Stateful EJB3 - @Destroy inconsistently invoked @Destroy needs to reinitialize @In s for EJBs & POJOs Be aware of: Lifecycle of @In-jected components Conversation timeouts / synchronous requests

Patterns: Devices How do we support a touch screen monitor? Maximize click areas Links styled like buttons Table cells/rows clickable with custom datatable widget Font size and negative space reduces fat fingering Scrollable modalpanel and datatable 14

Patterns: Devices How do we support a handheld device with limited resources and no keyboard or mouse? Screen flow designed for Stylus Number pad Maximize use of JSF components, Minimize use of JavaScript Limit page size & number of components Extends.Net WebBrowser component Maximizes screen size Eliminates multiple clicks Activates Barcode Scanner 15

Patterns: Devices How do we deal with (very) large search results? Push paging to Service to limit resource usage Extend java.util.list and provide accessors to start index, page size and total record count. Use start index and page size to move the cursor Custom datatable and datapager implementation 16

Patterns: Devices How do we handle browser specific CSS or JavaScript? Separate files for browser specific behavior, styles Dynamically loaded using JSF Function UserAgent identifies browser Browser support is now modular Browser specific JavaScript is @private (e.g., _myfunc()) 17

Patterns Example: Item Inquiry Demo 18

Patterns: Usability How do we provide user and developer friendly validation? Use Hibernate Validator annotations on Entities as well as Actions and supplement with inline business logic Extend Seam UIDecorate Intercept processdecodes(), processupdates(), processvalidators() Label attribute exposed for use in error messages Use Ajax4JSF to re-render Labels Messages Styled input components 19

Patterns: Usability How do we incorporate exception handling in a web application? Common exceptions handled in pages.xml Expected runtime exceptions handled in common Actions Unexpected exceptions handled in error-page servlet JSF lifecycle invalid as soon as exception propagated from Java code Captures error data Redirect to JSF error page 20

Patterns: Usability How do we work around time consuming operations? Render page quickly with available data Ajax4JSF poll kicks off time consuming operation Fetched data merged by Actions and re-rendered Refresh friendly 21

Patterns: Usability How do we make an Autocomplete work like an HTML Select? Custom JSF component extends YUI Autocomplete Accepts converters Decouple the input value from the Entity key Facets allow customization of Autocomplete Headers Footers Labels 22

Patterns Example: Item Inquiry Demo 23

Patterns: Users How do we forgive a clickaholic / typeaholic? Act on most recent event, ignoring all unprocessed priors Ajax4JSF eventqueue & requestdelay almost, but not quite Custom eventqueue widget Only handles last event Events before delay are discarded Prevents Multiple clicks Simultaneous events on different widgets 24

Patterns: Users How do we forgive transaction abandonment? 1 st JSF component attaches window.onbeforeunload event 2 nd JSF support component ignores window.onbeforeunload (e.g., Save, Next buttons) Traps Window closing Cancel buttons Unintended Actions 25

Patterns: Users How do we deal with confusing multi-window operation? window.open() problematic on touch screen RichFaces modalpanel inline PDFs wizards Page flow designed to be deterministic 26

Wrap Up Successfully developed and deployed store inventory management applications Currently used in 860+ stores nationwide Full deployment expected during 2008 Web development is challenging, but the right technology choices can ease the pain 27

For further information Links www.biglots.com www.symmetricds.org labs.jboss.com/jbossseam Email Kunal Bajaj kbajaj01@gmail.com Mark Hanes markhanes@gmail.com Chris Henson chenson@symmetricds.org Keith Naas keithnaas@gmail.com 28