Download DEV-11 - Progress Software

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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
Related documents