A7: Architecting Your Application in OpenEdge ® 10 Mike Ormerod Applied Architect.

Slides:



Advertisements
Similar presentations
Server Access The REST of the Story David Cleary
Advertisements

Apache Struts Technology
DEV-2: Getting Started with OpenEdge® Architect – Part I
Improving your OpenEdge® Development Productivity David Lund Sr. Training Program Manager, Progress.
Technical BI Project Lifecycle
DEV-13: You've Got a Problem, Here’s How to Find It
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB JavaForum.
SOA with Progress Philipp Walther Consultant. © 2007 Progress Software Corporation2 Agenda  SOA  Enterprise Service Bus (ESB)  The Progress SOA Portfolio.
John Sadd Progress Fellow and OpenEdge Evangelist
Performance testing of Progress Appservers and a plug-in for Jmeter
What’s new in Progress Developer Studio for OpenEdge 11.0?
ARCH-6: UML Modeling with Enterprise Architect Phillip Magnay Technical Architect.
The Easiest Way to Write Web Applications Jordi Sastre IT Architect, PSC May 2012.
IBM Proof of Technology Discovering the Value of SOA with WebSphere Process Integration © 2005 IBM Corporation SOA on your terms and our expertise WebSphere.
ARCH12: QA Considerations - OERA ARCH-12: QA considerations for applications following the OpenEdge Reference Architecture SMAT-Team Tobago Thomas Hutegger.
C8: Enterprise Integration Patterns in Sonic ™ ESB Stefano Picozzi Solutions Architect.
SOA-06: Get On the Bus with the OpenEdge ® Adapter for Sonic ESB ® David Cleary Principal Software Engineer, Progress.
What's New In Progress Developer Studio for OpenEdge?
1 The Problem Do you have: A legacy ABL system with millions of Lines of ABL Code? Years and years of modifications to your ABL code? System documentation.
DEV-07: Increasing Productivity with Tools for Business Logic Gikas Principal Software Engineer.
SOA-12: Integrate over the Web with OpenEdge® Web Services
DEV-2: Making OpenEdge ® Architect Work For You David Lund Product Readiness.
Using JavaBeans and Custom Tags in JSP Lesson 3B / Slide 1 of 37 J2EE Web Components Pre-assessment Questions 1.The _____________ attribute of a JSP page.
INT-11: It’s Monday Morning, Do You Know Where Your Service Has Been? Service Management with Sonic ™ and Actional Marv Stone Progress Software.
® IBM Software Group © 2007 IBM Corporation J2EE Web Component Introduction
ARCH-03: Implementing the OpenEdge™ Reference Architecture – Part 1 John Sadd Progress Fellow and OpenEdge Evangelist.
Object-Oriented Programming and the Progress ABL Tomáš Kučera Principal Solution Engineer / EMEA Power Team.
DEV-5: Introduction to WebSpeed ® Stephen Ferguson Sr. Training Program Manager.
Progress SOA Reference Model Explained Mike Ormerod Applied Architect 9/8/2008.
DEV-05: Ratcheting up your OpenEdge™ Development Productivity Sunil S Belgaonkar Principal Software Engineer.
DEV-09: User Authentication in an OpenEdge™ 10.1 Distributed Computing Environment Michael Jacobs Development Architect.
ARCH-4: The Presentation Layer in the OpenEdge® Reference Architecture Frank Beusenberg Senior Technical Consultant.
SOA-14: Deploying your SOA Application David Cleary Principal Software Engineer.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
INT-5: Integrate over the Web with OpenEdge® Web Services
SOA-26: Extending Your Application with OpenEdge ® Web Services John Sadd OpenEdge Evangelist.
DEV-16: Leveraging the Power of Advanced GUI Power is nothing without control Erwin in ‘t VeldCCS Tony VertentenIntris Eric DebeijProgress Roland de PijperProgress.
DEV-8: OpenEdge® Architect – Extensibility & Third Party Integration Sunil Belgaonkar Principal Software Engineer Architect Phillip Magnay.
SOA-25: Data Distribution Solutions Using DataXtend ® Semantic Integrator for Sonic ™ ESB Users Jim Barton Solution Architect.
SOA-02: Sonic SOA Products Overview Luis Maldonado Technical Product Manager Sonic Software.
INNOV-10 Progress® Event Engine™ Technical Overview Prashant Thumma Principal Software Engineer.
ARCH-07: Implementing the OpenEdge™ Reference Architecture – Part 2
ARCH-7: A Class-Based Implementation of the OpenEdge® Reference Architecture John Sadd Fellow and OpenEdge Evangelist Applied Technology.
ARCH-11: Building your Presentation with Classes John Sadd Fellow and OpenEdge Evangelist Sasha Kraljevic Principal TSE.
INT-9: Implementing ESB Processes with OpenEdge ® and Sonic ™ David Cleary Principal Software Engineer.
DEV-6: Advanced Object-Oriented Programming in the ABL Evan Bleicher Senior Development Manager Shelley Chase
ARCH-08 A Common Business Service Approach to Application Development Anthony Swindells Progress Fellow.
© 2008 Progress Software Corporation1 SOA-33: Transactions in a SOA World What happens next? Flight Booking Hotel Booking Car Booking (3) Calls (2) Change.
Preface IIntroduction Objectives I-2 Course Overview I-3 1Oracle Application Development Framework Objectives 1-2 J2EE Platform 1-3 Benefits of the J2EE.
ARCH-7: Integrate this! SonicMQ® and the OpenEdge® Reference Architecture Christian Stiller Technical Architect.
DEV-5: Using ProDataSets™ in OpenEdge ® 10 Cheryl LaBarge Product Readiness.
ARCH-5: Service Interfaces in Practice Christian Stiller Technical Architect.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
Mike Ormerod C1: Applied SOA: Building Out Your SOA Environment with OpenEdge ® Applied Architect.
MOVE-15: Leveraging Business Entities, Data Access Objects and ProDataSets with a Progress Dynamics® or ADM2 GUI Peter Judge Principal Software Engineer.
Christian Stiller Technical Account Manager SOA-23: Enterprise Integration Patterns in Sonic ™ ESB.
A2: Making OpenEdge ® Architect Work For You Susan Houniet Senior Solution Consultant.
DEV-9: Using the ProDataSet™ in OpenEdge® 10
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
DEV-21: Embracing OpenEdge ® Architect Sunil S Belgaonkar Software Architect.
DEV-25: You've Got a Problem, Here’s How to Find It
COMP-10: Managing OpenEdge® Development with the Roundtable® TSMS
ARCH-1: Application Architecture made Simple
C6: Introducing Native Invocation with the OpenEdge® Adapter for Sonic™ ESB Chris James Senior Consultant.
DEV-08: Exploring Object-oriented Programming
DEV-11: Architecting Your Application in OpenEdge® 10
ARCH-2: OpenEdge Reference Architecture (OERA) Latest Thinking
ARCH-14: Power Your Organisation with OpenEdge
SOA-09: Conducting Business with OpenEdge® and SonicMQ®
Presentation transcript:

