| By Gian Luca De Bonis | Article Rating: |
|
| March 19, 2008 12:00 PM EDT | Reads: |
3,597 |
- Accepts a transaction file (.ESC) with commands grouped by library and by object
- Verifies the syntax of the commands
- Checks out the objects (if SCC is used)
- Makes the source code changes, identifying the specific object and the specific property/script
- Backs up the PBLs concerned before importing the changes
- Imports the changes into the libraries
Why ESC Rather than Search&Replace?
Multi-file search and replace has been used for years and is fine for
making global changes, but is extremely risky when it comes to the
small local changes made by ESC.
What happens if you need to change the Text property of a SingleLineEdit in a window? It's easy to open the relevant .SRW file, but now you need to find the SingleLineEdit object and look at its properties to make the change. Alternatively, you can look for the source code concerned (definition of the SLE control) and hunt through the properties. Perhaps you need to ignore spaces and letter case. In short, not an easy task for a text editor...
In another situation, you know that some properties (e.g., datawindow.titlebar) aren't specified in the source code if their value isn't "true"... in this case, a new line of code is required to change the value and S&R won't do.
Lastly, when you're working with PBUs, you have to consider the tolerance! Often, the size of an object in runtime differs from that indicated in the source code: how can you look for something that's not exactly what you expect to find?
ESC Uses Parsing Technology
ESC can make
these small local changes because it's based on the parser used by
Enable for PowerBuilder (which makes PB applications multilingual).
This parser recognizes PB grammar, finds the various components in the
source code and identifies the specific part to be changed.
Source Value, Old Value, New Value
Before
making a change (New Value), ESC checks that the value of a property or
script in the source code (Source Value) is equal to (or compatible
with, as in the case of coordinates) the Old Value captured in runtime
when the change was made. This avoids two unwelcome effects:
- If the value has been changed by two developers (at different times), the second change is rejected. For example, two developers might change the position of a button starting with the same build of the software; in this case, without the check made by ESC, the second developer would unknowingly overwrite the change made by the first developer!
- Changes to dynamic properties that may have undesirable effects (documented however in a report): changing the where of a dynamic SQL statement would change the original statements and compromise the application logic.
Source Code Control Interface
If the workspace
uses a Source Code Control system, ESC can automatically check out the
required objects. The object then remains checked out and the developer
has full control over when to release it. If the object can't be
checked out, ESC can either apply the changes on a simulated basis
(using a local copy of the object) or reject them.
LibraryImport
Before importing the changed source
code, the library is added to the zip file used for the session backup.
In the event of problems, the transaction can be reversed and the
objects recovered from the backup file.
Only objects that haven't encountered problems in the earlier stages of the runtime development cycle are imported into the library. The changes can be confirmed simply by running the application.
ESC uses PBORCApi from Roland Smith (TopWizProgramming) to import source code into the libraries and to check out objects.
Rex Versions
Three configurations of Rex are currently available:
- Enterprise: unrestricted (developer license, royalty-free deployment)
- Professional: Rex can't be used with the application's executable files
- Standard: Can't write new plug-ins, no more than five change commands can be sent to ESC in each session, no SCC support
Published March 19, 2008 Reads 3,597
Copyright © 2008 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Gian Luca De Bonis
Gian Luca De Bonis is CEO/CTO of Enable Development, a London-based software house. He has considerable international consultancy experience, primarily focused on PowerBuilder, database technologies and software engineering.
- Why SOA Needs Cloud Computing - Part 1
- Cloud Expo and The End of Tech Recession
- The Transition to Cloud Computing: What Does It Mean For You?
- A Rules Engine Built in PowerBuilder
- Sybase Named “Silver Sponsor” of iPhone Developer Summit
- How PowerBuilder Got Its Groove Back
- The Cloud Has Cross-Border Ambitions
- Ulitzer Names The World's 30 Most Influential Virtualization Bloggers
- Ulitzer Named "New Media" Partner of Greatly Anticipated iStrategy Event in Berlin
- Risks and Enterprise Mobility?
- Steps for Success in Enterprise Mobility?
- Are Mobile Luddites Resisting Mobility?
- The Difference Between Web Hosting and Cloud Computing
- Sybase CTO to Speak at 4th International Cloud Computing Expo
- Why SOA Needs Cloud Computing - Part 1
- Cloud Expo and The End of Tech Recession
- The Transition to Cloud Computing: What Does It Mean For You?
- Five Reasons to Choose a Private Cloud
- Seeding The Cloud: The Future of Data Management
- The Threat Behind the Firewall
- Economy Drives Adoption of Virtual Lab Technology
- Tips for Efficient PaaS Application Design
- A Rules Engine Built in PowerBuilder
- Sybase Named “Silver Sponsor” of iPhone Developer Summit
- Where Are RIA Technologies Headed in 2008?
- PowerBuilder History - How Did It Evolve?
- The Top 250 Players in the Cloud Computing Ecosystem
- Custom Common Dialogs Using SetWindowsHookEx
- DDDW Tips and Tricks
- OLE - Extending the Capabilities of PowerBuilder
- DataWindow.NET How To: Data Entry Form
- Book Excerpt: Sybase Adaptive Server Anywhere
- Sybase ASE 12.5 Performance and Tuning
- Working with SOA & Web Services in PowerBuilder
- Office 2003 Toolbar: A New Look For Your Old PowerBuilder App
- Dynamically Creating DataWindow Objects


































