Presentation is loading. Please wait.

Presentation is loading. Please wait.

Developing a 21 st Century Point of Service using the latest OpenEdge tools Brian Preece Business Computer Projects.

Similar presentations


Presentation on theme: "Developing a 21 st Century Point of Service using the latest OpenEdge tools Brian Preece Business Computer Projects."— Presentation transcript:

1 Developing a 21 st Century Point of Service using the latest OpenEdge tools Brian Preece Business Computer Projects

2 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Session Objectives To describe how we used OpenEdge features both old and new to create an Operationally Responsive Point of Service 2 Developing a 21st Century Point of Service using the latest OpenEdge tools

3 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Who are BCP? Major supplier in Europe of Food Wholesale, Retail and Cash and Carry systems Users: Spar, NISA, Pets at Home, BWG, Musgrave, ADM, Morrisons, etc… Area: currently UK and EU, keen to expand! 1 st “Extranet” - Late 1970s Telspar 1 st Scanning in convenience stores in UK Early adopter of SonicMQ with our AIMS wholesale/ retail messaging hub Continuous innovators 3 Developing a 21st Century Point of Service using the latest OpenEdge tools

4 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Agenda Business Acceleration and Operational Responsiveness The PoS Dilemma Solving the dilemma using the latest OpenEdge tools Demo A closer look at the tools Moving to an Object Oriented world Conclusions 4 Developing a 21st Century Point of Service using the latest OpenEdge tools

5 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Agenda Business Acceleration and Operational Responsiveness The PoS Dilemma Solving the dilemma using the latest OpenEdge tools Demo A closer look at the tools Moving to an Object Oriented world Conclusions 5 Developing a 21st Century Point of Service using the latest OpenEdge tools

6 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Business velocity is increasing Typical Business SLAs 10 6 10 5 10 4 10 3 100 10 1 0 Seconds Source: Gartner, Inc. Automated share trading 100 ms20 ms Supply chain updates 1 day 15 min Phone activation 1 min 3 days 1 week0.5 hour Refresh data warehouse Track financial position 5 min 1 day Airline operations 20 min30 sec Trade settlement 5 days2 hrs. mail express fax e-mail real time Business Process same-day service Developing a 21st Century Point of Service using the latest OpenEdge tools

7 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Supply Chain Operational Responsiveness Developing a 21st Century Point of Service using the latest OpenEdge tools 7 GS1 Cost effective Product information Voice Deliver stock cheaply Through Accuracy EPOS Real time links Essential demand tracking Demand Forecasting Sophisticated buying

8 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Agenda Business Acceleration and Operational Responsiveness The PoS Dilemma Solving the dilemma using the latest OpenEdge tools Demo A closer look at the tools Moving to an Object Oriented world Conclusions 8 Developing a 21st Century Point of Service using the latest OpenEdge tools

9 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale The Retail Challenge Many stores and no IT expertise in the stores Fixes and new features need to be rolled out as fast as possible But visiting each store is very expensive This implies a thin client solution BUT MUST BE RESILIENT - the store must continue to trade as long as one till still works –Even if:no back office no AppServer ™ no comms 9 Developing a 21st Century Point of Service using the latest OpenEdge tools

10 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Changes to Business Model Independent stores coalescing into chains Wholesalers buying retail stores and running as multiple chain Hence desire for –Centralised control –Centralised data management –Centralised data analysis 10 Developing a 21st Century Point of Service using the latest OpenEdge tools

11 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Agenda Business Acceleration and Operational Responsiveness The PoS Dilemma Solving the dilemma using the latest OpenEdge tools Demo A closer look at the tools Moving to an Object Oriented world Conclusions 11 Developing a 21st Century Point of Service using the latest OpenEdge tools

12 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale “Classic” WebClient Architecture 12 Developing a 21st Century Point of Service using the latest OpenEdge tools

13 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Semi-disconnected Architecture 13 Developing a 21st Century Point of Service using the latest OpenEdge tools

14 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale 9.0 WebClient 10.1 Sonic Integration features 10.1 XML features 10.2 GUI for.NET 10.1/ 10.2 OO ABL Tools we used Developing a 21st Century Point of Service using the latest OpenEdge tools 14

15 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Agenda Business Acceleration and Operational Responsiveness The PoS Dilemma Solving the dilemma using the latest OpenEdge tools Demo A closer look at the tools Moving to an Object Oriented world Conclusions 15 Developing a 21st Century Point of Service using the latest OpenEdge tools

16 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale 16 Demo Developing a 21st Century Point of Service using the latest OpenEdge tools

