ARCH-03: Implementing the OpenEdge™ Reference Architecture – Part 1 John Sadd Progress Fellow and OpenEdge Evangelist.

Slides:



Advertisements
Similar presentations
DEV-2: Getting Started with OpenEdge® Architect – Part I
Advertisements

ARCH-05 Application Prophecy UML 101 Peter Varhol Principal Product Manager.
ARCH-01: Introduction to the OpenEdge™ Reference Architecture Don Sorcinelli Applied Technology Group.
OpenEdge® Object-oriented ABL
ARCH-13 Developing WebSpeed  Applications Chris Skeldon Principal Consultant.
Expert Database Updates and Delivery with Roundtable ® TSMS COMP-04: Presenters: Jeff Ledbetter and Randall Harp Roundtable Product Architects Tugboat.
Page 1 Building Reliable Component-based Systems Chapter 18 - A Framework for Integrating Business Applications Chapter 18 A Framework for Integrating.
1 Integration and Extension Hohmann Chapter 8.
John Sadd Progress Fellow and OpenEdge Evangelist
Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist.
Information systems and databases Database information systems Read the textbook: Chapter 2: Information systems and databases FOR MORE INFO...
Object Oriented Analysis and Design Using the UML
Performance testing of Progress Appservers and a plug-in for Jmeter
ARCH-6: UML Modeling with Enterprise Architect Phillip Magnay Technical Architect.
Deploying Dynamics Applications Thomas Hansen – Director, appSolutions a|s
The Easiest Way to Write Web Applications Jordi Sastre IT Architect, PSC May 2012.
Object Oriented Databases by Adam Stevenson. Object Databases Became commercially popular in mid 1990’s Became commercially popular in mid 1990’s You.
Web Development Challenges and How They are Solved in ps:eScript Matt Verrinder Progress Software UK Internet & Integration Technologies.
ARCH12: QA Considerations - OERA ARCH-12: QA considerations for applications following the OpenEdge Reference Architecture SMAT-Team Tobago Thomas Hutegger.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
How Progress uses Progress Jordi Sastre IT Architect, Progress Software Corporation 10 June 2014.
DEV-07: Increasing Productivity with Tools for Business Logic Gikas Principal Software Engineer.
Introduction. 
© 2009 Progress Software Corporation 1 Click to Edit Master Subtitle Style Overview of OpenEdge® GUI for.NET Release 10.2A Jarmo Nieminen Senior Technical.
ARCH-1: It’s a Tall World After All Taking Application Architecture Seriously John Sadd Progress Fellow and OpenEdge Evangelist Mike Ormerod Technical.
Persistence Store Project Proposal.
Object-oriented programming in the Progress® 4GL 10.1A Beta
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.
The ProDataSet in OpenEdge™ 10
Information System Development Courses Figure: ISD Course Structure.
ARCH-3: Context Management in the OpenEdge® Reference Architecture John Sadd Engineering Fellow and OpenEdge Evangelist.
DEV-05: Ratcheting up your OpenEdge™ Development Productivity Sunil S Belgaonkar Principal Software Engineer.
ARCH-4: The Presentation Layer in the OpenEdge® Reference Architecture Frank Beusenberg Senior Technical Consultant.
2002 Exchange PROGRESS WORLDWIDE Session C10: Modernizing Your Applications John Sadd, Engineering Fellow the Progress Company.
DEV-01 What’s New in Progress Dynamics ® Anthony Swindells Progress Fellow.
 Three-Schema Architecture Three-Schema Architecture  Internal Level Internal Level  Conceptual Level Conceptual Level  External Level External Level.