A7: Architecting Your Application in OpenEdge ® 10 Mike Ormerod Applied Architect

© 2008 Progress Software Corporation 2 Goals of the Session  (Re-)Introduce the OpenEdge Reference Architecture as a set of practical guidelines  Make sure you are aware of key OpenEdge 10 features  Map features to their benefit in designing (changes to) your application

© 2008 Progress Software Corporation 3 Agenda  What’s Your Starting Point?  Using the OERA to Help You Adapt  ProDataSets and Your Architecture  Opening Your Application to the World  Using Classes in Your Application  Other Areas of Support

© 2008 Progress Software Corporation 4 One procedure to do everything DEFINE VARIABLE cCarBrand AS CHARACTER NO-UNDO. DEFINE VARIABLE cCarModel AS CHARACTER NO-UNDO. CREATE Car. Update CarBrand CarModel CarStyle CarColor CarFuel CarEngine CarVIN WITH FRAME UpdFrame. Car.CarID = GUID(GENERATE-UUID). CASE CarBrand: WHEN "Hinda" THEN FIND Dealer WHERE Dealer.DealerName MATCHES "*#1*". … FIND BaseCode WHERE Category = "style“ AND Description = CarStyle. Car.BaseCodeStyleID = BaseCode.BaseCodeID. IF Dealer.DealerName MATCHES "*#1*" THEN Car.CarDescription = cCarColor + " " +… ELSE IF Dealer.DealerName MATCHES "*#2*" THEN Car.CarDescription = cCarBrand + " " +…

