0% found this document useful (0 votes)
58 views51 pages

Dev-11: Leveraging Prodatasets in An Open Environment: Robin Brown

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views51 pages

Dev-11: Leveraging Prodatasets in An Open Environment: Robin Brown

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 51

DEV-11: Leveraging ProDataSets in an

Open Environment

Robin Brown
Principal Software Engineer
Progress® DataSets

Header Progress
 Business “Objects” Data DataSet
• Logical grouping of
Detail
related data Data

 In-memory cache of
data
Progress Progress
 Data source separate DataSource DataSource

from DataSet
Table
• Data abstraction 1 6 01/05/1993

2 36 01/19/1993

3 79 02/10/1993

DEV-11 ProDataSets in an Open Environment 2 © 2006 Progress Software Corporation


ProDataSets in the
OpenEdge® Reference Architecture
ABL Client
.NET™ Open Client Progress®
ADO.NET DataSet ProDataSet™

NEW!

Presentation Enterprise Services

Common Infrastructure
Java™ Open Client
Java SDO
Business Services

Data Access
AppServer™
ABL
Data Sources
Progress®
ProDataSet™

DEV-11 ProDataSets in an Open Environment 3 © 2006 Progress Software Corporation


ProDataSets in the
OpenEdge Reference Architecture
AppServer™
ABL
Progress Presentation Enterprise Services

Common Infrastructure
DataSet

Business Services
ABL to
Database Data Access
Progress
DataSet
Data Sources

(XML)
ABL
READ-XML ( )
WRITE-XML( )
Progress NEW!
DataSet

DEV-11 ProDataSets in an Open Environment 4 © 2006 Progress Software Corporation


ProDataSets in the
OpenEdge Reference Architecture
.NET™ Open Client
ADO.NET DataSet
This Session’s Focus

Java™ Open Client Presentation Enterprise Services

Common Infrastructure
Java SDO
Business Services

Data Access

ABL
READ-XML ( ) Data Sources
WRITE-XML( )
Progress
DataSet

DEV-11 ProDataSets in an Open Environment 5 © 2006 Progress Software Corporation


Agenda

 Overview of ProDataSet and OpenClient


 .NET OpenClient / DataSet
 Java OpenClient / SDO
 ProDataSets to/from XML

DEV-11 ProDataSets in an Open Environment 6 © 2006 Progress Software Corporation


Progress DataSets Defined

 One or more Temp-Table ProDataSet


buffers Temp-Table
• Default or user-defined Fields
 Relationships defined between Indexes
tables

Data-Relations
• Field-mapping Temp-Table
Custnum  Cust_num Fields
 Pass as parameters Indexes
• Local
– APPEND option Temp-Table
– BY-REFERENCE option Fields
• Remote

DEV-11 ProDataSets in an Open Environment 7 © 2006 Progress Software Corporation


Open Client and ProxyGen

App
Object

Proc
ABL Object
Business Sub-
Logic AppObj
(r-code)

.NET Java Web Services


Proxy Code Proxy Code Mapping
file
(.wsm)

DEV-11 ProDataSets in an Open Environment 8 © 2006 Progress Software Corporation


10.1A - OpenAPI NEW!

 Run arbitrary procedure on AppServer


without proxy
 New Classes
• Progress.Open4GL.Proxy.* (.Net)
• com.progress.open4gl.javaproxy.* (Java)

OpenAppObject OpenProcObject

ParamArray

DEV-11 ProDataSets in an Open Environment 9 © 2006 Progress Software Corporation


Open Client Architecture
.NET / Java
Client OpenEdge AppServer

App
Proxy Server
Open Client Internet
Internet Broker
Client
App Runtime /Intranet
Object /Intranet
App Proc AppServer:
Proc ABL
Object
Object
HTTP/S:
Sub-
AppObj

Name Database
.Net Framework / JRE Server Server
Communication
Protocol

DEV-11 ProDataSets in an Open Environment 10 © 2006 Progress Software Corporation


Agenda

 Overview of ProDataSet and OpenClient


 .NET OpenClient / DataSet
 Java OpenClient / SDO
 ProDataSets to/from XML

DEV-11 ProDataSets in an Open Environment 11 © 2006 Progress Software Corporation


ADO.NET DataSets Defined

ADO.NET DataSet
 One or more DataTables DataTable
• DataColumns define fields
DataColumns
• DataConstraints define
integrity rules DataConstraint

DataRelations
DataTable
 Relationships defined
between tables DataColumns
• Map fields between tables DataConstraint

 Share many features of DataTable


ProDataSet DataColumns