Andrew S. Budarevsky Adaptive Application Data Management Overview.
SOA-26: Extending Your Application with OpenEdge ® Web Services John Sadd OpenEdge Evangelist.
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.
I Copyright © 2007, Oracle. All rights reserved. Module i: Siebel 8.0 Essentials Training Siebel 8.0 Essentials.
DEV-3: Getting Started with OpenEdge® Architect – Part II David Lund Sr. Training Program Manager Mark Hanley Sr. Manager Development Tools.
A16: proDataSets in the Real World aka blood, sweat and tears revisited Miles Klettke Clever Fellow.
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.
A7: Architecting Your Application in OpenEdge ® 10 Mike Ormerod Applied Architect.
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.
DEV-17: Effective Design and Deployment of OpenEdge® Audit Policies Michael Jacobs Development Architect.
ARCH-5: Service Interfaces in Practice Christian Stiller Technical Architect.
ARCH-04 Before You Begin Your Transformation Project… Phillip Magnay Architect – Applied Technology.
MOVE-15: Leveraging Business Entities, Data Access Objects and ProDataSets with a Progress Dynamics® or ADM2 GUI Peter Judge Principal Software Engineer.
DEV-9: Using the ProDataSet™ in OpenEdge® 10
First Experiences With OpenEdge GUI for.NET Peter van Dam.
ARCH-06 Redesign & Harvest Mike Ormerod - Architect Christian Stiller - Senior Consultant Applied Technology Group.
Be “GUI ready” developing in RPG by Robert Arce from PrismaTech. Be “GUI ready” developing in RPG-ILE Presented by: Robert Arce.
DEV-21: Embracing OpenEdge ® Architect Sunil S Belgaonkar Software Architect.
The Holmes Platform and Applications
Self Healing and Dynamic Construction Framework:
Physical Data Model – step-by-step instructions and template
James Blankenship March , 2018
ARCH-1: Application Architecture made Simple
– JukeBox – transparency, flexibility, speed and comfort!
DEV-11: Architecting Your Application in OpenEdge® 10
Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta
ARCH-2: OpenEdge Reference Architecture (OERA) Latest Thinking
ARCH-14: Power Your Organisation with OpenEdge
Presentation transcript:

ARCH-03: Implementing the OpenEdge™ Reference Architecture – Part 1 John Sadd Progress Fellow and OpenEdge Evangelist

Simplify your business © 2005 Progress Software Corporation2 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1Agenda n Introducing the Sample Implementation n Business Entities and Data Access Objects n Business Logic Issues n Conclusions

Simplify your business © 2005 Progress Software Corporation3 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Separated presentation and integration layers Data access abstracted from storage Common business logic with advanced models OpenEdge Reference Architecture – a layered view Users Presentation Layer Business Servicing Layer Data Access Layer Managed Data Stores Managed Data Stores Unmanaged Data Stores Unmanaged Data Stores Enterprise Services Enterprise Services Integration Layer Modern Application Architecture

Simplify your business © 2005 Progress Software Corporation4 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 What are the Objectives of the Sample Implementation? n To provide an understanding of the OpenEdge Reference Architecture by describing a sample implementation n To help you understand best practices for using OpenEdge features n To motivate architects & lead developers to think about applying the Architecture to their own projects

Simplify your business © 2005 Progress Software Corporation5 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 What Are Non-goals? n Not a new framework n Not intended to be comprehensive or to cover all application use cases n Not intended to be commercialized n Not intended to be used without changes, extensions, and understanding

Simplify your business © 2005 Progress Software Corporation6 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 How Should I Use the Sample Implementation? n Use it to learn Architecture concepts more deeply n Use it to learn how best to use Progress 4GL constructs and other features n Consider it as a potential useful starting point for OpenEdge 10 application development

Simplify your business © 2005 Progress Software Corporation7 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 What Resources are Available? - White Papers and Example Code 1. Introduction 2. Business Entities and Data Access Objects 3. The Service Interface Layer 4. Using Advanced ProDataSet Language Features 5. Using an Unmanaged Data Store 6. Building a.NET™ Interface to Business Entities 7. Advanced Business Logic Issues 8. Context Management 9. Building a WebSpeed® User Interface 10. …

Simplify your business © 2005 Progress Software Corporation8 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 What is in the Sample Implementation Code Base? n Templates directory –Template procedures for BE’s, DAO’s etc. n Support directory –Supporting supers & other procedures n Samples directory –Code samples from the papers –These use sports2000 but there is nothing database-specific about any sample code

Simplify your business © 2005 Progress Software Corporation9 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Where Do I Find It? n The white papers and sample code are on the PSDN website at: –psdn.progress.com/library/product_info/ oera/index.ssp n There will be ongoing updates n Later material will describe best practices for using OpenEdge 10.1 and its OO4GL features

Simplify your business © 2005 Progress Software Corporation10 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1

Simplify your business © 2005 Progress Software Corporation11 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1Agenda n Introducing the Sample Implementation n Business Entities and Data Access Objects n Business Logic Issues n Conclusions

Simplify your business © 2005 Progress Software Corporation12 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 The Business Entity and Data Access Object in the Architecture Users Business Servicing Layer Data Access Layer Managed Data Stores Managed Data Stores Unmanaged Data Stores Unmanaged Data Stores Enterprise Services Enterprise Services Integration Layer Business Entity Data Access Object Presentation Layer

