Upload
mervyn-bell
View
215
Download
1
Tags:
Embed Size (px)
Citation preview
A14: What’s New with ProDataSets in 10.1C?
Noel ShannonSenior Solution Consultant
© 2008 Progress Software Corporation2
Non-Progress
DataSource
Progress® DataSets
Business “Objects”
In-memory cache of relational data
Before and after data
Data source separate from DataSet
Transfers to/from XML easily
Progress DataSet
HeaderData
DetailData
Progress DataSource
02/10/1993793
01/19/1993362
01/05/199361
Table
© 2008 Progress Software Corporation3
ProDataSet™
ProDataSets in the OpenEdge® Reference Architecture
PresentationPresentation
Business ComponentsBusiness Components
Data AccessData Access
Data SourcesData Sources
Co
mm
on
Infrastru
cture
Co
mm
on
Infrastru
cture
Enterprise ServicesEnterprise Services
Temp-Tables
Temp-Tables
FILL ( ) READ-XML( )
© 2008 Progress Software Corporation4
Agenda
ProDataSet ABL Enhancements ProDataSets in OpenEdge Web Services Web Services Client Demo Futures for ProDataSets
© 2008 Progress Software Corporation5
Recursive Data-Relations
Self-Referencing Relation• Org Chart
– Employee-Manager• Bill of Materials
– Part-Part Structure
Efficiency and Simplicity
MAXIMUM-LEVEL
RECURSIVE
NUM-ITERATIONS
CURRENT-ITERATION
GET-ITERATION ( ) Standardize on FILL ( )
© 2008 Progress Software Corporation6
Recursive Data-Relation – Org Chart
EvanWayne
EvanMichael
EvanRobin
MarthaEvan
MarthaLaura
PeterMary
PeterShelley
PeterMartha
GordonPeter
ttEmployee
Gordon
managerempName
Gordon
Peter
Martha
Laura Evan
Robin Wayne
MaryShelley
Michael
DATA-RELATION rel1 FOR ttEmployee, ttEmployee RELATION-FIELDS (empName, manager) RECURSIVE.
© 2008 Progress Software Corporation7
2
Bike
Bolt Clamp Seat
Nut Bolt Clamp
Nut Bolt
Saddle
Recursive Data-Relation – Bill of Materials
3
4
1
...…
ClampSeat
BoltClamp
NutClamp
SeatBike
ttPS
ClampBike
BoltBike
compNumassyNum
Seat
Bolt
Clamp
ttPart
Bike
Nut
partNum
DATA-RELATION rel1 FOR ttPart, ttPS RELATION-FIELDS(partNum, assyNum)DATA-RELATION rel2 FOR ttPS, ttPart RELATION-FIELDS(compNum, partNum) RECURSIVE.
5
6
© 2008 Progress Software Corporation8
MARK-ROW-STATE and MARK-NEW
Create Before-Table Records• Data From 3rd Party
– .NET™, XML MARK-ROW-STATE
• ROW-CREATED • ROW-MODIFIED • ROW-DELETED
MARK-NEW• Creates ROW-CREATED
records for table
Client:
Tracking-Changes
Get-Changes()
AppServer™:
Save-Row-Changes()
DB
PdsChanges
Standardize on SAVE-ROW-CHANGES ( )
© 2008 Progress Software Corporation9
DEFINE TEMP-TABLE ttCust BEFORE-TABLE custBef FIELD CustNum AS INTEGER FIELD Name AS CHARACTER FIELD Balance as DECIMAL.
DEFINE TEMP-TABLE ttOrder BEFORE-TABLE ordBef FIELD OrderNum AS INTEGER FIELD CustNum AS INTEGER FIELD OrderDate AS DATE.
DEFINE DATASET dsCustOrd FOR ttCust, ttOrder DATA-RELATION CustOrdRel FOR ttCust, ttOrder RELATION-FIELDS (CustNum, CustNum).
DATASET dsCustOrd:READ-XML("FILE","dsCustOrd.xml",?,?,?).
/* mark all rows in datset as ROW-CREATED */TEMP-TABLE ttCust:DEFAULT-BUFFER-HANDLE:MARK-NEW().TEMP-TABLE ttOrder:DEFAULT-BUFFER-HANDLE:MARK-NEW().
READ-XML( ) and MARK-NEW( )
© 2008 Progress Software Corporation10
Miscellaneous
ProDataSetTemp-Table/Buffer
BREAK-BY
FIRST-OF
LAST-OF
Query
COPY-DATASET prefixNOT-ACTIVE
RESTART-ROWTOP-NAV-QUERY
COPY-TEMP-TABLE prefixDATA-SOURCE-ROWID
DEFAULT-VALUELIKE-SEQUENTIAL
© 2008 Progress Software Corporation11
Agenda
ProDataSet ABL Enhancements ProDataSets in OpenEdge Web Services Web Services Client Demo Futures for ProDataSets
© 2008 Progress Software Corporation12
Completes the story• ProDataSets available to ALL AppServer client
types
Single set of back-end business logic
ProDataSets in OpenEdge Web Services
OpenEdge Clients
ABL, WebClient™, WebSpeed®
Web ServicesClients
.NET, Java, ABL, Sonic
OpenEdgeApplication
Server
Open Clients
.NET, Java™, Sonic™
© 2008 Progress Software Corporation13
Compile your AppServer code Generate a Web Services definition (.wsm)
with ProxyGen Deploy the .wsm file
ProDataSets in the Web Services Provider
How do you incorporate ProDataSets in OpenEdge Web Services?
That’s IT!!!
© 2008 Progress Software Corporation14
OpenEdge Web Services Provider
HT
TP
L
iste
ner
Web
Ser
vice
s A
dap
ter
Web Server
AppServers
WSDLFiles
Request
Web Service Client Response
Runtime Architecture
ABLJava.NETSonic
WSMs
SOAP over HTTP
© 2008 Progress Software Corporation15
DEFINE TEMP-TABLE ttCust NO-UNDO FIELD CustNum AS INTEGER FIELD Name AS CHARACTER FIELD Balance as DECIMAL ...
DEFINE TEMP-TABLE ttOrder NO-UNDO FIELD OrderNum AS INTEGER FIELD CustNum AS INTEGER FIELD OrderDate AS DATE ...
DEFINE DATASET dsCustOrd FOR ttCust, ttOrder DATA-RELATION CustOrdRel FOR ttCust, ttOrder RELATION-FIELDS (CustNum, CustNum).
Sample Web Service
dsCustOrd.i
© 2008 Progress Software Corporation16
{dsCustOrd.i}
DEFINE INPUT PARAMETER iCustNum AS INTEGER.DEFINE OUTPUT PARAMETER DATASET FOR dsCustOrd.
/* fill dataset and return to caller */
Sample Web Service
getCustOrders.p
© 2008 Progress Software Corporation17
public string getCustOrders(int iCustNum, out dsCustOrd dsCustOrd){ object[] results = this.Invoke("getCustOrders",
iCustNum); dsCustOrd = ((dsCustOrd)(results[1]));
return ((string)(results[0]));}
.NET Client Proxy Snippet (C#)
Proxy Method Call – auto generated by toolkit
© 2008 Progress Software Corporation18
public partial class dsCustOrd { private dsCustOrdTtCust[] ttCustField; private dsCustOrdTtOrder[] ttOrderField; ... }
.NET Client Proxy Snippet – cont’d
dsCustOrd Definition – auto generated
© 2008 Progress Software Corporation19
public partial class dsCustOrdTtCust { private int custNumField; private string nameField; private decimal balanceField; ...}
public partial class dsCustOrdTtOrder { private int orderNumField; private int custNumField; private DateTime orderDateField; ...}
.NET Client Proxy Snippet (C#) – cont’d
dsCustOrd Member Definitions
© 2008 Progress Software Corporation20
GetCustOrders.dsCustOrd dsCustOrd;String cResult;
GetCustOrders.getCustOrdersService mySvc = new GetCustOrders.getCustOrdersService();
try{ cResult = mySvc.getCustOrders(5, out dsCustOrd);
...}
.NET Client Code (C#)
Web Service Method Call
© 2008 Progress Software Corporation21
dsCustOrdTtCust[] ttCust = dsCustOrd.ttCust;
dsCustOrdTtOrder[] ttOrder = dsCustOrd.ttOrder;
for (cntr = 0; cntr < ttCust.Length; ++cntr){ // process ttCust fields}
for (cntr = 0; cntr < ttOrder.Length; ++cntr){ // process ttOrder fields}
.NET Client Code – cont’d
Access the Data
© 2008 Progress Software Corporation22
{dsCustOrd.i}
DEFINE VARIABLE hWebService AS HANDLE.DEFINE VARIABLE hgetCustOrdersObj AS HANDLE.DEFINE VARIABLE cResult AS CHARACTER.
FUNCTION getCustOrders RETURNS CHARACTER (INPUT iCustNum AS INTEGER, OUTPUT DATASET dsCustOrd)
IN hgetCustOrdersObj.
CREATE SERVER hWebService.
hWebService:CONNECT("-WSDL... ").
RUN getCustOrdersObj SET hgetCustOrdersObj ON hWebService.
cResult = getCustOrders (5, dsCustOrd).
ABL Client Code
ABLClient.p
© 2008 Progress Software Corporation23
Demo
.NET Web Services Client
Visual Studio App C# Language
© 2008 Progress Software Corporation24
WSDL Information• NAMESPACE-URI for DataSet
• NESTED Data-Relation
• XML-NODE-TYPE for Temp-Table Fields
Runtime Serialization• Before-Image data in SOAP Message
– Works with ABL client seamlessly
Additional ProDataSet Support for Web Services
© 2008 Progress Software Corporation25
D I S C L A I M E R
Under Development
This talk includes information about potential future products and/or product enhancements.
What I am going to say reflects our current thinking, but the information contained herein is preliminary and subject to change. Any future products we ultimately deliver may be materially different from what is described here.
D I S C L A I M E R
© 2008 Progress Software Corporation26
ProDataSet Futures – WRITE-XML( )
Omit Fields with INITIAL Values
Hide Nested Foreign Key Fields
Reduce size of XML Documents
.xsd
DataSet
ttOrder
ttOline
.xml
© 2008 Progress Software Corporation27
Advanced GUI
.NET UI working with Progress data• Progress.Data.BindingSource
• Bind .NET control to a ProDataSet
Brings data-centric binding to .NET• Automatic data synchronization
• Automatic currency
• Automatic batching
• Automatic updating
© 2008 Progress Software Corporation28
In Summary
ProDataSet essential business object
Adding features based on YOUR feedback
Single set of back-end logic
© 2008 Progress Software Corporation29
For More Information, go to…
Progress eLearning Community: http://wbt.progress.com
• Using ProDataSets
10.1C Documentation: http://www.psdn.com/library/kbcategory.jspa?categoryID=1916
• New and Revised Features
• ProDataSets
• ABL Reference
• Web Services
© 2008 Progress Software Corporation30
Relevant PTW Sessions
A7: Architecting Your Application in OpenEdge 10
A18: A Deep Dive into Developing with the OpenEdge GUI for .NET
© 2008 Progress Software Corporation31
Questions?
© 2008 Progress Software Corporation32
Thank You
© 2008 Progress Software Corporation33