Presentation is loading. Please wait.

Presentation is loading. Please wait.

DEV-11: Architecting Your Application in OpenEdge® 10

Similar presentations


Presentation on theme: "DEV-11: Architecting Your Application in OpenEdge® 10"— Presentation transcript:

1 DEV-11: Architecting Your Application in OpenEdge® 10
John Sadd OpenEdge Evangelist

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 DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

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 + " " +… DEV-11: Architecting Your Application in OpenEdge 10

5 So what happens when the UI requirements change?
Update CarBrand CarModel CarStyle CarColor CarFuel CarEngine CarVIN WITH FRAME UpdFrame. Extracting and changing UI references Identifying what elements were displayed, created or updated and in what order Extracting implicit business logic DEV-11: Architecting Your Application in OpenEdge 10

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 + " " +… DEV-11: Architecting Your Application in OpenEdge 10

7 What happens as your logic grows?
CASE CarBrand: WHEN "Hinda" THEN FIND Dealer WHERE Dealer.DealerName MATCHES "*#1*". 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 DEV-11: Architecting Your Application in OpenEdge 10

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 + " " +… DEV-11: Architecting Your Application in OpenEdge 10

9 How does your database schema affect your application code?
FIND BaseCode WHERE Category = "style“ AND Description = CarStyle. Car.BaseCodeStyleID = BaseCode.BaseCodeID. Schema complexities Many places in the code Schema changes Relational keys DEV-11: Architecting Your Application in OpenEdge 10

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 + " " +… DEV-11: Architecting Your Application in OpenEdge 10

11 What happens to business logic variants?
IF Dealer.DealerName MATCHES "*#1*" THEN Car.CarDescription = cCarColor + " " +… ELSE IF Dealer.DealerName MATCHES "*#2*" THEN Car.CarDescription = cCarBrand + " " +… Duplicating and extending the logic When the code gets out of control Maintaining each variant DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

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… Open Edge Reference Architecture (OERA) provides a guideline of how a Web service can fit into the framework of an application. A Web service definition is one type of physical implementation for the logical definition of a Service Oriented Architecture (SOA). DEV-11: Architecting Your Application in OpenEdge 10

14 OpenEdge Reference Architecture
RUN Inventory_Service Presentation Business Components Data Access Data Sources Common Infrastructure Enterprise Services AUDIT-CONTROL… IF CAN-DO… Open Edge Reference Architecture (OERA) provides a guideline of how a Web service can fit into the framework of an application. A Web service definition is one type of physical implementation for the logical definition of a Service Oriented Architecture (SOA). DEV-11: Architecting Your Application in OpenEdge 10

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! Common Infrastructure Business Components DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

17 Continuing the split Sharing definitions Identifying the user
What data for the UI What data for the business logic Data Definitions User Interface Client-Side Logic Client Authentication Business Logic Database Access Schema Defs Server DEV-11: Architecting Your Application in OpenEdge 10

18 Common Infrastructure
Completing the split Presentation Business Components Data Access Data Sources Common Infrastructure Enterprise Services Data Definitions User Interface Client-Side Logic Authentication Business Logic Database Access Schema Defs DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

20 ProDataSet™ bridges the gap from client to server
Presentation Master Detail ProDataSet Business Components 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 DEV-11: Architecting Your Application in OpenEdge 10

21 ProDataSet holds the logical data definition
Business Components Master Detail ProDataSet Data Access 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 DEV-11: Architecting Your Application in OpenEdge 10

22 Remember that complex schema definition?
Data Access 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. DEV-11: Architecting Your Application in OpenEdge 10

23 Logical data definition is in temp-tables and ProDataSets
Presentation 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 Business Components Including calculated fields And fields dependent on specific business logic DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

28 Sharing data with a .NET application…
Master Detail .NET DataSet Presentation .NET Presentation Layer Master Detail ProDataSet Business Components OpenEdge preserves all the data, All the relationships, All the changes to data, All transparently for you DEV-11: Architecting Your Application in OpenEdge 10

29 Sharing data with a Java application…
Master Detail Java SDO Presentation Java Presentation Layer Master Detail ProDataSet Business Components OpenEdge preserves all the data, All the relationships, All the changes to data, All transparently for you DEV-11: Architecting Your Application in OpenEdge 10

30 Exposing your service as a Web service
Enterprise Services DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

33 Integrating Web services into your Business Components
RUN SomebodysService on hWebService (INPUT DATASET dsCarInfo, OUTPUT DATASET dsResultSet). XML Master Detail ProDataSet Business Components Somebody’s Web service DEV-11: Architecting Your Application in OpenEdge 10

34 Breaking up your services into maintainable, reusable units
Two business logic variants in one procedure Separate that into two distinct services CASE CarBrand: WHEN "Hinda" THEN FIND Dealer WHERE Dealer.DealerName MATCHES "*#1*". /* 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. DEV-11: Architecting Your Application in OpenEdge 10

35 Integrating your services into Sonic processes
Content-Based Routing DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

37 The OpenEdge Architect editor integrated into Sonic Workbench
@openapi.openedge.export FILE (type="ESB", esboeFilename="%FILENAME%", useReturnValue="false", writeDataSetBeforeImage="false", executionMode="external"). DEV-11: Architecting Your Application in OpenEdge 10

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 Presentation .NET or Java Enterprise Services Master Detail ProDataSet Business Components DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

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 Bus. Comp. Super Class Business Components Car Class Dealer Class DEV-11: Architecting Your Application in OpenEdge 10

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 Car: /* Source file Car.cls */ METHOD PUBLIC LOGICAL ReserveCar (INPUT pcCarId AS CHARACTER). /* Do reserve work for all cars. */ END METHOD. END CLASS. 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. DEV-11: Architecting Your Application in OpenEdge 10

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 Dealer Class DEV-11: Architecting Your Application in OpenEdge 10

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

44 Under Development D I S C L A I M E R
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 DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

48 Other Areas of Support Auditing Authentication
Structured error handling Don’t just think about the feature! Think about how it contributes to architecture DEV-11: Architecting Your Application in OpenEdge 10

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 DEV-11: Architecting Your Application in OpenEdge 10

50 For More Information, go to…
PSDN <URL> to item or category related to session topic Progress eLearning Community: Title Documentation: DEV-11: Architecting Your Application in OpenEdge 10

51 Relevant Exchange Sessions
Session-ID: Session Title DEV-11: Architecting Your Application in OpenEdge 10

52 ? Questions DEV-11: Architecting Your Application in OpenEdge 10

53 Thank You DEV-11: Architecting Your Application in OpenEdge 10

54 DEV-11: Architecting Your Application in OpenEdge 10

55 Common Infrastructure
OERA component slide Presentation Enterprise Services Common Infrastructure Business Components Data Access Data Sources DEV-11: Architecting Your Application in OpenEdge 10


Download ppt "DEV-11: Architecting Your Application in OpenEdge® 10"

Similar presentations


Ads by Google