Dev-11: Leveraging Prodatasets in An Open Environment: Robin Brown
Dev-11: Leveraging Prodatasets in An Open Environment: Robin Brown
Dev-11: Leveraging Prodatasets in An Open Environment: Robin Brown
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
NEW!
Common Infrastructure
Java™ Open Client
Java SDO
Business Services
Data Access
AppServer™
ABL
Data Sources
Progress®
ProDataSet™
Common Infrastructure
DataSet
Business Services
ABL to
Database Data Access
Progress
DataSet
Data Sources
(XML)
ABL
READ-XML ( )
WRITE-XML( )
Progress NEW!
DataSet
Common Infrastructure
Java SDO
Business Services
Data Access
ABL
READ-XML ( ) Data Sources
WRITE-XML( )
Progress
DataSet
Data-Relations
• Field-mapping Temp-Table
Custnum Cust_num Fields
Pass as parameters Indexes
• Local
– APPEND option Temp-Table
– BY-REFERENCE option Fields
• Remote
App
Object
Proc
ABL Object
Business Sub-
Logic AppObj
(r-code)
OpenAppObject OpenProcObject
ParamArray
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
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
Field DataColumn
Data-Relation DataRelation
Unique/Primary Index DataConstraint
XML attributes
UNDO
DATA-SOURCE-MODIFIED
REJECTED
/* 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).
.NET C# code
using nsOrderDS.StrongTypesNS;
1 dsOrderDataSet dsOrders;
try
{
2 appObj.StaticDS
(iLowRange, iHighRange, out dsOrders);
...
Reference Implementation
• Eclipse Modeling Framework (EMF 2.0.1)
– http://www.eclipse.org/emf/sdo.php
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
ChangeSummary
• Captures changes from all DataObjects
in a DataGraph
• Applied back to data source using Data
Mediator Service
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
ProDataGraph
ProDataGraph
/* 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).
Location: <install-dir>/java/ext/
Common Infrastructure
Business Services
Data Access
NEW!
Data Sources
ABL (XML)
READ-XML ( )
WRITE-XML( )
Progress
DataSet
ProDataSet
WRITE-XML Customer
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
OrderLine
Records
NESTED within
Orders
Example
DEFINE DATASET dsOrder...
DATASET dsOrder:READ-XML (“FILE”,
“dsOrder.xml”, /* file */
“EMPTY”, /* read-mode */
?, ?).
READ-XML ( )
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
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
Syntax
xsdto4gl xml-schema-filename
[-output { output-directory-name | filename } ]
[-element element-name ]
[-overridemapping ]
[-fieldtypemapping { field-mapping-file | string } ]
.xsd .i
xsdto4gl
Infrastructure
the OpenEdge Business Services
Common
Reference Architecture Data Access
We’re continuing to
Data
expand ProDataSet Sources
features
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)