Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof 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