exchange in real time dev-06: the prodataset in openedge™ 10 john sadd progress fellow and...

47
Exchange in Real Time Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

Post on 15-Jan-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

Exc

hang

e in

Rea

l Tim

eE

xcha

nge

in R

eal T

ime

DEV-06:The ProDataSet inOpenEdge™ 10

DEV-06:The ProDataSet inOpenEdge™ 10

John SaddProgress Fellow and OpenEdge Evangelist

Page 2: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation2Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Agenda

Distributed Data Management in Version 9 ProDataSet Overview Syntax Specifics and Demo ProDataSet Directions

Page 3: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation3Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Temp-Table Parameters

Define a temp-table – Based on a database table or not

Populate the temp-table on the server– One row or many

Pass the temp-table as a parameter– One parameter for each table

Modify the temp-table on the client and pass it back

Page 4: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation4Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Temp-Table Limitations

Separate table and parameter for each two-dimensional data definition

Parent-child and other relationships need multiple parameters

No standard mechanism to record changes

Page 5: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation5Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

SDOs and SBOs

SmartDataObjects in the ADM and Progress Dynamics® handle:– Distributed data management– Keeping track of changes– Automated update support – Standard events for validation and

business logic SmartBusinessObjects do the same for

multiple related tables

Page 6: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation6Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

The direction

Push valuable SDO/SBO behavior down into the 4GL

Define a core 4GL object to represent complex data relationships– One handle, one parameter

Associate validation and other business logic– Built-in events

Map directly to data objects on other platforms

Page 7: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation7Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Agenda

Distributed Data Management in Version 9 ProDataSet Overview Syntax Specifics and Demo ProDataSet Directions

Page 8: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation8Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

ProDataSet

The ProDataSet

Data-Relation1

CustomerTT

1 Lift Line Skiing2 Urpon Frisbee3 Hoops Croquet

OrderTT

6 1 01/05/9336 1 01/19/9379 1 02/10/93

Database

Customer

Lift Line SkiingUrpon FrisbeeHoops Croquet

Order

1 53 01/01/932 81 01/04/933 66 01/04/93

Event LogicDataset:Before-fillBuffer:Before-fillBefore-row-fillRow-AddRow-Delete…

Data-Source1Field Map

CustNumNameContact

Data-Source2Field Map

OrderNumCustNum

OrderDate

Query…Q1 forCustomer

Query…Q2 forOrder

Page 9: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation9Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

OpenEdgeBusiness Logic

PO ProDataSet

The Bigger Picture – Today and Tomorrow

Purchase Order Business Logic

HeaderData

DetailData

OtherData

PurchaseOrderProxy

.NET User Interface

Jonas Grumby

110 Desert Isle Path

Minnow, HI

OK

Cancel

C#

OpenEdge.NET Interface

ProDataSets become a driving force in OpenEdge Applications

4GL or

WebSpeed

Interface

WebClient / HTML

User InterfaceJonas Grumby

110 Desert Isle Path

Minnow, HI

OK

Cancel

OpenEdge4GL Interface

4GL

OpenEdgeWeb Services Interface

Page 10: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation10Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

ProDataSet to ADO.NET DataSet

ProDataSet is a Progress in-memory data store

ProDataSet maps directly to an ADO.NET DataSet, allowing you to:– Design a .NET™ interface in terms of .NET

DataSets

– Pass data back and forth to Progress AppServer™

Page 11: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation11Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Agenda

Distributed Data Management in Version 9 ProDataSet Overview Syntax Specifics and Demo Futures

Page 12: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation12Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

A ProDataSet is made of Temp-Tables

Define temp-tables in the usual way

DEFINE TEMP-TABLE ttOrder

/* fields from Order db table */

FIELD OrderTotal AS DECIMAL

FIELD CustName LIKE Customer.Name

FIELD RepName LIKE SalesRep.RepName.

DEFINE TEMP-TABLE ttOrderLine…

DEFINE TEMP-TABLE ttItem…

Page 13: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation13Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Define the DataSet