Simplify your business © 2005 Progress Software Corporation13 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 The Business Entity n Manages the logical, internal view of application data –Provides data to the UI and other integration layers –Contains business logic n Data is best represented as ProDataSets and their temp-tables n The Business Entity is the core value of building applications in OpenEdge Business Entity Data Access Object DB UI API logicalphysical

Simplify your business © 2005 Progress Software Corporation14 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 The Data Access Object n Manages the physical data store –Understands the schema or other description of the physical data –Maps between this and the logical view n All references to the physical data store should be confined to the Data Access Object Business Entity Data Access Object DB UI API logicalphysical

Simplify your business © 2005 Progress Software Corporation15 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 ProDataSet The ProDataSet as a Building Block Data-Relation1 CustomerTT 1Lift Line Skiing 2Urpon Frisbee 3Hoops Croquet OrderTT 6101/05/ /19/ /10/93 Database Customer Lift Line Skiing Urpon Frisbee Hoops Croquet Order 15301/01/ /04/ /04/93 Event Logic Dataset:Before-fill Buffer:Before-fill Before-row-fill Row-Add Row-Delete … Data-Source1 Field Map CustNum Name Contact Data-Source2 Field Map OrderNum CustNum OrderDate Query… Q1 for Customer Query… Q2 for Order

Simplify your business © 2005 Progress Software Corporation16 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Constructing the Objects – Temp-table Definitions n Define temp-tables for logical data definitions –Each temp-table in its own include file DEFINE TEMP-TABLE eOrder FIELD OrderNum… DEFINE TEMP-TABLE eOrderLine FIELD OrderNum… FIELD LineNum… etOrder.i etOrderLine.i n Separate physical from logical data definitions

Simplify your business © 2005 Progress Software Corporation17 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Guidelines for Temp-table Definitions n Prefix table name with e –For example n eCustomer n Prefix include files with et –etCustomer.i n Rename fields for consistency or comprehensibility n Remove unwanted: –Fields –Indexes n Add other joined DB fields n Add calculated fields that might be required for ease of use n Add BEFORE-TABLE to end of definition when tracking changes n Don’t use LIKE syntax –Temp-table LIKE database-table –Field LIKE database- field

Simplify your business © 2005 Progress Software Corporation18 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 TEMP-DB Maintenance Tool (10.0B)

Simplify your business © 2005 Progress Software Corporation19 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Constructing the Objects – Data-source Objects n Build Data-Source object procedure –Each maps a temp-table to its physical data etOrder.i etOrderLine.i DEFINE DATA-SOURCE srcOrder FOR QUERY qOrder. ATTACH-DATA-SOURCE() DEFINE DATA-SOURCE srcOrderLine FOR BUFFER OrderLine. ATTACH-DATA-SOURCE() sceOrder.p sceOrderLine.p Application Database

Simplify your business © 2005 Progress Software Corporation20 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Constructing the Objects – ProDataSet Definitions n Define ProDataSets for sets of related data –Each is the basis for a Business Entity DEFINE DATASET dsOrder FOR eOrder, eOrderline… etOrder.i etOrderLine.i dsOrder.i

Simplify your business © 2005 Progress Software Corporation21 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Constructing the Objects – Data Access Object n Build Data Access Object for the DataSet –Manages all the Data-Source objects daOrder.p sceOrderLine.p dsOrder.i sceOrder.p

Simplify your business © 2005 Progress Software Corporation22 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 All the Data Access Components Together Application Database daSupport.p initDataSources: SUPER daOrderValidate.p (optional) eOrderLineModifyBeginTrans: sceOrder.p DEF DATA-SOURCE ATTACH-DATA-SOURCE RowFill handler sceOrderLine.p DEF DATA-SOURCE ATTACH-DATA-SOURCE sceItem.p DEF DATA-SOURCE ATTACH-DATA-SOURCE daOrder.p {dsOrder.i} {daEntity.i}

Simplify your business © 2005 Progress Software Corporation23 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Constructing the Objects – Business Entities n Build a Business Entity for each ProDataSet –Manages business logic on the logical data –Defines the API for access from other objects DEFINE DATASET dsOrder FOR eOrder, eOrderline… BusinessLogic: END PROCEDURE. etOrder.i etOrderLine.i dsOrder.i

