Professional Documents
Culture Documents
Rob Marshall
Sr. Solutions Consultant
April, 2007
Agenda
Introduction
Modernizing the UI / ProDataSets
Who am I ?
Email: rmarshal@progress.com
Shameless plug
Agenda
Introduction
Modernizing the UI / ProDataSets
Modernizing UI
Why Do It
Options For It
Examples of It
ProDataSets
Overview of a ProDataSet
How to Use Them
Advanced Topics
Agenda
Introduction
Windows XP Theme Support
4GL Only Modifications
Use of ActiveX Controls
Examples of applications
Your Opportunities
Application requirements heard from our Customers
1.
2.
3.
4.
5.
In Addition to Sizzle
Performance
Robustness
Usability
Ergonomy
OpenEdge UI possibilities
OpenEdge UI possibilities
Technology
Pros
Cons
OpenEdge ChUI
ABL
Simple UI delivers
better
performance and
productivity
No sizzle
OpenEdge GUI
ABL
WebClient
Full MS Desktop
support
Most common
graphic features
Low sizzle
.NET GUI
OpenClient
Full MS Desktop
support
Full sizzle
Requires
Microsoft .NET
technology
.NET-specific
knowledge
required
Full MS Desktop
support
Medium sizzle
Java GUI
Requires Java
technology
Java-specific
knowledge
required
Pros
Zero footprint
Instant Updates
Run anywhere / OS Support
Reads vs. Writes
AJAX / Adobe Flex:
Technology Improvements
Cons
Technologies (multiple)
Browser Support IE6, IE7,
Firefox, Mozilla, Opera, etc.
Support & Troubleshooting
Client side issues
Firewalls
Norton / Software
Agenda
Introduction
Windows XP Theme Support
4GL Only Modifications
Use of ActiveX Controls
Examples of applications
OpenEdge 10.1A
Support for rounded rectangles, dual image
buttons, browses and more can be XPcompliant
Manifest file active by default
Improving the Look and Feel of your OpenEdge Application
Windows
Classic Look
Windows
XP Look
Windows XP Look
Manifest file
XML file
Version 6.0 of common controls library
CommCtrl6
Provides XP look for standard and common
controls
Application-specific
Only recognized by Windows XP
Windows XP Look
Manifest file in $DLC/bin
For WebClient:
prowc.exe.manifest
processorArchitecture="X86"
name="Progress OpenEdge"
type="win32"
/>
<description>Progress</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Windows XP Look
Windows classic style
Windows XP Look
Windows XP style
Agenda
Introduction
Windows XP Theme Support
4GL Only Modifications
Use of ActiveX Controls
Examples of applications
Agenda
Introduction
Windows XP Theme Support
4GL Only Modifications
Use of ActiveX Controls
Examples of applications
Agenda
Introduction
Windows XP Theme Support
4GL Only Modifications
Use of ActiveX Controls
Examples of applications
AXIS AXIOM/mx
In Summary
UI with OpenEdge
At a relatively low cost ...
As an interim step that can last
a number of years
Without the need for a complete
re-design of your App!
Questions?
ProDataSets
Rob Marshall
Sr. Solutions Consultant
April, 2007
Agenda
Introduction
What is a ProDataSet
How to Populate / Navigate them
Advanced Usage
Benefits of ProDataSets
Agenda
Introduction
What is a ProDataSet
How to Populate / Navigate them
Advanced Usage
What is a ProDataSet?
ProDataSet
Data-Source
Temp-table
A
H
1
Data-Source
Data-Relations
Temp-table
A4
D6
A3
5D
D2
4G
E1
3H
ProDataSet Steps
Define
Build
Update
Clean Up
Improving the Look and Feel of your OpenEdge Application
Define Objects
Pass Parameter
Populate
Server
Collect Changes
Client
Pass Parameter
Save Changes
Server
Merge Changes
Client
Clean Up
Agenda
Introduction
What is a ProDataSet
How to Populate / Navigate them
Advanced Usage
Building a ProDataSet
Steps:
1. Define temp-tables
2. Define ProDataSet
3. Define and Attach DataSources
4. Populate the ProDataSet
5. Clean Up
Defining temp-tables
DEFINE TEMP-TABLE temp-table-name
ttOrder
ttOrderLine
Defining a ProDataSet
Steps:
1. Name the ProDataSet and specify
the temp-tables
2. Define data-relations
Naming a ProDataSet
DEFINE DATASET dataset-name
FOR buffer-name
dsOrder
ProDataSet
ttOrder
Temp-Table
buffer
Specifying data-relations
DEFINE DATASET dataset-name FOR temp-tables
DATA-RELATION data-relation-name FOR temp-tables
RELATION-FIELDS (parent-field, child-field).
dsOrderOrderLine
ttOrder
Parent
drOrderOrderLine
ttOrderLine
Child
Defining data-sources
DEFINE DATA-SOURCE data-source-name
FOR source-buffer.
Data-sources:
dsOrderOrderLine
srcOrder
ttOrder
drOrderOrderLine
ttOrderLine
srcOrderLine
Attaching data-sources
BUFFER buffer-name:ATTACH-DATA-SOURCE(datasource-handle).
dsOrderOrderLine
ttOrder
srcOrder
drOrderOrderLine
ttOrderLine
srcOrderLine
Define a ProDataSet
Attach data-sources
Define a query
Q
Improving the Look and Feel of your OpenEdge Application
Populating a ProDataSet
Steps:
1. Define an Optional Query
2. Set the FILL Mode
3. Perform the FILL Operation
Defining a Query
DEFINE QUERY query-name
FOR table-name.
Table
Query
FILL
ttOrder
B
H
1
FILL
drOrderOrderLine
A4
B
C
ttOrderLine
D6
A3
5D
D2
4G
E1
3H
FILL
B
C
ttOrder
H
1
FILL
drOrderOrderLine
A4
B
C
ttOrderLine
D6
A3
5D
D2
4G
E1
3H
FILL Modes
FILL
Results
Merge (Default)
1
ABC
9.95
DEF
5.34
GHI
2.03
JKL
3.57
ABC
9.95
DEF
5.34
GHI
2.03
ABC
7.75
JKL
3.57
Original Data
New Data
Append
No-Fill
ABC
9.95
ABC
9.95
DEF
5.34
DEF
5.34
GHI
2.03
GHI
2.03
REPLACE
Empty
1
ABC
7.75
JKL
3.57
ABC
7.75
DEF
5.34
GHI
2.03
JKL66 2007
3.57 Progress Software Corporation
BUFFER ttOrderLine:FILL().
dsOrderOrderLine
ttOrder
Do not fill
parent
buffer
H
1
ttOrderLine
A4
D6
A3
5D
D2
4G
E1
3H
Implicit Query
ProDataSet
Parent
Temp-Table
1
A
B
C
D
Parent Table
Child Temp-Table
Child Table
A4
D6
A4
A3
D2
E1
A4
5D
B
D6
A3
4G
B
5D
D2
3H
E
F
2
D6
F
1
4G
A4
D6
ttCustomer
H
1
A4
ttState
B
D6
A3
5D
D2
4G
E1
3H
Server
How to load
records into
the ProDataSet?
Buffer
QUERY:FILL-WHERE-STRING
Cleaning Up
dsOrderOrderLine
ttOrder
drOrderOrderLine
ttOrderLine
Dynamic
Run Time
Compile Time
DEFINE DATASET
DEFINE RELATIONS
ATTACH DATA-SOURCES
CREATE DATASET
SET-BUFFERS
ADD-RELATIONS
CREATE DATA-SOURCES
ADD-SOURCE-BUFFERS
ATTACH-DATA-SOURCES
Agenda
Introduction
What is a ProDataSet
How to Populate / Navigate them
Advanced Usage
Updating data
ttOrderBefore
changeDataset
A4
B
C
D6
2. Turn on TRACKINGCHANGES
TRACKING-CHANGES = TRUE
1
A4
D6
A3
5D
D2
4G
E1
3H
Temp-table
A3
5D
4. Save changes
1
A4
D6
After-tables
1
ttOrder
B
ttOrderBefore
A4
B
C
ttOrderLine
D6
ttOrderLineBefore
A3
5D
D2
4G
E1
3H
A4
D6
Using a before-table
DEFINE TEMP-TABLE ttOrderLine
BEFORE-TABLE ttOrderLineBefore
OpenEdge creates
the before table.
TRACKING-CHANGES
ProDataSet
TRACKINGCHANGES =
FALSE
Temp-table
A
H
1
Data-Relations
Temp-table
A4
D6
A3
5D
D2
4G
E1
3H
TRACKINGCHANGES =
TRUE
Improving the Look and Feel of your OpenEdge Application
A4
D6
A3
5D
D2
4G
E1
3H
Transaction scope
XML Schema
ProDataSet definition
Xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Called Procedure
COPY
Called Procedure
dsorder
Local procedures
Pass ProDataSet
between client
side procedures
Pass ProDataSet
between server
side procedures
QUERY-OFF-END
BEFORE-FILL
AFTER-FILL
Called Procedure
dsorder
DEFINE ProDataSet
REFERENCE-ONLY
DEFINE temp-tables
REFERENCE-ONLY
Minimizing Overhead
Calling Procedure
Called Procedure
SCHEMA-MARSHAL = NONE
SCHEMA-MARSHAL = MIN
Client-Side Processing
Client
Server
Define
Temp-Tables
Define ProDataSet
No Database References
Run Server-Side Processing and
Pass ProDataSet
Server-Side Processing
Client
Server
Define
Temp-Tables
Define ProDataSet
No Database References
Run Server-Side Processing
Define
Temp-Tables
Define ProDataSet
Define and Attach Data-Sources
Define and Prepare Queries
FILL ProDataSet
Return ProDataSet to Client
Use
Using XML
WRITE-XML
Other
Applications
READ-XML
8.
order
1.
4GL Order
Processing
Application
2.
7.
3.
5.
ProDataSet
Temp-tables
invoice
6.
CreditCheck
file
4.
Credit Bureau
application
Database
Improving the Look and Feel of your OpenEdge Application
Data structures
Business
Services work
with Temp-tables
and ProDataSets
XML document
Xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
XML example
<?xml version="1.0"?>
<Product>
<model>SUV123</model>
<dealer>Jones Automotive</dealer>
<price>23,998</price>
</Product>
Relational data
Order
orderline
orderline
Order
orderline
orderline
orderline
Improving the Look and Feel of your OpenEdge Application
Sending
party
(OpenEdge)
Receiving
party
XML schema
Receiving
party
(OpenEdge)
XML data
ProDataSet
WRITE-XML
schema-location
Order.xml
Xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
XML file
XML Schema
WRITE-XML
xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx
xxx
Xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
XML data
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Write-before-image
datasetChanges
XML file
WRITE-XML
Xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
After-image data
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Before-image data
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxx
Errors
OpenEdge pre-defines
schema for datasetChanges
Questions?