Title: Arial 28pt.
Download
Report
Transcript Title: Arial 28pt.
PowerBuilder 10 and PowerDesigner 10
Berndt Hamböck
[email protected]
Agenda
Why PowerDesigner and PowerBuilder?
The PowerDesigner Plug-In
The Class Diagram
PowerDesigner 10 and PowerBuilder 10 Together
Reverse Engineering
Changing
Forward Engineering
Demo
Problem Statement
Most of PowerBuilder developers don’t do design.
Many PowerBuilder applications don’t have a good
architecture and there is no documentation.
It is difficult to maintain and evolve when the developers are
gone.
Solution -> PowerDesigner
PowerDesigner is a good enterprise modeling tool
Leading Data Modeling tool
Complete UML support (9 UML diagrams)
Business Process Modeling features
Good Repository
Integration with Integration Orchestrator, Message Broker,
ebXML
Design and generate code for PowerBuilder, Web Services,
J2EE (EJB, O/R mapping), .NET, etc.
Support all major databases (more than 30)
Support major application servers (EAServer, WebLogic,
WebSphere)
Integration with IDEs (Eclipse, JBuilder 8, Ant)
Extensibility (Profile, Code generator, VBScript, OLE
automation)
PowerDesigner 10 Features
PowerDesigner 10.0 supports tight integration with
PowerBuilder 10
PowerBuilder 10 is able to embed PowerDesigner views
inside PowerBuilder
PowerBuilder is able to control PowerDesigner
PowerDesigner generates complete PowerBuilder application
code (post 10.0)
PowerDesigner Value Proposition
Help users to understand how the application was developed.
Help users to visually see the relationship between objects.
Help users to improve existing code, refactor the code.
Regenerate PowerBuilder application.
Generate documentation (report) in HTML and RTF format.
The PowerDesigner plug-in
Integrated into PowerBuilder
Adapted for PowerBuilder users
Enable/Disable
Easy to reverse engineer, design and generate PowerBuilder
objects or applications
Removes features that are not relevant for PowerBuilder users
Needs PowerDesigner 10 installed
Plug-in Manager
PowerDesigner Workspace, Result List & Output window
will be displayed within the PowerBuilder 10 IDE
PowerDesigner Toolbars will be added
PowerDesigner plug-in menu items will be added to
the PowerBuilder target
Library and Object context menu in System tree
The Plug-In in Action
Representing PowerBuilder Objects in Class Diagram
A PowerBuilder target is represented by an Object Oriented
Model
An OOM consists of Packages and Reports
An OOM has a default Class Diagram - Top Level Class Diagram
An OOM has an Extended Attribute “Target Path” - the file name of a
linked PowerBuilder target
A PowerBuilder target has a plug-in attribute “oompath” - the file
name of a linked OOM
Displaying PowerBuilder Objects in Class Diagram
A class diagram shows
Library:
Each is represented by a package.
A stereotype and a mini icon
packages, inheritances, associations, dependencies, attributes, operations.
show the type of object.
Dependencies:
Show which menu or data window is used by which window.
Displaying PowerBuilder Objects in Class Diagram
Classes:
Window, user object, application, structure,
function and proxy are represented as classes and
the code is regenerated from the class definition.
Other objects (datawindows, menus, query, pipeline) are
represented as classes, the source code is kept and are
not regenerated from the class definition.
Controls:
are represented by inner classes.
Displaying PowerBuilder Objects in Class Diagram
library
Package
Other
Class
<<dataWindow>>
Window
user object
Application
Structure
Function
proxy
d_product
<<window>>
Class
u_dwstandard
Dependencies
/Generation
<<window>>
w_welcome
+
+
+
+
+
+
+
+
+
+
<<property>>
<<property>>
<<property>>
<<property>>
<<property>>
<<property>>
<<property>>
<<property>>
<<property>>
<<property>>
cb_cancel
cb_ok
sle_password
sle_userid
st_password
st_userid
st_welcome
p_sports
width
height
titlebar
title
controlmenu
windowtype
backcolor
icon
contexthelp
center
:
:
:
:
:
:
:
:
:
:
integer
integer
boolean
string
boolean
windowtype
long
string
boolean
boolean
=
=
=
=
=
=
=
=
=
=
2299
1000
true
"Welcome"
true
response!
67108864
"AppIcon!"
true
true
Inner
Class
Example of a Class Diagram
Reverse Engineering for PowerBuilder
Reverse Engineer From PowerBuilder
Select “Reverse Engineer” From PowerBuilder Target Context
Menu
Select PBLs and Objects to Reverse Engineer
Reverse Engineering for PowerBuilder
Reverse Engineering a PowerBuilder target
If the OOM file name is not specified a default file name, based on the
PowerBuilder target name, will be used
If the OOM file name is specified and it is not found a new OOM file will be
generated
You are able to choose the objects you want to reverse engineer
You are M E R G I N G the changes with the existing OOM
The OOM is opened within the PowerBuilder DIE
Changes done in PowerBuilder are reflected in the OOM automatically
Changes done in PowerDesigner are N O T reflected in PowerBuilder
automatically
Reverse Engineering for PowerBuilder
Reverse Engineering Issues
When you delete/rename a PowerBuilder Library in a PowerBuilder Target
When you delete/rename a PowerBuilder object
When you delete/rename a function or event
When you delete/rename a variable or property
When you change the number of parameters in a function or event
You will discover that unused packages, Classes, Operations
and Attributes will still remain in the OOM when you do a
reverse engineering again, because the default behaviour in
PowerDesigner is to M E R G E the changes with the existing
OOM.
Solution?
Apply the “Replace existing OOM” option
Apply the “Replace existing Packages or Classes” option
When you want to remove unused packages, classes,
attributes or operations
System will delete existing OOM file before reverse engineering
When you want to remove unused classes,
attributes or operations
System will delete the corresponding classesof the selected objectsbefore
reverse engineering
N O T available in PB10beta2
Designing PowerBuilder Applications
You can create, modify or delete objects or links.
You can use the PowerBuilder tool palette to create objects.
You can preview the PowerBuilder code.
You can modify the PowerBuilder code in the code preview
window.
From ‘outside’ the Plug-In:
You can write specification in RTF format. You could use
Word to edit the description or annotation.
You can generate reports in HTML or RTF formats for
documentation.
Functions and Events
Function and Events are represented as operations.
An Event could be an operation with the «event» stereotype,
with a language event or with an extended attribute EventID
(pbm_*).
Overriding Properties
In the Attributes tab of the class property sheet, the Inherited
button allows you to select the properties to override.
Previewing PowerBuilder Code
Open the properties of an object. Select the Preview tab.
For Window, User Object, Application, Structure, Function and Proxy, the
code is generated from the class definition. You could change the code in
the Preview window (add attributes, modify operations, …), the model will be
updated to reflect the changes.
For DataWindow, Menu, Query, …, you could change the code in the Script
tab
Verifying the Model
You could use the Check Model function to verify if the model
is well defined.
There are PowerBuilder specific checks.
Check model is customized for PowerBuilder, for example, it will check
whether a object name is valid PowerBuilder name, a pbl can only have one
application object
Check model results are printed in output window
Generate from PowerDesigner
Generate PowerBuilder Code
Select packages and classes from OOM to generate PowerBuilder code
If it is the first time to generate PowerBuilder code, a new PowerBuilder target
will be created
Navigation
From PowerBuilder to PowerDesigner
Select “Open Class Diagram” from pbl context menu to open class diagram for
this pbl
Select “Find in Class Diagram” from PB object context menu to find the
corresponding class in class diagram
From PowerDesigner to PowerBuilder
Double click a class in class diagram to launch PowerBuilder painter to open
corresponding PB object
Select “Find in PowerBuilder Workspace” from class context menu to find the
corresponding PowerBuilder object in PowerBuilder workspace
PowerDesigner and PowerBuilder Together
Design in PowerDesigner
Generate PowerBuilder Code
Modify in PowerBuilder
Debug and Run
Reverse Engineer to Update Class Diagram
Summary
PowerDesigner: A Plug-In Component in PowerBuilder 10
Reverse Engineer From PowerBuilder
Design and Generate PowerBuilder Code Using
PowerDesigner
Navigation Between PowerDesigner and PowerBuilder
Demo
PowerBuilder 10 and PowerDesigner 10
Berndt Hamböck
[email protected]