Define the DataSet in terms of the temp-tables it combines

DEFINE DATASET dsOrder FOR ttOrder, ttOline, ttItem

DATA-RELATION OrderLine FOR ttOrder, ttOline

RELATION-FIELDS (OrderNum, OrderNum)

DATA-RELATION LineItem FOR ttOline, ttItem

RELATION-FIELDS (ItemNum, ItemNum) REPOSITION.

Page 14: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation14Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Data-Relations

Data-Relations define the relationship between parent-child tables

The Relation-Fields define fields in parent and child to use for selection

…DATA-RELATION OrderLine FOR ttOrder, ttOline

RELATION-FIELDS (OrderNum, OrderNum)…

Relation-Fields are used to determine how to populate the DataSet by default

They also tell Progress how to navigate the DataSet by default

Page 15: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation15Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Populating with Data-Relations

When a DataSet is populated, Progress retrieves children of the current parent

…DATA-RELATION OrderLine FOR ttOrder, ttOline

RELATION-FIELDS (OrderNum, OrderNum)…

ProDataSet

Data-Relation

OrderTT

6 1 01/05/9336 1 01/19/9379 1 02/10/93

OrderLineTT

6 1 000096 2 000096 3 00011

36 1 0000936 2 0000936 3 00011

Page 16: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation16Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Navigating with Data-Relations

When a DataSet is navigated, Progress filters on children of the current parent

…DATA-RELATION OrderLine FOR ttOrder, ttOline

RELATION-FIELDS (OrderNum, OrderNum)…

ProDataSet

Data-Relation

OrderTT

6 1 01/05/9336 1 01/19/9379 1 02/10/93

OrderLineTT

6 1 000096 2 000096 3 00011

36 1 0000936 2 0000936 3 00011

Page 17: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation17Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Defining Data-Sources

You can define a Data-Source for each temp-table buffer in the DataSet

Each Data-Source can define database buffers or a query or both

Data-Source is separate from any DataSet

Database

Order OrderLine

1 53 01/01/932 81 01/04/933 66 01/04/93

Data-Source

SrcOrder

Data-Source

SrcOline

Query…Q1 forOrder

Query…Q2 forOrderLine

1 53 01/01/932 81 01/04/933 66 01/04/93

ProDataSetOrderTT

OrderLineTT

Page 18: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation18Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Defining a Data-Source with a Query Define a query for a top-level table

– For example, which Order(s) to start with

– Or to define a join between buffers

DEFINE QUERY qOrder FOR Order, Customer, SalesRep.

DEFINE DATA-SOURCE srcOrder FOR QUERY qOrder Order KEYS (OrderNum), Customer KEYS (CustNum), SalesRep KEYS (SalesRep).

QUERY qOrder:QUERY-PREPARE("FOR EACH Order WHERE Order.OrderNum = " + STRING(iOrderNum) + ", FIRST Customer OF Order, FIRSTSalesRep OF Order").

Page 19: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation19Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Defining a Data-Source without a Query If there’s a Data-Relation, its fields can tell Progress

how to construct a query

DEFINE DATA-SOURCE srcOline FOR OrderLine

KEYS (OrderNum).

…DATA-RELATION OrderLine FOR ttOrder, ttOline

RELATION-FIELDS (OrderNum, OrderNum)…

ProDataSet

OrderLineTTData-Relation

OrderTT

6 1 01/05/9336 1 01/19/9379 1 02/10/93

6 1 000096 2 000096 3 00011

Page 20: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation20Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Attaching Data-Sources

Data-Sources are defined separately from the DataSet– You can attach a particular Data-Source

without changing the DataSet definition

– Data-Sources do not travel with the DataSet

DatabaseOrder

Data-Source

SrcOrderQuery…

Q1 forOrder

1 53 01/01/932 81 01/04/933 66 01/04/93

ProDataSetOrderTT

6 1 01/05/9336 1 01/19/9379 1 02/10/93

Page 21: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation21Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

