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