© 2008 Progress Software Corporation 5 So what happens when the UI requirements change?  Extracting and changing UI references  Identifying what elements were displayed, created or updated and in what order  Extracting implicit business logic Update CarBrand CarModel CarStyle CarColor CarFuel CarEngine CarVIN WITH FRAME UpdFrame.

© 2008 Progress Software Corporation 6 One procedure to do everything DEFINE VARIABLE cCarBrand AS CHARACTER NO-UNDO. DEFINE VARIABLE cCarModel AS CHARACTER NO-UNDO. CREATE Car. Update CarBrand CarModel CarStyle CarColor CarFuel CarEngine CarVIN WITH FRAME UpdFrame. Car.CarID = GUID(GENERATE-UUID). CASE CarBrand: WHEN "Hinda" THEN FIND Dealer WHERE Dealer.DealerName MATCHES "*#1*". … FIND BaseCode WHERE Category = "style“ AND Description = CarStyle. Car.BaseCodeStyleID = BaseCode.BaseCodeID. IF Dealer.DealerName MATCHES "*#1*" THEN Car.CarDescription = cCarColor + " " +… ELSE IF Dealer.DealerName MATCHES "*#2*" THEN Car.CarDescription = cCarBrand + " " +…

© 2008 Progress Software Corporation 7 What happens as your logic grows?  Adding a brand or a dealership  Many places in the code to change  Finding them all  Being sure they all work the same way  Effects of this on testing CASE CarBrand: WHEN "Hinda" THEN FIND Dealer WHERE Dealer.DealerName MATCHES "*#1*".

© 2008 Progress Software Corporation 8 One procedure to do everything DEFINE VARIABLE cCarBrand AS CHARACTER NO-UNDO. DEFINE VARIABLE cCarModel AS CHARACTER NO-UNDO. CREATE Car. Update CarBrand CarModel CarStyle CarColor CarFuel CarEngine CarVIN WITH FRAME UpdFrame. Car.CarID = GUID(GENERATE-UUID). CASE CarBrand: WHEN "Hinda" THEN FIND Dealer WHERE Dealer.DealerName MATCHES "*#1*". … FIND BaseCode WHERE Category = "style“ AND Description = CarStyle. Car.BaseCodeStyleID = BaseCode.BaseCodeID. IF Dealer.DealerName MATCHES "*#1*" THEN Car.CarDescription = cCarColor + " " +… ELSE IF Dealer.DealerName MATCHES "*#2*" THEN Car.CarDescription = cCarBrand + " " +…

© 2008 Progress Software Corporation 9 How does your database schema affect your application code?  Schema complexities  Many places in the code  Schema changes FIND BaseCode WHERE Category = "style“ AND Description = CarStyle. Car.BaseCodeStyleID = BaseCode.BaseCodeID. Relational keys

© 2008 Progress Software Corporation 10 One procedure to do everything DEFINE VARIABLE cCarBrand AS CHARACTER NO-UNDO. DEFINE VARIABLE cCarModel AS CHARACTER NO-UNDO. CREATE Car. Update CarBrand CarModel CarStyle CarColor CarFuel CarEngine CarVIN WITH FRAME UpdFrame. Car.CarID = GUID(GENERATE-UUID). CASE CarBrand: WHEN "Hinda" THEN FIND Dealer WHERE Dealer.DealerName MATCHES "*#1*". … FIND BaseCode WHERE Category = "style“ AND Description = CarStyle. Car.BaseCodeStyleID = BaseCode.BaseCodeID. IF Dealer.DealerName MATCHES "*#1*" THEN Car.CarDescription = CarColor + " " +… ELSE IF Dealer.DealerName MATCHES "*#2*" THEN Car.CarDescription = cCarBrand + " " +…

© 2008 Progress Software Corporation 11 What happens to business logic variants?  Duplicating and extending the logic  When the code gets out of control  Maintaining each variant IF Dealer.DealerName MATCHES "*#1*" THEN Car.CarDescription = cCarColor + " " +… ELSE IF Dealer.DealerName MATCHES "*#2*" THEN Car.CarDescription = cCarBrand + " " +…