ATTACH-DATA-SOURCE Method Relates a Data-Source to a DataSet buffer Optional arguments:

– Field mapping for fields with different names– Except-list to skip unwanted fields, or– Include-list to include only certain fields

BUFFER ttOrder:ATTACH-DATA-SOURCE

(DATA-SOURCE srcOrder:HANDLE,

"Customer.Name,CustName").

BUFFER ttOline:ATTACH-DATA-SOURCE

(DATA-SOURCE srcOline:HANDLE).

BUFFER ttItem:ATTACH-DATA-SOURCE

(DATA-SOURCE srcItem:HANDLE).

Page 22: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation22Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Populating a ProDataSet

Use the FILL method to populate the DataSet FILL on the DataSet fills every table starting

with top-level buffers FILL on a buffer fills that table and its

descendents FILL-MODE

– NO-FILL – skip this table– EMPTY – empty the table first– APPEND – add more records to the table– MERGE – add recs & eliminate dups– REPLACE – replace existing recs

Page 23: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation23Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Event Callback Procedures

You can define event procedures for:– Before and After FILL of the ProDataSet– Before and After FILL of any temp-table

buffer– Before and After FILL of any record

Use ProDataSet events to prepare queries, attach Data-Sources, etc.

Use Buffer events to manipulate the table Use Record events to populate calculated

fields You can use these events when

there is no Data-Source at all

Page 24: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation24Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Record-level Event Procedure

Fills a calculated OrderTotal fieldhBuff:SET-CALLBACK-PROCEDURE

("AFTER-ROW-FILL","postRecordFill",THIS-PROCEDURE).

PROCEDURE postRecordFill:

DEFINE INPUT PARAMETER DATASET FOR dsOrder.

hBuff = hDset:GET-BUFFER-HANDLE(“ttOrder”). FOR EACH OrderLine WHERE OrderLine.OrderNum = INTEGER(hBuff:BUFFER-FIELD("OrderNum"):BUFFER-VALUE): dTotal = dTotal + OrderLine.ExtendedPrice.

END. hBuff:BUFFER-FIELD("OrderTotal"):BUFFER-VALUE = dTotal. END PROCEDURE.

Page 25: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation25Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

ProDataSet demo…

Page 26: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation26Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Passing a ProDataSet as a Parameter

You can pass a DataSet parameter as:– DATASET – static reference like TABLE for

temp-tables

– DATASET-HANDLE – dynamic reference to the DataSet and its definition, like TABLE-HANDLE for a temp-table

– HANDLE – passes a simple DataSet handle to a local procedure

Note!– Within a single session DataSet parameters

can be passed BY-REFERENCE

Page 27: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation27Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Local DataSet ParameterRUN OrderDset.p ON hSession

(INPUT iOrderNum,

OUTPUT DATASET dsOrder

BY-REFERENCE).

/* OrderDset.p -- Test proc for Order Dataset */

{dsOrderTT.i}

{dsOrder.i}

DEFINE INPUT PARAMETER iOrderNum AS INTEGER.

DEFINE OUTPUT PARAMETER DATASET FOR dsOrder.

ProDataSetOrderTT

6 1 01/05/9336 1 01/19/9379 1 02/10/93

Page 28: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation28Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Remote DataSet Parameter

RUN OrderDset.p ON hSession(INPUT iOrderNum, OUTPUT DATASET dsOrder

BY-REFERENCE).

/* OrderDset.p */

DEFINE OUTPUT PARAMETER

DATASET FOR dsOrder.

ProDataSetOrderTT

6 1 01/05/9336 1 01/19/9379 1 02/10/93

ProDataSetOrderTT

6 1 01/05/9336 1 01/19/9379 1 02/10/93

Page 29: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation29Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Dynamic ProDataSets

Every element of a ProDataSet can be dynamic– CREATE DATASET

– ADD-BUFFER()

– ADD-RELATION() A Data-Source can also be dynamic:

– CREATE DATA-SOURCE And a DataSet can use dynamic temp-tables

– CREATE TEMP-TABLE Attributes and methods manipulate the

