Example: Pass a ProDataSet as a ProDataGraph with change tracking
- Last Updated: July 2, 2026
- 3 minute read
- OpenEdge
- Version 13.0
- Documentation
The following example demonstrates the complete workflow for retrieving a multi-table
ProDataSet as an OUTPUT ProDataGraph, modifying rows with change
tracking enabled, and sending the changes back to the application server as an
INPUT ProDataGraph.
The ABL procedure GetCustOrders.p populates and returns an
OUTPUT DATASET containing two related temp-tables
(ttCustomer and ttOrder) linked by a data-relation
on CustNum:
|
The ABL procedure UpdateCustOrders.p accepts the modified
DATASET as an INPUT parameter.
|
The Java client SendUpdates.java performs a three-step GET → MODIFY → UPDATE cycle:
- Define the schema — Creates a
ProDataObjectMetaDatafor each temp-table in the dataset, then combines them into aProDataGraphMetaDatawith aProDataRelationMetaDatathat establishes the parent–child relationship betweenttCustomerandttOrder. - GET — Calls GetCustOrders.p with
ParamArray.addDataset()inOUTPUTmode. The application server returns the fully populatedProDataGraph. - MODIFY — Enables change tracking by calling
ProChangeSummary.beginLogging()on the graph, then modifies field values on both parent and child rows. ThegetChildRows()method navigates the data-relation to access related order rows. After all modifications, callsgetChanges()to retrieve a changes-onlyProDataGraphcontaining the updated data. - UPDATE — Passes the changes-only
ProDataGraphback to UpdateCustOrders.p as anINPUT DATASETparameter.
|
The key differences from a single-table ProDataGraph are:
- The
ProDataGraphMetaDatacontains multipleProDataObjectMetaDataobjects (one per temp-table). - A
ProDataRelationMetaDatalinks the parent and child tables, enablinggetChildRows()navigation. - Change tracking via
ProChangeSummarycaptures modifications so that only changed rows are sent back to the server viagetChanges(). - Uses
ParamArray.addDataset()instead ofaddTable()when passing a multi-tableProDataGraph.