© 2008 Progress Software Corporation 12 Agenda  What’s Your Starting Point?  Using the OERA to Help You Adapt  ProDataSets and Your Architecture  Opening Your Application to the World  Using Classes in Your Application  Other Areas of Support

© 2008 Progress Software Corporation 13 OpenEdge Reference Architecture Presentation Business Components Data Access Data Sources Common Infrastructure Enterprise Services Update CarBrand IF DealerName MATCHES … CREATE CAR… FIND DEALER WHERE…

© 2008 Progress Software Corporation 14 OpenEdge Reference Architecture Presentation Business Components Data Access Data Sources Common Infrastructure Enterprise Services RUN Inventory_Service AUDIT-CONTROL… IF CAN-DO…

© 2008 Progress Software Corporation 15 Basic principles for agility and reuse  Do each job once and only once!  Let each component do only one job and one type of job!  Tackle one part of the problem at a time! Business Components Common Infrastructure

© 2008 Progress Software Corporation 16 Starting the split  User Interface and Business Logic  Or Client and Server Data Definitions User Interface Client-Side Logic Authentication Business Logic Database Access Schema Defs Client Server

© 2008 Progress Software Corporation 17 Continuing the split Data Definitions User Interface Client-Side Logic Client Server Authentication Business Logic Database Access Schema Defs  Sharing definitions  Identifying the user  What data for the UI  What data for the business logic

© 2008 Progress Software Corporation 18 Completing the split Data Definitions User Interface Client-Side Logic Authentication Business Logic Database Access Presentation Business Components Data Access Data Sources Common Infrastructure Enterprise Services Schema Defs

© 2008 Progress Software Corporation 19 Agenda  What’s Your Starting Point?  Using the OERA to Help You Adapt  ProDataSets and Your Architecture  Opening Your Application to the World  Using Classes in Your Application  Other Areas of Support

© 2008 Progress Software Corporation 20 ProDataSet ™ bridges the gap from client to server  Holds any relational data instance Data relationships Before-and-after versions of changes Input and output data elements Authentication and other data, too Transports all this as a single data object A Document Message in enterprise terms Presentation Business Components Master Detail ProDataSet

© 2008 Progress Software Corporation 21 ProDataSet holds the logical data definition  Lets you separate the logical from the physical data definitions Eliminate schema complexities from logic Shield logic from schema changes Hold calculated fields and other values Business Components Master Detail ProDataSet Data Access

© 2008 Progress Software Corporation 22 Remember that complex schema definition?  Keep this in the Data Access object FIND CarBrand WHERE CarBrandName = cCarBrand. FIND CarModel WHERE CarModel.CarModelName = cCarModel. FIND BaseCode WHERE Category = "style" AND BaseCodeDescription = cCarStyle. cBaseCodeStyleID = BaseCode.BaseCodeID. FIND BaseCode WHERE Category = "color" AND BaseCodeDescription = cCarColor. cBaseCodeColorID = BaseCode.BaseCodeID. FIND BaseCode WHERE Category = "fuel" AND BaseCodeDescription = cCarFuel. cBaseCodeFuelID = BaseCode.BaseCodeID. FIND BaseCode WHERE BaseCode.BaseCodeCategory = "engine" AND BaseCodeDescription = cCarEngine. cBaseCodeEngineID = BaseCode.BaseCodeID. Data Access

© 2008 Progress Software Corporation 23 Logical data definition is in temp-tables and ProDataSets DEFINE TEMP-TABLE ttCarInfo FIELD CarBrand AS CHARACTER FIELD CarModel AS CHARACTER FIELD CarStyle AS CHARACTER FIELD CarColor AS CHARACTER FIELD CarFuel AS CHARACTER FIELD CarEngine AS CHARACTER FIELD CarVIN AS CHARACTER FIELD CarDesc AS CHARACTER FIELD CarDealer AS CHARACTER FIELD CarIsAvail AS LOGICAL FIELD CarAdded AS DATE. DEFINE DATASET dsCarInfo FOR ttCarInfo. Usable business data winds up here Including calculated fields And fields dependent on specific business logic Business Components Presentation

