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

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 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