Simplify your business © 2005 Progress Software Corporation24 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Business Entity Components Together beOrder.p {dsOrder.i} {beEntity.i} beEntity.i RUN daOrder.p dsOrder.i {etOrder.i} {etOrderLine.i} {etItem.i} DEFINE DATASET… beOrderValidate.p (optional) eOrderLineModifyPreTrans: beSupport.p fetchCustom saveChanges SUPER Data Access Object

Simplify your business © 2005 Progress Software Corporation25 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1Agenda n Introducing the Sample Implementation n Business Entities and Data Access Objects n Business Logic Issues n Conclusions

Simplify your business © 2005 Progress Software Corporation26 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Business Entity Logic Issues n How strictly do I adhere to logic separation –Do I use an API call just for a CAN-FIND? –Do I defer that to a database trigger? n How much standard behavior should be automated by “magic”? n How do I adjust logic to allow for re-use of tables in other ProDataSets? n When do I use static versus dynamic table and ProDataSet references?

Simplify your business © 2005 Progress Software Corporation27 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Accessing other Entities Through their APIs n Avoid direct database access to other tables from your Business Entities FIND eOrder WHERE eOrder.OrderNum = eOrderLine.OrderNum {&NoError}. hCustomer = SIfindRow("Customer", "eCustomer", "CustNum", STRING(eOrder.CustNum)). IF hCustomer:BUFFER-FIELD("Discount"):BUFFER-VALUE <.35 THEN DO: ASSIGN BUFFER eOrderLine:ERROR = YES BUFFER eOrderLine:ERROR-STRING = "Line " + STRING(eOrderLine.LineNum) + ": Changes not allowed … ". RETURN. END.

Simplify your business © 2005 Progress Software Corporation28 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Standard “Magic” Behavior PROCEDURE initDataSources : IF LOOKUP(phDataSet:NAME + "BeforeFill", cEntries) NE 0 THEN phDataSet:SET-CALLBACK-PROCEDURE ("BEFORE-FILL", phDataSet:NAME + "BeforeFill", TARGET-PROCEDURE). IF LOOKUP(phDataSet:NAME + "AfterFill", cEntries) NE 0 THEN phDataSet:SET-CALLBACK-PROCEDURE ("AFTER-FILL", phDataSet:NAME + "AfterFill", TARGET-PROCEDURE). n Callback procedures set up through a naming convention

Simplify your business © 2005 Progress Software Corporation29 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Organizing Logic for Maximum Re-use n Logic that references more than one table in the ProDataSet –This should go into the Data Access Object itself PROCEDURE eOrderLineAfterFill: DEFINE INPUT PARAMETER DATASET FOR dsOrder. DEFINE VARIABLE dTotal AS DECIMAL NO-UNDO. FOR EACH OrderLine WHERE OrderLine.OrderNum = eOrder.OrderNum: dTotal = dTotal + OrderLine.ExtendedPrice. END. eOrder.OrderTotal = dTotal. END PROCEDURE.

Simplify your business © 2005 Progress Software Corporation30 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Static Versus Dynamic Code PROCEDURE eItemAfterRowFill: DEFINE INPUT PARAMETER DATASET-HANDLE phDataSet. …. hItemName = phDataSet:GET-BUFFER- HANDLE("eItem"):BUFFER-FIELD("ItemName"). DO iType = 1 TO NUM-ENTRIES(cItemTypes): cType = ENTRY(iType, cItemTypes). IF INDEX(hItemName:STRING-VALUE, cType) NE 0 THEN hItemName:BUFFER-VALUE = REPLACE(hItemName:BUFFER-VALUE, cType, cType). END. END PROCEDURE. n Dynamic table reference allows reuse

Simplify your business © 2005 Progress Software Corporation31 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1Agenda n Introducing the OpenEdge Reference Architecture Implementation n Business Entities and Data Access Objects n Business Logic Issues n Conclusions

Simplify your business © 2005 Progress Software Corporation32 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 In Summary n View the sample implementation materials as a basis for discussion and learning n Use parts that are useful n Extend or replace for your own purposes n Expect it continue to grow and change n Don’t expect it to be completed or formally supported

Simplify your business © 2005 Progress Software Corporation33 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1Questions?

Simplify your business © 2005 Progress Software Corporation34 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1 Thank you for your time!

Simplify your business © 2005 Progress Software Corporation35 ARCH-03 – Implementing the OpenEdge Reference Architecture – Part 1