© 2008 Progress Software Corporation 24 Wrap your code and data as a service  How much code? Big enough for one request Small enough to promote reuse  How much data? Enough to get the job done… Not so much as to take over somebody else’s business logic! Can be expressed as a ProDataSet

© 2008 Progress Software Corporation 25 In short: ProDataSets and Your Application Architecture  Document Messages between parts of your application  Organize the data a component uses  Define the scope of a service  Data your user interface uses  Logical schema versus physical data  Data shared with another application Presentation Business Components Data Access Data Sources Common Infrastructure Enterprise Services Master Detail ProDataSet

© 2008 Progress Software Corporation 26 Agenda  What’s Your Starting Point?  Using the OERA to Help You Adapt  ProDataSets and Your Architecture  Opening Your Application to the World  Using Classes in Your Application  Other Areas of Support

© 2008 Progress Software Corporation 27 How else can you use a business service?  As a component to call from.NET ™  As a component to call from Java ™  As a component to expose as a Web service  As a step in a Sonic ™ ESB process

© 2008 Progress Software Corporation 28 Business Components Sharing data with a.NET application…  OpenEdge preserves all the data, All the relationships, All the changes to data, All transparently for you Master Detail ProDataSet Presentation.NET Presentation Layer Master Detail.NET DataSet

© 2008 Progress Software Corporation 29 Business Components Sharing data with a Java application…  OpenEdge preserves all the data, All the relationships, All the changes to data, All transparently for you Master Detail ProDataSet Presentation Java Presentation Layer Master Detail Java SDO

© 2008 Progress Software Corporation 30 Exposing your service as a Web service Enterprise Services

© 2008 Progress Software Corporation 31 Running Web services from your application  Run Web services as if they were ABL procedures  OpenEdge utility generates syntax to paste into your application  Parameters converted

© 2008 Progress Software Corporation 32 ProDataSets as Web service parameters  Convert a ProDataSet (or temp-table) to XML in a single WRITE-XML method Also WRITE-XMLSCHEMA Pass a ProDataSet as a parameter directly to a Web service  Converts XML to a ProDataSet (or temp- table) with or without schema READ-XML and READ-XMLSCHEMA Likewise, receive a parameter directly from a Web service

© 2008 Progress Software Corporation 33 Integrating Web services into your Business Components Business Components Master Detail ProDataSet XML Somebody’s Web service RUN SomebodysService on hWebService (INPUT DATASET dsCarInfo, OUTPUT DATASET dsResultSet).

© 2008 Progress Software Corporation 34 Breaking up your services into maintainable, reusable units  Two business logic variants in one procedure  Separate that into two distinct services /* ManageAmericanCars.p */ ASSIGN ttCarInfo.CarDealer = "#2" ttCarInfo.CarDesc = ttCarInfo.CarBrand + " " + ttCarInfo.CarModel + " " + … ttCarInfo.CarIsAvail = YES ttCarInfo.CarAdded = TODAY. /* ManageForeignCars.p */ ASSIGN ttCarInfo.CarDealer = "#1" ttCarInfo.CarDesc = ttCarInfo.CarColor + " " + ttCarInfo.CarBrand + " " + … ttCarInfo.CarIsAvail = NO ttCarInfo.CarAdded = TODAY. CASE CarBrand: WHEN "Hinda" THEN FIND Dealer WHERE Dealer.DealerName MATCHES "*#1*".

© 2008 Progress Software Corporation 35 Integrating your services into Sonic processes Content-Based Routing

© 2008 Progress Software Corporation 36 Running ABL procedures from Sonic  ABL annotations describe the procedure and its parameters  OpenEdge Architect or ProxyGen can generate the annotations for you  Also creates the special-format descriptor file

© 2008 Progress Software Corporation 37 The OpenEdge Architect editor integrated into Sonic FILE (type="ESB", esboeFilename="%FILENAME%", useReturnValue="false", writeDataSetBeforeImage="false", executionMode="external").