DEV-11 ProDataSets in an Open Environment 12 © 2006 Progress Software Corporation


Mapping ProDataSets to .Net DataSets

ABL Component .Net Object


ProDataSet DataSet
Temp-Table DataTable
Buffer (record) DataRow
Before-Table GetChanges() on DataSet

Field DataColumn
Data-Relation DataRelation
Unique/Primary Index DataConstraint

DEV-11 ProDataSets in an Open Environment 13 © 2006 Progress Software Corporation


10.1A Completes the ABL-.Net Mapping

 INITIAL Value NEW!

 XML attributes
 UNDO
 DATA-SOURCE-MODIFIED
 REJECTED

DEV-11 ProDataSets in an Open Environment 14 © 2006 Progress Software Corporation


Using ProDataSets in a
.NET Open Client environment
DataSets on both ends of the wire

ADO .Net Progress


DataSet DataSet

DEV-11 ProDataSets in an Open Environment 15 © 2006 Progress Software Corporation


Passing DataSets in .Net

Static versus Dynamic


Progress
.NET Client
AppServer
Static
.Net
Data Static
Typed Only DataSet
DataSet
Dynamic

ADO .Net Schema Dynamic


DataSet & Data DataSet

DEV-11 ProDataSets in an Open Environment 16 © 2006 Progress Software Corporation


Procedure using Static ProDataSet
ABL code

/* StaticDs.p */
{dsOrderDef.i}
DEF INPUT PARAMETER piGE AS INT.
1 DEF INPUT PARAMETER piLE AS INT.
DEF OUTPUT PARAMETER DATASET FOR dsOrder.

2 DATA-SOURCE srcOrd:FILL-WHERE-STRING =
“WHERE Order.OrderNum GE ” + STRING(piGE) +
“AND Order.OrderNum LE ” + STRING(piLE).

/* Fill the dsOrder DataSet */


3 DATASET dsOrder:FILL().

DEV-11 ProDataSets in an Open Environment 17 © 2006 Progress Software Corporation


Method using Static .Net DataSet

.NET C# code

using nsOrderDS.StrongTypesNS;
1 dsOrderDataSet dsOrders;