17 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Demo setup Developing a 21st Century Point of Service using the latest OpenEdge tools 17 Host laptop “PoS” laptop LAN Back Office VM Sonic Broker BO DB Central Management VM Sonic Broker CM DB Software Download Site

18 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Agenda Business Acceleration and Operational Responsiveness The PoS Dilemma Solving the dilemma using the latest OpenEdge tools Demo A closer look at the tools Moving to an Object Oriented world Conclusions 18 Developing a 21st Century Point of Service using the latest OpenEdge tools

19 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale WebClient for easy deployment –Use temp-tables to store product/ price data, deals, etc. Sonic for real time messaging –Transactions are sent to the AppServer in real time Sonic Local Persistence to handle disconnection –Connection/ Disconnection handled in the background XML to ProDataSet/ Temp-table –Very fast transformation to and fro –Also give loose coupling between PoS and Back Office The Basics Developing a 21st Century Point of Service using the latest OpenEdge tools 19

20 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Old PoS Developing a 21st Century Point of Service using the latest OpenEdge tools 20

21 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale DEV-32: Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale 21 GUI for.NET Transformation Dynamically coloured buttons Much cleaner overall look Gradient fill spans across group of objects Object Oriented GUI Bitmap embedded within button object Developing a 21st Century Point of Service using the latest OpenEdge tools Style sheets

22 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Can use UML to design More robust since more checking is done at compile time Easier to unit test because of small objects with well defined interfaces Easier to customise Defined API Facilitates continuous integration and other Agile techniques OO ABL Developing a 21st Century Point of Service using the latest OpenEdge tools 22

23 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Agenda Business Acceleration and Operational Responsiveness The PoS Dilemma Solving the dilemma using the latest OpenEdge tools Demo A closer look at the tools Moving to an Object Oriented world Conclusions 23 Developing a 21st Century Point of Service using the latest OpenEdge tools

24 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Total rewrite from the ground up Thin OO wrapper round existing procedural code In between solution We chose the latter on a case by case basis Only possible because Progress allow mixing of OO and procedural code! Three approaches Developing a 21st Century Point of Service using the latest OpenEdge tools 24

25 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Essential where code interacts with GUI for.NET Highly desirable for main program structure Highly desirable for code that has either been badly written or much amended New code needs to be audited against the original code Our example: Scanning –Core part of the system –Existing logic must be reused in business entities OO Redesign Developing a 21st Century Point of Service using the latest OpenEdge tools 25

26 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale LibPoSService.p –Structured procedure –Reads and Writes to the database –Contains code for locating product information, creating transaction records, adding items to a transaction, etc Scanning – Starting Point Developing a 21st Century Point of Service using the latest OpenEdge tools 26

27 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale First, the domain level classes are identified Scanning – Class Model Developing a 21st Century Point of Service using the latest OpenEdge tools 27

28 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Next, internal procedures that can be moved to the domain level classes are selected In LibPoSService.p we have: –GetItemDetails: Finds a product based on a scanned code Outputs product details as a temp-table parameter –AddItemToBasket: Receives product details as a temp-table parameter Adds scanned product details to the current basket Scanning – Code Refactoring Developing a 21st Century Point of Service using the latest OpenEdge tools 28

29 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Procedural code is changed to: –run from temp-tables instead of database tables –use data access objects to read / write data within the functional code Procedures are transformed into class methods in associated domain level classes Scanning – Code Refactoring Developing a 21st Century Point of Service using the latest OpenEdge tools 29

30 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Scanning – Code Refactoring Developing a 21st Century Point of Service using the latest OpenEdge tools 30 = =

31 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Finally, any remaining “control” code is translated to use the domain level objects. As our PoS uses MVC, scanning control code was added to the controller for the main scanning screen Scanning – Plugging it together Developing a 21st Century Point of Service using the latest OpenEdge tools 31

32 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Scanning – Plugging it together Developing a 21st Century Point of Service using the latest OpenEdge tools 32

33 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Scanning – Plugging it together Developing a 21st Century Point of Service using the latest OpenEdge tools 33

34 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Performed after recoding is complete Each line of the old code is checked to ensure that it has been represented in the new code or is definitely not required Scanning – Code Auditing Developing a 21st Century Point of Service using the latest OpenEdge tools 34