© 2008 Progress Software Corporation 38 In short: OpenEdge supports you in opening your services to the world  ProDataSets as Document Messages As parameters to.NET or Java applications  Run Web services from your application  Expose your ABL procedures as Web services  Make your services part of Sonic ESB processes Business Components Enterprise Services Master Detail ProDataSet Presentation.NET or Java

© 2008 Progress Software Corporation 39 Agenda  What’s Your Starting Point?  Using the OERA to Help You Adapt  ProDataSets and Your Architecture  Opening Your Application to the World  Using Classes in Your Application  Common Infrastructure Support

© 2008 Progress Software Corporation 40 Support for classes in ABL: Inheritance  Architecture is about isolating common behavior and eliminating redundancy  Classes provide inheritance Common business object behavior Common infrastructure support Common support of all kinds Business Components Bus. Comp. Super Class Car Class Dealer Class

© 2008 Progress Software Corporation 41 Inheritance in classes  You can define a class with data and methods  Then you can define a subclass that inherits, overrides, and extends the standard behavior. CLASS AmericanCar INHERITS Car: /* Source file AmericanCar.cls */ METHOD PUBLIC OVERRIDE LOGICAL ReserveCar (INPUT pcCarId AS CHARACTER). SUPER:ReserveCar(INPUT pcCarId). /* Do reserve work for American cars. */ END METHOD. END CLASS. CLASS Car: /* Source file Car.cls */ METHOD PUBLIC LOGICAL ReserveCar (INPUT pcCarId AS CHARACTER). /* Do reserve work for all cars. */ END METHOD. END CLASS.

© 2008 Progress Software Corporation 42 Support for classes: strong typing  Enforcing consistency and correctness  Classes provide strong object typing to assist A variable holds a reference to a specific class The compiler verifies that all references are correct …even cross-checking many classes Interface files also represent programming contracts to enforce Instance of Car Class Instance of Car Class Instance of Dealer Class Instance of Dealer Class

© 2008 Progress Software Corporation 43 Strong typing in classes  Here’s some procedural code:  Will it work at runtime? Who knows?  Here’s some class-based code:  Will it work at runtime? The compiler makes sure it will! DEFINE VARIABLE hProc AS HANDLE. RUN MyProc.p PERSISTENT SET hProc. RUN SomeProc IN hProc(INPUT 5). DEFINE VARIABLE rCar AS CLASS Car. rCar = NEW Car(). rCar:SomeMethod(INPUT 5). MyProc.p SomeProc: Car.cls SomeMethod: MyProc.p SomeFunc: ?

© 2008 Progress Software Corporation 44 D I S C L A I M E R Under Development  This talk includes information about potential future products and/or product enhancements.  What I am going to say reflects our current thinking, but the information contained herein is preliminary and subject to change. Any future products we ultimately deliver may be materially different from what is described here. D I S C L A I M E R

© 2008 Progress Software Corporation 45 Classes for the Advanced UI in OE 10.2  Use.NET controls (both Microsoft and third party) as if they were native to ABL  Controls are expressed as objects  Use ABL classes to build a UI with them Visual Designer in OpenEdge Architect  Integrate these new classes with other ABL classes or procedures

© 2008 Progress Software Corporation 46 In short: Using Classes in Your Architecture  Consider the practical benefits of using classes Definitional inheritance Strong type checking More compiler support for finding errors Using and extending Advanced UI controls

© 2008 Progress Software Corporation 47 Agenda  What’s Your Starting Point?  Using the OERA to Help You Adapt  ProDataSets and Your Architecture  Opening Your Application to the World  Using Classes in Your Application  Other Areas of Support

© 2008 Progress Software Corporation 48 Other Areas of Support  Auditing  Authentication  Structured error handling  Don’t just think about the feature! Think about how it contributes to architecture

© 2008 Progress Software Corporation 49 In Summary  Consider the OpenEdge Reference Architecture as a set of practical guidelines  Make sure you are aware of key OpenEdge 10 features  Map features to their benefit in designing (changes to) your application

© 2008 Progress Software Corporation 50 For More Information, go to…  PSDN to item or category related to session topic  Progress eLearning Community: Title  Documentation: Title

© 2008 Progress Software Corporation 51 Questions ?

© 2008 Progress Software Corporation 52 Thank You

© 2008 Progress Software Corporation 53