try
{
2 appObj.StaticDS
(iLowRange, iHighRange, out dsOrders);
...

DEV-11 ProDataSets in an Open Environment 18 © 2006 Progress Software Corporation


Agenda

 Overview of ProDataSet and OpenClient


 .NET OpenClient / DataSet
 Java OpenClient / SDO
 ProDataSets to/from XML

DEV-11 ProDataSets in an Open Environment 19 © 2006 Progress Software Corporation


Overview
Java Service Data Objects (SDO)

Java Specification Request (JSR) 235

 Technical description of Java SDO’s


published by BEA and IBM
• Java SDO Technology (JSR 235)
– http://jcp.org/en/jsr/detail?id=235

 Reference Implementation
• Eclipse Modeling Framework (EMF 2.0.1)
– http://www.eclipse.org/emf/sdo.php

DEV-11 ProDataSets in an Open Environment 20 © 2006 Progress Software Corporation


Java SDO Objects

 DataObject
• Disconnected view of structured data
• Holds data as a set of properties
• Relational data
– Reference to another DataObject

 DataGraph
• Graph (or tree) of DataObjects
– Single root DataObject
• Typical unit of transfer
• Contains a ChangeSummary object

DEV-11 ProDataSets in an Open Environment 21 © 2006 Progress Software Corporation


Java SDO Objects (cont’d)

 ChangeSummary
• Captures changes from all DataObjects
in a DataGraph
• Applied back to data source using Data
Mediator Service

 Data Mediator Service NOT needed


• Data sent to/from the OpenEdge
AppServer

DEV-11 ProDataSets in an Open Environment 22 © 2006 Progress Software Corporation


Java SDO Implementation Issues

 Limitations of Java SDO design


• Relationship support
– No meta data to describe relationship
• No GregorianCalendar support
– Needed to map to DATETIME(-TZ) fields
• Inefficient access to DataGraph changes
– Need changes-only DataGraph for AppServer

ProDataGraph implementation overcomes limitations

DEV-11 ProDataSets in an Open Environment 23 © 2006 Progress Software Corporation


Primary Progress Classes (extensions)
Java classes com.progress.open4gl.*
 ProDataGraph
– Extends Java SDO DataGraph

 ProDataGraphMetaData
– Specifies the ProDataGraph meta data

 ProDataObject
– Extends Java SDO DataObject

 ProDataObjectMetaData
– Specifies the ProDataObject meta data

 ProChangeSummary
– Extends Java SDO ChangeSummary

 ProDataRelationMetaData
– Resolves missing relational metadata support

DEV-11 ProDataSets in an Open Environment 24 © 2006 Progress Software Corporation


Mapping ProDataSets to Java SDOs

ABL Component Java Object


ProDataSet ProDataGraph
Temp-Table List of ProDataObjects
Buffer (record) ProDataObject
Before-Table getChanges() on
ProChangeSummary
Field Property in ProDataObject
Data-Relation ProDataRelationMetaData
Index ProDataObjectMetaData

DEV-11 ProDataSets in an Open Environment 25 © 2006 Progress Software Corporation


Passing DataSet Parameters in Java

Same for Static AND Dynamic


OUTPUT
INPUT-OUTPUT
INPUT
ProDataGraphHolder

ProDataGraph
ProDataGraph

DEV-11 ProDataSets in an Open Environment 26 © 2006 Progress Software Corporation


Procedure using Static ProDataSet
ABL code

/* StaticDs.p */
{dsOrderDef.i}
DEF INPUT PARAMETER piGE AS INT.
DEF INPUT PARAMETER piLE AS INT.
DEF OUTPUT PARAMETER DATASET FOR dsOrder.

DATA-SOURCE srcOrd:FILL-WHERE-STRING =
“WHERE Order.OrderNum GE ” + STRING(piGE) +
“AND Order.OrderNum LE ” + STRING(piLE).

/* Fill the dsOrder DataSet */


DATASET dsOrder:FILL().

DEV-11 ProDataSets in an Open Environment 27 © 2006 Progress Software Corporation


Method using ProDataGraph

Java Client code


import com.progress.open4gl.*;
import commonj.sdo.*;
1 ProDataGraphHolder dgHolder =
new ProDataGraphHolder();
2 ProDataGraph dg = null;
try
{
3 appObj.StaticDS
(iLowRange, iHighRange, dgHolder);
4 dg = dgHolder.getProDataGraphValue();
5 List rows = dg.getProDataObjects(“Order");
...

DEV-11 ProDataSets in an Open Environment 28 © 2006 Progress Software Corporation


Updating a DataSet

 ProChangeSummary object tracks changes


• Works similar to ProDataSet
– Tracks modified, added, deleted rows
– Keeps track of original versions

DEV-11 ProDataSets in an Open Environment 29 © 2006 Progress Software Corporation


Demo

DEV-11 ProDataSets in an Open Environment 30 © 2006 Progress Software Corporation


Temp-Table Parameters
Cannot mix ProDataGraph and java.sql.ResultSet

DEV-11 ProDataSets in an Open Environment 31 © 2006 Progress Software Corporation


New .jar files for CLASSPATH

Location: <install-dir>/java/ext/

 SDO jar files


• common.jar
• commonj.sdo.jar
• ecore.jar
• ecore.change.jar
• ecore.resources.jar
• ecore.sdo.jar
• ecore.xml.jar

DEV-11 ProDataSets in an Open Environment 32 © 2006 Progress Software Corporation


Agenda

 Overview of ProDataSet and OpenClient


 .NET OpenClient / DataSet
 Java OpenClient / SDO
 ProDataSets to/from XML

DEV-11 ProDataSets in an Open Environment 33 © 2006 Progress Software Corporation


ProDataSets in the
OpenEdge Reference Architecture

Presentation Enterprise Services

Common Infrastructure
Business Services

Data Access

NEW!
Data Sources

ABL (XML)
READ-XML ( )
WRITE-XML( )
Progress
DataSet

DEV-11 ProDataSets in an Open Environment 34 © 2006 Progress Software Corporation


New Methods Added

ProDataSet
 WRITE-XML Customer

 WRITE-XMLSCHEMA SalesRep Order


 READ-XML
 READ-XMLSCHEMA OrderLine

 Methods apply to .xsd


• ProDataSet
• Temp-Table .xml
• Temp-Table Buffer

DEV-11 ProDataSets in an Open Environment 35 © 2006 Progress Software Corporation


WRITE-XML ( )
Syntax
WRITE-XML (target-type,
{file | stream | memptr | handle | longchar}
[, formatted [, encoding
[, schema-location, [, write-xml schema
[, min-xmlschema, write-before-image]]]]]])

Example
DEFINE DATASET dsOrder...
/* attach datasources and FILL */
DATASET dsOrder:WRITE-XML ("FILE",
“dsOrder.xml",
TRUE). /* formatted */
DEV-11 ProDataSets in an Open Environment 36 © 2006 Progress Software Corporation
ProDataSet XML Example

‘Order’ Row

‘OrderLine’ Row

DEV-11 ProDataSets in an Open Environment 37 © 2006 Progress Software Corporation


NESTED Attribute
ProDataSet Data-Relation
Example
DEFINE DATASET dsOrder FOR eOrder,eOrderLine
DATA-RELATION OrderLine FOR eOrder,eOrderLine
RELATION-FIELDS (OrderNum,OrderNum) NESTED.

/* attach datasources and FILL */

DATASET dsOrder:WRITE-XML ("FILE",


“dsOrderNested.xml",
TRUE). /* formatted */

DEV-11 ProDataSets in an Open Environment 38 © 2006 Progress Software Corporation


NESTED Attribute
ProDataSet Data-Relation

OrderLine
Records
NESTED within
Orders

DEV-11 ProDataSets in an Open Environment 39 © 2006 Progress Software Corporation


READ-XML ( )
Syntax
READ-XML (source-type,
{file | memptr | handle | longchar}
, read-mode, schema‑location
, override-default-mapping
[, field-type-mapping [, verify-schema-mode ]])

Example
DEFINE DATASET dsOrder...
DATASET dsOrder:READ-XML (“FILE”,
“dsOrder.xml”, /* file */
“EMPTY”, /* read-mode */
?, ?).

DEV-11 ProDataSets in an Open Environment 40 © 2006 Progress Software Corporation


Reading XML Into A ProDataSet

READ-XML ( )

 Reads XML containing Before-Image


information
– Progress “datasetChanges”
– Microsoft “Diffgram”

 ProDataSet events DO NOT fire


 Change tracking is turned OFF

DEV-11 ProDataSets in an Open Environment 41 © 2006 Progress Software Corporation


WRITE-XMLSCHEMA ( )

Syntax
WRITE-XMLSCHEMA (target-type,
{file | stream | memptr | handle | longchar}
[, formatted [, encoding
[, min-xmlschema ]]])

 min-xmlschema –
• if TRUE only write standard XML Schema structures
• if FALSE, add XML Schema extensions from ‘prodata’
namespace
– Progress-specific information
– Allows round-trip of Progress definition

DEV-11 ProDataSets in an Open Environment 42 © 2006 Progress Software Corporation


Progress XML Schema Extensions
MIN-SCHEMA = TRUE

Standard XML Schema XML Schema Extensions


Dataset DataSet / Table names None
Table Table / Field names Temp-Table UNDO status
Field Name Format
Data Type + Label
Extent Decimals
Initial value Case-sensitive
Read-only...
Index Unique Indexes Non-unique Indexes
Relation Unique Data-Relations Non-Unique Data-Relations

MIN-SCHEMA = FALSE
DEV-11 ProDataSets in an Open Environment 43 © 2006 Progress Software Corporation
Progress XML Schema Extensions

“prodata”
namespace

field-level
attributes

non-unique
index definition

DEV-11 ProDataSets in an Open Environment 44 © 2006 Progress Software Corporation


XML Schema to ABL Tool

Syntax
xsdto4gl xml-schema-filename
[-output { output-directory-name | filename } ]
[-element element-name ]
[-overridemapping ]
[-fieldtypemapping { field-mapping-file | string } ]

.xsd .i
xsdto4gl

DEV-11 ProDataSets in an Open Environment 45 © 2006 Progress Software Corporation


In Summary

 The ProDataSet is key


to the future of ABL
applications Enterprise
Presentation Services
 Major component of

Infrastructure
the OpenEdge Business Services

Common
Reference Architecture Data Access

 We’re continuing to
Data
expand ProDataSet Sources

features

DEV-11 ProDataSets in an Open Environment 46 © 2006 Progress Software Corporation


Relevant Exchange Sessions

 DEV-9: Using the ProDataSet in


OpenEdge 10
 DEV-15: XML in OpenEdge Past, Present
and Future

DEV-11 ProDataSets in an Open Environment 47 © 2006 Progress Software Corporation


Education / Documentation References

 Course
• Using ProDataSets
• What's New in OpenEdge 10.1: SOA Support
 Documentation
• OpenEdge Development: ProDataSets
• OpenEdge Development: .Net Open Clients
• OpenEdge Development: Java Open Clients
• OpenEdge Development: Programming
Interfaces (XML)

DEV-11 ProDataSets in an Open Environment 48 © 2006 Progress Software Corporation


Questions?

DEV-11 ProDataSets in an Open Environment 49 © 2006 Progress Software Corporation


Thank you for
your time

DEV-11 ProDataSets in an Open Environment 50 © 2006 Progress Software Corporation


DEV-11 ProDataSets in an Open Environment 51 © 2006 Progress Software Corporation

You might also like