35 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale... run GetItemDetails in hLibPoSService (input dProductID, output table ttItemDetails).... run AddItemToBasket in hLibPoSService (input table ttItemDetails, input iQuantity).... /* Refresh transaction display */ {&OPEN-QUERY-br_saleline} apply “ENTRY” to code-entry in frame f-main. apply “END” to browse br_saleline.... /* Recalculate total due and number of items */ dTotal = 0. iNumItems = 0. for each saleline where saleline.trans-id = iTransID no-lock: dTotal = dTotal + saleline.sales-value. iNumItems = iNumItems + saleline.quantity. end. for each b-tendtran where b-tendtran.trans-id = iTransID no-lock: dTotal = dTotal - b-tendtran.amount. end. Scanning – Code Auditing Developing a 21st Century Point of Service using the latest OpenEdge tools 35     Harvested for reuse in Product class Harvested for reuse in Transaction class Functional equivalent exists as a method in the ScanningForm class These global variables are now properties of the Transaction class.

36 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Requires well-structured code Relies on interworking between OO and procedural code Normally achieved by wrapping procedural code within an OO wrapper Our example: Deals engine –Self-contained –Stateless –Well defined interface Re-using Procedural code Developing a 21st Century Point of Service using the latest OpenEdge tools 36

37 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale 720 possible combinations! – which is best? –4 Cokes for £1 –4 Soft drinks for £1.25 –Meal deal: drink, sandwich and snack for £2.50 –World Cup deal: 4 beers and 4 crisps for £3 –Bulk buy beer deal: 4 beers for £2.50, 8 beers for £4.50, 16 beers for £8.50 –Customer buys 4 Cokes, 2 Fantas, 6 packets of crisps, 2 sandwiches and 12 beers 5000 lines of stateless ABL code! Must recalculate in real time when an item is scanned! Development cost £200k 2 years ago Deals Engine – The problem Developing a 21st Century Point of Service using the latest OpenEdge tools 37

38 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale DealsEngine.p –Structured procedure with a single entry point –Reads “static” data from the database e.g. the items that make up each deal –Does not write to the database No functional changes required But the PoS has no database access Deals Engine – Starting Point Developing a 21st Century Point of Service using the latest OpenEdge tools 38

39 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale /*------------------------------------------------------------------------ File : DealsEngine.p Purpose : Deals Procedure Library Syntax : Description : Author(s) : BCP Created : 15/12/2006 Notes : ---------------------------------------------------------------------*/ /* This.W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ {dsParameters.i} {dsDeal.i} define buffer stparam for ttParameters. define buffer DealLiveMain for ttDealLiveMain. define buffer DealLiveList for ttDealLiveList. define buffer DealLiveItem for ttDealLiveItem. define buffer LinkedDeals for ttLinkedDeals. DAParameters:Instance:FetchWhere("", output dataset dsParameters). DADeal:Instance:FetchWhere("", output dataset dsDeal).... Deals Engine – Code Changes Developing a 21st Century Point of Service using the latest OpenEdge tools 39 Define the temp-tables and datasets that will be used in place of the database tables These buffers have the same name as the database tables in the old procedure Data access objects are used to populate the temp- tables

40 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale class DealsEngine final: define private variable hDealsEngine as handle no-undo. constructor public DealsEngine (): super (). run DealsEngine.p persistent set hDealsEngine. end constructor. destructor public DealsEngine ( ): if valid-handle(hDealsEngine) then delete procedure hDealsEngine. end destructor. method public character ApplyDealsToBasket(input-output table tBasket, input iLineNumber as integer): run ApplyDealsToBasket in hDealsEngine (input-output table tBasket, input iLineNumber as integer). end method. end class. Deals Engine – OOABL Wrapper Developing a 21st Century Point of Service using the latest OpenEdge tools 40 Private handle for referencing the structured procedure Constructor loads the procedure persistenly Destructor deletes the procedure instance Methods expose entry points to the structured procedure

41 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Agenda Business Acceleration and Operational Responsiveness The PoS Dilemma Solving the dilemma using the latest OpenEdge tools Demo A closer look at the tools Moving to an Object Oriented world Conclusions 41 Developing a 21st Century Point of Service using the latest OpenEdge tools

42 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Conclusions Business logic is very hard-won – don’t throw it away By allowing OO and procedural code to co-exist, Progress have given us choices denied by other vendors when they introduced OO Strike a balance between retaining code and rewriting in OO Audit the code you rewrite 42 Developing a 21st Century Point of Service using the latest OpenEdge tools

43 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Questions 43 Developing a 21st Century Point of Service using the latest OpenEdge tools

44 Using the Advanced GUI, Structured Error Handling and SonicMQ to build a Semi-Disconnected Point of Sale Thank you for your time! brian@bcpsoftware.com www.bcpsoftware.com See our Expo booth! 44 Developing a 21st Century Point of Service using the latest OpenEdge tools


Download ppt "Developing a 21 st Century Point of Service using the latest OpenEdge tools Brian Preece Business Computer Projects."

Similar presentations


Ads by Google