DataSet through its handle

Page 30: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation30Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Updating Through the ProDataSet

ProDataSet tables have a companion before-image temp-table to record updates (add/change/delete)– Used to pass changes to the server to be

made in the Data-Source

– Maps to .NET support for update versions

Page 31: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation31Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Before-Image Table for a DataSet

Original values for every modified record

ProDataSet

Data-Relation

OrderTT

6 1 01/05/9336 1 01/19/9379 1 02/10/93

OrderLineTT

6 1 000096 2 000106 3 00011 6 4 00077

0 0 00000 A 6 2 00009 M 6 5 00022 D

Initial values for every added record Original values for every deleted record

Before-Table

Page 32: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation32Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Saving Changes To The Database

Use ATTACH-DATA-SOURCE to reattach the DataSet to the database tables for it

SAVE-ROW-CHANGES method for saving a row to the database– Uses the before-table for optimistic locking

– Allows full control in the event of a conflict ERROR, ERROR-STRING, REJECTED,

DATA-SOURCE-MODIFIED attributes

Page 33: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation33Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

ProDataSet update demo…

Page 34: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation34Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Agenda

Distributed Data Management in Version 9 ProDataSet Overview Syntax Specifics and Demo ProDataSet Directions

Page 35: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation35Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Enhancements in OpenEdge 10.0B and 10.0B01

COPY-DATASET method enhancements– Also COPY-TEMP-TABLE – Behavior changed to allow copies between

non-identical tables and DataSets GET-CHANGES and MERGE-CHANGES

– include parents of modified rows FILL-MODE “REPLACE”

– Refreshes rows already in the tables– Slower than MERGE because it requires

FINDing each row as it is added to the temp-table

Page 36: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation36Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Enhancements in OpenEdge 10.0B and 10.0B01 -- continued

Additional events to support data retrieval transparency– OFF-END for a ProDataSet query

– FIND-FAILED for a FIND on a buffer Extended support for data batching

– BATCH-SIZE attribute for a buffer

– LAST-BATCH attribute signals end of data

– NEXT-ROWID for repositioning a query See white paper for examples:

– psdn.progress.com/library/product_info/oera/index.ssp

Page 37: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation37Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Page 38: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation38Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Data batching demo…

Page 39: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation39Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

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

Page 40: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation40Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

ProDataSet Features in OpenEdge 10.1

Direct to-or-from XML conversion– This supports ProDataSets as parameters to

Web services Mapping from ProDataSets to Java™ SDOs REFERENCE-ONLY to use called

procedure’s ProDataSet instance– Also parameter passing BY-REFERENCE for

temp-tables

Page 41: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation41Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

ProDataSets address these three key OpenEdge goals

3 Strategic Elements

Process Centric Design

Business Logic

Capabilities

SOAEnabled

User Interface

Independence

Page 42: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation42Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

In Conclusion…

The ProDataSet is a key part of the future of 4GL applications

It is part of a focus on building complex data definitions and business logic in the 4GL

The ProDataSet is a standards-conformant object that will integrate with .NET and Web services as part of a global Service-Oriented Architecture

Page 43: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation43Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Additional Resources

Expert Series book: Using ProDataSets– Now available through amazon.com!

PSDN white paper on Using Advanced ProDataSet Language Features– Part of a series on implementing the OERA

Two-day instructor-led or self-study course: Using ProDataSets

OpenEdge online documentation

Page 44: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation44Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Page 45: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation45Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Questions?

Page 46: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation46Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10

Thank you for your time!

Page 47: Exchange in Real Time DEV-06: The ProDataSet in OpenEdge™ 10 John Sadd Progress Fellow and OpenEdge Evangelist

© 2005 Progress Software Corporation47Sim

plify

you

r bu

sin

ess

Sim

plify

you

r bu

sin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plif

y yo

ur b

usin

ess

Sim

plify

you

r B

usi

nes

sS

impl

ify y

our

Bu

sin

ess

DEV-06: The ProDataSet in OpenEdge 10