Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
DEV-11: Leveraging ProDataSets in an
Open Environment
Robin Brown
Principal Software Engineer
Progress® DataSets
Header
Data
Business “Objects”
• Logical grouping of
related data
Progress
DataSet
Detail
Data
In-memory cache of
data
Data source separate
from DataSet
Progress
DataSource
Table
• Data abstraction
DEV-11 ProDataSets in an Open Environment
Progress
DataSource
2
1
2
6
36
01/05/1993
01/19/1993
3
79
02/10/1993
© 2006 Progress Software Corporation
ProDataSets in the
OpenEdge® Reference Architecture
ABL Client
.NET™ Open Client
ADO.NET DataSet
Progress®
ProDataSet™
NEW!
Enterprise Services
Business Services
Data Access
AppServer™
ABL
Progress®
ProDataSet™
DEV-11 ProDataSets in an Open Environment
Data Sources
3
Common Infrastructure
Java™ Open Client
Java SDO
Presentation
© 2006 Progress Software Corporation
ProDataSets in the
OpenEdge Reference Architecture
Presentation
Enterprise Services
Business Services
ABL to
Database
Progress
DataSet
Data Access
Data Sources
Common Infrastructure
AppServer™
ABL
Progress
DataSet
(XML)
ABL
READ-XML ( )
WRITE-XML( )
Progress
DataSet
NEW!
DEV-11 ProDataSets in an Open Environment
4
© 2006 Progress Software Corporation
ProDataSets in the
OpenEdge Reference Architecture
.NET™ Open Client
ADO.NET DataSet
Presentation
Enterprise Services
Business Services
Data Access
ABL
READ-XML ( )
WRITE-XML( )
Data Sources
Common Infrastructure
Java™ Open Client
Java SDO
This Session’s Focus
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
tables
• Field-mapping
Custnum Cust_num
Pass as parameters
• Local
Data-Relations
Relationships defined between
– APPEND option
– BY-REFERENCE option
Indexes
Temp-Table
Fields
Indexes
Temp-Table
Fields
• Remote
DEV-11 ProDataSets in an Open Environment
7
© 2006 Progress Software Corporation
Open Client and ProxyGen
App
Object
Proc
Object
ABL
Business
Logic
(r-code)
.NET
Proxy Code
DEV-11 ProDataSets in an Open Environment
SubAppObj
Java
Proxy Code
Web Services
Mapping
file
(.wsm)
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
Client
App
App
Object
Proc
Proc
Object
Object
Open Client
Runtime
Proxy
OpenEdge AppServer
Internet
/Intranet
Broker
AppServer:
App
Server
ABL
HTTP/S:
SubAppObj
Name
Server
.Net Framework / JRE
Database
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
• DataColumns define fields
• DataConstraints define
integrity rules
Relationships defined
between tables
• Map fields between tables
Share many features of
ProDataSet
DEV-11 ProDataSets in an Open Environment
DataTable
DataColumns
DataRelations
One or more DataTables
ADO.NET DataSet
DataConstraint
DataTable
DataColumns
DataConstraint
DataTable
DataColumns
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
XML attributes
UNDO
DATA-SOURCE-MODIFIED
REJECTED
DEV-11 ProDataSets in an Open Environment
NEW!
14 © 2006 Progress Software Corporation
Using ProDataSets in a
.NET Open Client environment
DataSets on both ends of the wire
ADO .Net
DataSet
DEV-11 ProDataSets in an Open Environment
Progress
DataSet
15 © 2006 Progress Software Corporation
Passing DataSets in .Net
Static versus Dynamic
Progress
AppServer
.NET Client
Static
.Net
Typed
DataSet
Data
Only
Static
DataSet
Dynamic
ADO .Net
DataSet
DEV-11 ProDataSets in an Open Environment
Schema
& Data
Dynamic
DataSet
16 © 2006 Progress Software Corporation
Procedure using Static ProDataSet
ABL code
/* StaticDs.p */
{dsOrderDef.i}
1
2
3
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
17 © 2006 Progress Software Corporation
Method using Static .Net DataSet
.NET C# code
1
2
using nsOrderDS.StrongTypesNS;
dsOrderDataSet dsOrders;
try
{
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
ProDataGraphMetaData
ProDataObject
ProDataObjectMetaData
ProChangeSummary
ProDataRelationMetaData
– Extends Java SDO DataGraph
– Specifies the ProDataGraph meta data
– Extends Java SDO DataObject
– Specifies the ProDataObject meta data
– Extends Java SDO ChangeSummary
– 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
2
3
4
5
ProDataGraphHolder dgHolder =
new ProDataGraphHolder();
ProDataGraph dg = null;
try
{
appObj.StaticDS
(iLowRange, iHighRange, dgHolder);
dg = dgHolder.getProDataGraphValue();
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
Enterprise Services
Business Services
Data Access
NEW!
Data Sources
ABL
READ-XML ( )
WRITE-XML( )
Common Infrastructure
Presentation
(XML)
Progress
DataSet
DEV-11 ProDataSets in an Open Environment
34 © 2006 Progress Software Corporation
New Methods Added
ProDataSet
WRITE-XML
WRITE-XMLSCHEMA
READ-XML
READ-XMLSCHEMA
Methods apply to
• ProDataSet
• Temp-Table
• Temp-Table Buffer
DEV-11 ProDataSets in an Open Environment
Customer
SalesRep
Order
OrderLine
.xsd
.xml
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
XML Schema Extensions
Standard XML Schema
None
Dataset DataSet / Table names
Table Table / Field names
Temp-Table UNDO status
Field Name
Data Type
Extent
Initial value
Format
Label
Decimals
Case-sensitive
Read-only...
+
Index Unique Indexes
Relation Unique Data-Relations
Non-unique Indexes
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 } ]
.i
.xsd
xsdto4gl
DEV-11 ProDataSets in an Open Environment
45 © 2006 Progress Software Corporation
In Summary
The ProDataSet is key
DEV-11 ProDataSets in an Open Environment
Enterprise
Services
Presentation
Business Services
Data Access
Common
Infrastructure
to the future of ABL
applications
Major component of
the OpenEdge
Reference Architecture
We’re continuing to
expand ProDataSet
features
Data
Sources
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