Rules of Rules of - SYS
Transcription
Rules of Rules of - SYS
ANNOUNCING POCKETBUILDER V2.0 pg. 28 U.S. $15.00 (CANADA $16.00) NOVEMBER 2004 - Volume: 11 Issue: 11 www.sys-con.com/pbdj.com From the Co-Editors PocketBuilder Kudos Things should really begin to get interesting now that PocketBuilder 2.0 provides smartphone support by Bruce Armstrong pg. 3 Ida, Sally, and Harry A sampling of different user types Bob Hendry pg. 4 Industry Announcements by Bruce Armstrong pg. 34 iAnywhere Solutions is working with Sony Ericsson to provide AvantGo mobile content to users of the new Symbian-based P910 smartphone Rules of DATA NORMALIZATION pg.22 pg.16 ••• PowerObjects released smlPortal 3.0, which allows IT organizations to deploy PowerBuilder DataWindow-based reports and forms to the Web ••• Sybase releases the first free deployment version of an enterprise-class Linux database: Sybase Adaptive Server Enterprise Express Edition for Linux RETAILERS PLEASE DISPLAY UNTIL JANUARY 31, 2005 $15.00US $16.00CAN 11 03 0 09281 01314 3 Enterprise Distribution of Your PocketBuilder Applications Berndt Hamboeck Distribute applications to end users in a professional way Source Code Control: SCC Issues and Enhancements with PowerBuilder 10 Migrating to PB 10 Feature: Rules of Data Normalization Data modeling PowerBuilder in a .NET World 6 Paul Horan 12 Mike Nicewarner 16 Xue-song Wu Preserve your investments, skills, and knowledge in PowerBuilder 22 First Look: Flying High with PocketBuilder v2.0 A competitive edge 28 Ian Thain FROM THE CO-EDITOR EDITORIAL ADVISORY BOARD BRUCE ARMSTRONG, MICHAEL BARLOTTA, ANDY BLUM, KOUROS GORGANI, BAHADIR KARUV, PhD, BERNIE METZGER, JOHN OLSON, SEAN RHODY, IAN THAIN COEDITOR-IN-CHIEF: COEDITOR-IN-CHIEF: EXECUTIVE EDITOR: ASSOCIATE EDITOR: ASSOCIATE EDITOR: ASSISTANT EDITOR: ONLINE EDITOR: CONTRIBUTING EDITOR: TECHNICAL EDITOR: NEWS EDITOR: DATAWINDOWS EDITOR: RESEARCH EDITOR: BRUCE ARMSTRONG BOB HENDRY NANCY VALENTINE JAMIE MATUSOW GAIL SCHULTZ NATALIE CHARTERS MARTIN WEZDECKI JOHN OLSON BERNIE METZGER BRUCE ARMSTRONG RICHARD BROOKS BAHADIR KARUV, PhD WRITERS IN THIS ISSUE BRUCE ARMSTRONG, BERNDT HAMBOECK, BOB HENDRY, PAUL HORAN, MIKE NICEWARNER, IAN THAIN, XUE-SONG WU SUBSCRIPTIONS FOR SUBSCRIPTIONS AND REQUESTS FOR BULK ORDERS, PLEASE SEND YOUR LETTERS TO SUBSCRIPTION DEPARTMENT SUBSCRIPTION HOTLINE:888 303-5282 COVER PRICE: $15/ISSUE DOMESTIC: $149/YR. (12 ISSUES) CANADA/MEXICO: $169/YR. OVERSEAS: BASIC SUBSCRIPTION PRICE PLUS AIRMAIL POSTAGE (U.S. BANKS OR MONEY ORDERS). BACK ISSUES: $12 U.S., $15 ALL OTHERS PRESIDENT AND CEO: FUAT KIRCAALI VICE PRESIDENT,BUSINESS DEVELOPMENT: GRISHA DAVIDA SENIOR VP,SALES & MARKETING: CARMEN GONZALEZ PRODUCTION CONSULTANT: JIM MORGAN GROUP PUBLISHER: JEREMY GEELAN VICE PRESIDENT,SALES & MARKETING: MILES SILVERMAN CREDITS & ACCOUNTS RECEIVABLE STEVE MICHELIN FINANCIAL ANALYST: JOAN LAROSE ACCOUNTS PAYABLE: BETTY WHITE ADVERTISING DIRECTOR: ROBYN FORMA SALES & MARKETING MANAGER: MEGAN MUSSA ASSOCIATE SALES MANAGER: KRISTIN KUHNLE ASSOCIATE SALES MANAGER: DOROTHY GIL PRESIDENT,EVENTS: GRISHA DAVIDA EVENTS,NATIONAL.SALES MANAGER: JIM HANCHROW ART DIRECTOR: ALEX BOTERO ASSOCIATE ART DIRECTOR: LOUIS F. CUFFARI ASSOCIATE ART DIRECTOR: RICHARD SILVERBERG ASSOCIATE1 ART DIRECTOR: TAMI BEATTY ASSISTANT ART DIRECTOR: ANDREA BODEN VICE PRESIDENT,INFORMATION SYSTEMS: ROBERT DIAMOND WEB DESIGNER: STEPHEN KILMURRAY WEB DESIGNER: MATTHEW POLLOTTA CIRCULATION SERVICE COORDINATOR: EDNA EARLE RUSSELL CIRCULATION SERVICE COORDINATOR: LINDA LIPTON EDITORIAL OFFICES SYS-CON MEDIA 135 CHESTNUT RIDGE ROAD, MONTVALE, NJ 07645 TELEPHONE: 201 802-3000 FAX: 201 782-9600 [email protected] POWERBUILDER DEVELOPER’S JOURNAL (ISSN#1078-1889) is published monthly (12 times a year) for $149 by SYS-CON Publications, Inc.,135 Chestnut Ridge Rd., Montvale, NJ 07645 Periodicals Postage rates are paid at Montvale, NJ 07645 and additional mailing offices. POSTMASTER: Send address changes to: POWERBUILDER DEVELOPER’S JOURNAL, SYS-CON Publications, Inc., 135 Chestnut Ridge Rd., Montvale, NJ 07645 ©COPYRIGHT Copyright © 2004 by SYS-CON Publications, Inc. All rights reserved. No part of this publication may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopy or any information storage and retrieval system, without written permission. For promotional reprints, contact reprint coordinator Kristin Kuhnle. SYS-CON Publications, Inc., reserves the right to revise, republish and authorize its readers to use the articles submitted for publication. WORLDWIDE NEWSSTAND DISTRIBUTION Curtis Circulation Company. New Milford, NJ NEWSSTAND DISTRIBUTION CONSULTANT Gregory Associates/W.R.D.S. 732-607-9941 [email protected] FOR LIST RENTAL INFORMATION: Kevin Collopy: 845 731-2684, [email protected] Frank Cipolla: 845 731-3832, [email protected] All brand and product names used on these pages are trade names, service marks or trademarks of their respective companies. SYS-CON Publications, Inc., is not affiliated with the companies or products covered in PowerBuilder Developer’s Journal. PocketBuilder Kudos BRUCE ARMSTRONG F or all you PocketBuilder (aka Pocket PowerBuilder) fans out there, you’ll be pleased to hear that PocketBuilder 1.5 was recently awarded the Gold Star (the highest award) in the Developer Tool category by Mobile Village. The iAnywhere subsidiary of Sybase also received Gold Star awards for SQL Anywhere Studio (Database Category), mBusiness Studio (Middleware), XcelleNet Afaria (Mobile Device Management), and Avantgo (Wireless Web Content Provider). This continues the PocketBuilder recognition, which began with PocketBuilder 1.0’s receipt of a Jolt Productivity Award from Software Magazine. Things should really begin to get interesting now that PocketBuilder 2.0 provides smartphone support. The latest version was announced at the PocketPC Summit 2004 and CTIA Wireless I.T. & Entertainment 2004 conference in late October and should start shipping at the end of November. Why is this important? As WirelessNewsFactor recently noted (citing a recent IDC report), the PDA market has gone relatively flat largely because end users are switching to smartphones instead. This was also noted by Zelos Group, which is predicting the demise of the PDA platform. HardWareZone also had a similar take on the recent decline in PDA sales as did eWeek, The Inquirer, and ComputerWeek. Of course, many of those new smartphones are Symbian based, but Microsoft and Motorola have indicated that they are working together to make Windows Mobile more dominant. I’m a convert. I’ve been using a Motorola MPx200 since February and am planning on upgrading to the MPx220 when it becomes available (latest rumor is that my provider will announce this release later in November). Of course, if you must have a stylus, you might want to look at something like the MPX instead, which also has a small keyboard. If you need a mouse too, a Bluetooth-enabled mouse for smartphones was just introduced (see the WindowsForDevices.com Web site for info). The smartphone boom may also be indicated by the renewed interest in that platform as a target for Internet-based apps. Yahoo has just introduced mobile versions of Yahoo Search and Yahoo Local, responding to Google’s support for the mobile platform, particularly their recent introduction of Google SMS. Finally, as evidence of the growing support for the Windows Mobile platform for the Smartphone, there are reports that palmOne may introduce a Pocket PC–flavored Treo, which didn’t do much to help out the share price of its corporate sibling PalmSource. All in all, good news for a great product. ▼ [email protected] AUTHOR BIO Bruce Armstrong is a senior programmer with Integrated Data Services (www.get-integrated.com). A member of TeamSybase, he has been using PowerBuilder since version 1.0.B. He was a contributing author to SYS-CON’s PowerBuilder 4.0 Secrets of the Masters and the editor of SAMs’ PowerBuilder 9: Advanced Client/Server Development. www.SYS-CON.COM/pbdj/ PBDJ volume11 issue 11 3 FROM THE CO-EDITOR Ida, Sally, and Harry WRITTEN BY BOB HENDRY e’ve all run across different types of users who can make our work a little more difficult. Once you understand them, maybe, just maybe, they’ll be easier to deal with. W AUTHOR BIO Bob Hendry is a PowerBuilder instructor for Envision Software Systems and a frequent speaker at national and international PowerBuilder conferences. He specializes in PFC development and has written two books on the subject, including Programming with the PFC 6.0. 4 IDA Ida is the user who, completely devoid of any malevolent intent, can utterly devastate her computer and/or the network faster than a speeding bullet. She means well, and tries hard to follow your instructions, but it’s as though her body chemistry emanates some unseen force that is lethal to computer hardware and software. She can do every step by the book, and still the system crashes. At first you may think poor Ida just happened to inherit bad hardware. But moving her to a different machine or giving her a brand new one doesn’t cure the problem; each system she touches suddenly begins to exhibit strange behavior and unusual errors, even though she swears on a stack of Bibles (and you believe her) that she did nothing to provoke such a reaction. You can even stand there and watch her, verifying that she did nothing out of the ordinary, and the system merrily crashes or the network disappears for no apparent reason. Most programmers have encountered at least one or two Idas in their careers. In many ways, she is the most frustrating of the problem user types, because you can’t really get mad at her. She’s a victim of the technology that, to all appearances, just doesn’t like her. She apologizes profusely each time she has to call you. Although you may be skeptical at first, you’re likely to eventually give up trying to explain the phenomenon and agree with her own assessment of the situation: when it comes to computers, she’s cursed. Dealing with Ida requires a lot of patience and a cultivated bedside manner. Showing your frustration will only make her feel worse, which may result in her being hesitant to let you know the next time there’s a problem (and thus, making the problem that much worse by the time you do discover it). Ida requires a little PBDJ volume11 issue 11 handholding, a lot of reassurance, and, if you can swing it, maybe an exorcist to purge the demons that inhabit every system with which she comes in contact. It’s much easier to feel sorry for Ida than for her fellow “problem child,” Sally Secretkeeper. SALLY SECRETKEEPER Ida may keep her computer problems secret if you yell at her or make her feel more stupid than she already feels, but otherwise she will usually try her best to answer your questions and tell you what you need to know. Sally Secretkeeper, on the other hand, is a different type. She deliberately withholds information. Trying to find out what she was doing when the connection was lost or what error message appeared on her screen as the system went down is like pulling teeth. Sally’s reasons for remaining incommunicado can be a mystery. Maybe she figures you get paid the big bucks to diagnose and fix the IT problems so she’s going to make sure you earn every penny of it with no help from her. Maybe she’s afraid she won’t remember correctly and will give you bad information. Or maybe she’s just watched too many cop shows on TV and has decided that she has the right to remain silent. Whatever her motive, Sally can make your job more difficult unless you learn how to handle her “silent treatment.” If the user who’s having computer or network problems is a secretkeeper, you’ll need to approach her carefully. Normal questioning techniques won’t elicit much information, and if you start demanding answers, she’s likely to shut up even tighter. The key to drawing the information out of Sally’s type is to take a roundabout path. See if you can get her engaged in conversation about something that interests her (Hint: take a look at her desk and office walls. What do you see? Pictures of kids/dogs/spouse? Movie posters? Company golf team trophies?). Slowly bring the topic around to her computer problems. You’ll have to gain her confidence before she’ll spill the beans. You say you don’t have time to play these games? The sad fact is: if you don’t use these “stealth maneuvers” with Sally, you may spend (waste) far more time trying to determine what the problem is without her input. Network admin/tech support is a people-oriented position. People means politics. And politics means you’ll have to learn to be a politician now and then, whether you like it or not. Sally’s antics can be maddening, but at least they aren’t deliberately destructive. The same cannot always be said for the next trouble type, Harry Hacker. HARRY HACKER Harry is probably the most notorious of our problem user types. This category can actually be broken down into several “subHarries.” If he’s the genuine article, Harry Hacker probably knows a lot more about computers and networking than you do. Looking at it from his point of view, it’s either a little annoying or a little amusing to him that you’re making rules and telling him what he can and can’t do with his computer. From your point of view, Harry has the power to really wreak havoc on your network. Coming on strong and making an enemy of Harry may not be the smartest thing to do. You don’t have to like him, but you’d best respect his abilities. Depending on his personality, the best tactic may be assimilation – that is, take him into the fold. Let him know you admire his skills. Ask his advice on how to secure the network against those other, irresponsible users. Of course, if Harry is a destructive type and can’t be turned into an ally, your only option may be reporting his transgressions to his superiors. Before you choose that road, make sure you have everything important backed up, and expect retaliation. Hell hath no fury like a hacker scorned. Adding It All Up Ida, Sally, and Harry are only a sampling of the difficult user types that you may encounter as an IT professional. Each type has its own characteristics, and you may have to adopt different techniques for dealing with each. ▼ [email protected] www.SYS-CON.COM/pbdj/ POCKETBUILDER Enterprise Distribution of Your PocketBuilder Applications WRITTEN BY BERNDT HAMBOECK Distribute applications to end users in a professional way s professional PocketBuilder developers we’d like to distribute our cool and innovative applications to all other Pocket PCs around the world. Good idea, but how do we do that? A Is a standard Pocket PC user able to copy files to his device using ActiveSync? I don’t think so and it’s not very professional to ask your users to copy your executable files to a specific directory on the device, the PocketBuilder runtime to another one, the database file into a third one, the DSN file to the root of the device, and so on. It would be a fairly hard job for the users and a lot of them wouldn’t be able to do it the right way. To prevent users from struggling with the different files and their locations, we’ll use a new tool that comes with PocketBuilder 2.0, the CAB Configuration Tool application. Let’s look at what you need to have a professional-looking setup file for your applications, and then we’ll see how we can configure it to get perfect results. This means one single setup file, which makes it easy to distribute the application built in PocketBuilder to a Pocket PC device. How Does Deployment Work? AUTHOR BIO Berndt Hamboeck is a senior consultant for BHITCON (www.bhit con.net). He’s a CSI, SCAPC8, EASAC, and SCJP2 and started his Sybase development using PB5. 6 The Pocket PC operating system uses a CAB file to install an application on a Windows CE–based device. A CAB file is composed of multiple files, in fact all the files that you’d like to install to the device, compressed into one single file. • All the application’s files are present in one place. • You can prevent a partial or corrupt installation. • All files are from a defined version and there is no version mismatch. • The compressed file is small and easy to transmit per e-mail or even on a good old 3” disk. • Use a well-described application PBDJ volume11 issue 11 (Cabwiz.exe) to generate a file for your applications. Now you’re committed to CAB files, but how are they created? There are two options. You can check the “Create CAB file” checkbox in the project painter of PocketBuilder, which includes only your application, not the database files, the runtime files, or any other file needed by your application. This might not be what you want, so the other option is to create a CAB file on your own; however, this is not as easy as it might sound. In fact it’s a bit complex to create a devicespecific CAB file for one of your applications. You have to create an INF file with Windows CE–specific modifications and use the CABWIZ.EXE tool to create the CAB file. Let’s look at what this INF file should look like: 1. Version (required): Specifies the creator of the file and other relevant information. 2. CEStrings (required): Specifies string substitutions for the application name and the default installation directory. 3. DefaultInstall (required): Describes the default installation of your application. 4. SourceDiskNames (required): Describes the name and path of the disk on which your application resides. 5. SourceDiskFiles (required): Describes the name and path of the files in which your application files reside. 6. DestinationDirs (required): Describes the names and paths of the destination directories for your application on the target device. 7. CopyFiles (required): Under the [DefaultInstall] section, [CopyFiles] describes the default files to copy to the target device. 8. AddReg: Under the [DefaultInstall] section, the [AddReg] section is required and describes the keys and values that the .cab file adds to the device registry. 9. CEShortcuts: A Windows CE–specific section under the [DefaultInstall] section, this [CEShortcuts] section is optional and describes the shortcuts that the installation application creates on the device. PocketBuilder ships with a full example for an INF file that you’ll find under %pocketbuilder 2.0%\Code Examples\salesdb\CE\cust_SalesDB.inf (where %pocketbuilder 2.0% points to your PocketBuilder installation directory). After creating the INF file, use the CABWIZ tool to create the actual CAB file by using the following command: %pocketbuilder 2.0%\Support\cabwiz\CABWIZ.EXE yourinffile.inf/cpu ARM. An easier way is to use the new CAB configuration tool. Open it by clicking on File->New->Tool within PocketBuilder 2.0 (see Figure 1) and configure all the options you would type into the INF file directly by using a graphical user interface. After opening the tool you’ll see four different tab folders: • CAB Config: This folder is for configuring the application that we would like to build a CAB file for, and is where the PocketBuilder application comes from and where it will go to. • DB Config: Here we configure if we would like to distribute a database application and if so, which version of FIGURE 1 | New CAB configuration tool www.SYS-CON.COM/pbdj/ ©2003 Sybase, Inc. All rights reserved. All trademarks are the property of their respective owners. 4GL RAD Tools HE SAYS J2EE. SHE SAYS .NET. YOU SAY POWERBUILDER PowerBuilder® 9.0 gives you the power and flexibility to create applications for the platform of your choice in today’s heterogeneous environments. You’ll find new RAD JavaServer TM Pages, tools for Web Services, third-party application server support and more. Get the power you need to develop and integrate new Web, n-tier and rich-client apps. Technical details are waiting for you now at sybase.com/powerbuilder. INFORMATION LIQUIDITY. SYBASE INTEGRATION TECHNOLOGIES. E V E R Y T H I N G W O R K S B E T T E R W H E N E V E R Y T H I N G W O R K S T O G E T H E R .TM here into a document, for example. • Build: In this folder we can create our CAB file that we would distribute to our potential customers. Let’s have a closer look at these folders and see what and how we will configure all the necessary sections for the INF file. • • The CAB Config Folder FIGURE 2 | CAB Config tab FIGURE 3 | Database Options tab FIGURE 4 | Preview tab Sybase SQL Anywhere for CE we would like to use (the free one included with PocketBuilder, or the licensed one), the database, and the DSN file. • Preview: This folder displays the created INF file; we could copy it from 8 PBDJ volume11 issue 11 This folder defines what you would like to deploy to your device and where the files come from. A PocketBuilder device not only distributes itself, it might need the PocketBuilder runtime, so you’d like to create a shortcut on the device. This will be configured here. For an example configuration see Figure 2. • The first part defines where your application will be deployed to on the device. By default both the company and application names are used for the destination directories. If the checkbox “Use comp. and appl. name as depl. path” is checked, the application will be deployed to the directory %C1%\<company>\<appname>, where %C1% is a directory placeholder and stands for the language-independent Program Files folder on your device. Table 1 provides a complete list of all directory placeholders. The application name is also used as a shortcut on the device. • Depending on which platform you’d like to distribute your application, different PocketBuilder and Sybase SQL Anywhere runtime files are needed. You can choose between the following platforms: –Arm (your real Pocket PC device) –Emulator (the Pocket PC emulator) –Smartphone (a real Smartphone) –Smartphone Emulator (the Smartphone emulator) • The PocketBuilder and Sybase SQL Anywhere runtime files are located on the desktop. This is automatically set by the CAB creation tool, but feel free to choose a different location. If the tool finds a licensed Sybase SQL Anywhere CE installation, it will take this one, otherwise it will use the free version that’s included with PocketBuilder. • Defines the location of the PocketBuilder and Sybase SQL Anywhere runtime files on your device. • The application directory on the desktop where all your application files are stored should be distributed to the • • • chosen device or emulator (for example, .inf, .gif, .jpg, .pbd, and .exe files). Includes the name of the executable (has to reside in the application directory). This will also be used to create the shortcut. Defines which files you would like to include from the application directory on the desktop as a comma-separated list. If you would like to include all files, simply enter “*.*”; to include only some file types add *.<ext>; to include all EXE and PBDs enter “*.exe, *.pbd”. To include specific files simply use the full name. If you would like to create a shortcut on the device, check the “add Shortcut to Start Menu” checkbox. The shortcut is placed by default into the following path: \Windows\ Programs\ApplicationName. This can be reconfigured by changing the shortcut path (note that you can not change the %C11% directory placeholder). If you don’t want to deploy the PocketBuilder Applist application, uncheck the box. The DB Config Folder If you wrote a PocketBuilder application that uses a SQL Anywhere database, you’ll have to configure this folder. It simply defines the locations for your database files; for an example configuration see Figure 3. Configure the following options: • Do you want to use Sybase SQL Anywhere? If this checkbox is not checked, all options will be ignored. • The name and location of your DSN file on the desktop that will be deployed to the root folder on your device. • The location of your database file (and the optional corresponding log file) on the desktop. • Where will the database be placed on the device? • Which language and version do you want to use for Sybase SQL Anywhere and is the SQL Anywhere installation licensed? The version and licensed options are not used in the current version of the “CAB Generation” tool. The licensed box is for information purposes only at the moment, but in the future you’ll define which runtime files you’d like to distribute (for example, use Mobilink or not). Currently all runtime files are deployed to the device. The Preview Folder This page has the complete INF file that will be used when you create the CAB file (see Figure 4). Feel free to check it out. This is the same file you would www.SYS-CON.COM/pbdj/ Source: 08830081A GET MORE OUT OF ® POWERBUILDER WITH POWERDESIGNER 9.5.2! ® • Integrate PowerBuilder logic in a heterogeneous environment that includes Java,™ J2EE™ and .NET™ to ensure PowerBuilder skills stay relevant in the modern IT infrastructure. • Manage simple and complex designs easily using unique features like Object/Relational mapping, customizable pattern based code generation, VBScript customization, and more… • Easily re-factor code from ANY PowerBuilder object into an n-tier architecture with complete reverse engineering capabilities. • Apply the advantages of UML to PowerBuilder development with comprehensive code generation and round-trip engineering. Download a FREE evaluation copy of PowerDesigner 9.5.2 Today! www.sybase-iad-services.com/30081a 1-877-230-6771 | www.sybase-iad-services.com/30081a \Windows\Start Menu folder so I see the CAB file in the start menu). Simply tab on it on your device and you’ll see that all your files are installed properly in the right directories (note that the CAB file is then deleted automatically). Setup Creation FIGURE 5 | Build tab need to create if you wanted to build a CAB file by hand. Note that if you do any changes here, this will not influence the creation of the CAB file. This tab folder is only for informational purposes. If you would like to make changes, copy the text onto the clipboard and use your favorite editor to work on it and call cabwit by hand. The Build Folder In this folder it’s possible to create a CAB file for distribution and, as a second step, a professional-looking setup file that you’d like to distribute to your end users. For an example configuration, see Figure 5. CAB Creation To create a CAB file, use the tool CabWiz.exe (for PocketPCs) or CabWizSP (for Smartphones). These files come with your PocketBuilder installation and reside in the directory %PocketBuilder 2.0%\Support\cabwiz. We won’t have to define a lot here, because most of what is already needed has been configured on the first two folders. We have to configure: • The output path for the generated INF, CMD, and CAB file. • The name of the INF file you would like to use that is passed to the cabwiz application. • The name of the CMD file; this file simply calls the cabwiz with the needed parameters. Take care that the radio button is checked and click the Build button. You’ll see a command shell popping up to create your CAB file. Feel free to upload this CAB file to your device by using ActiveSync (I use the 10 PBDJ volume11 issue 11 To create a setup file for the end users, the CAB generation tool uses EZSetup. This is a free application (download it from www.spbsoftwarehouse.com) for creating installation programs for Pocket PC devices. The installers created by EzSetup are very intuitive for end users. This means that these users don’t have to worry about choosing between several installation files. There is simply one executable that has to be used, and it installs the application on the device. The EzSetup installer programs are always provided with a customizable readme and a license agreement. The installers are compressed, self-contained, and selfextracting, and can be created in several languages. EzSetup is a command-line application with some parameter keys. If you want to create an installer for some program you’ve written for a Pocket PC device, just run EzSetup with the desired parameters and provide it with the CAB, readme, and license agreement files. This is exactly what the CAB generation tool is doing. It generates a command file with all the needed parameters. Such a command file would look like this: Set EZ="c:\Sybase\Pocket PowerBuilder 1.5\Support\ezsetup\ezsetup.exe" String Directory %CE1% %CE2% %CE3% %CE4% %CE5% %CE6% %CE7% %CE8% %CE9% %CE10% %CE11% %CE12% %CE13% \Program Files \Windows \Windows\Desktop \Windows\Startup \My Documents \Program Files\Accessories \Program Files\Communication \Program Files\Games \Program Files\Pocket Outlook \Program Files\Office \Windows\Programs \Windows\Programs\Accessories \Windows\Programs\ Communications \Windows\Programs\Games \Windows\Fonts \Windows\Recent \Windows\Favorites %CE14% %CE15% %CE16% %CE17% Table 1 | Directory placeholders %EZ% -l english -i c:\PKExeGen\sample\EXE.inf -r c:\PKExeGen\sample\exe\readme.txt -e c:\PKExeGen\sample\exe\eula.txt -o PKSample.exe Now, let’s look at the fields we would have to fill in to get this exact output: • Configure the EZSETUP path. This is needed only once as this path will be remembered for future use. • The name of the INF file that’s used by EzSetup to register a CAB file with CEAppMgr.exe (better known as ActiveSync). It executes CEAppMgr in the background with this INI file – a CEAppMgr-specific INI file – that will determine which CAB file to install for the connected device. By the way, the full path and filename of CEAppMgr (ActiveSync) is stored in the desktop registry under the key: HKLM\Software\Microsoft\Windows\CurrentVers ion\App Paths\CEAPPMGR.EXE. If you want to have an inside look at how EzSetup is developed, feel free to grab the source code from the same site. • The name of the command file where the call for EzSetup and its parameters are listed. • The INF and CMD file will be placed in the directory you defined as “Output Path”. • The full path and name of your EndUser License Agreement (EULA). This is a legal contract between you and the end user of your application. The EULA details how the software can and cannot be used and any restrictions that you impose (e.g., most EULAs prohibit the user from sharing the software with anyone else). • The full path and name of your readme, which should be a small text file that contains information not included in the official documentation. Typically, readme files contain late-breaking information that for some reason could not be included in the printed documentation. • The language text your end users see when they walk through the created end-user setup file. Supported languages are “English,” “German,” “French,” “Italian,” “Swedish,” “Portuguese,” and “Spanish.” The CAB generation tool uses the following options in the background and can’t be configured directly by the user: • The name of the CAB file used is determined automatically by the CAB ~continued on page 30~ www.SYS-CON.COM/pbdj/ SOURCE CODE CONTROL SCC Issues and Enhancements with PowerBuilder 10.0 Migrating to PB 10 WRITTEN BY PAUL HORAN s we all know by now, the interface between PowerBuilder and the myriad of Source Code Control (SCC) providers was completely rewritten with the release of PB 8.0. Over the past three years, PowerBuilder’s SCC interface has been in a nearly constant state of evolution, and several key enhancements were released with PB9.0 and 9.0.1. A These included: • The OrcaScript batch command language processor was released; it allows the development of unattended refresh and build scripts. • The Refresh Status thread in the IDE was moved to an asynchronous thread, allowing it to run in the background. • The SccQueryInfoEx() extension to the SCC API allowed the implementation of “Diff by Version Number,” which significantly improved the performance of the Refresh Status process. PowerBuilder 10.0 was released in August of 2004, in conjunction with the 20th anniversary of Sybase, and the SCC interface is once again a subject of discussion. This article focuses on several key issues that development shops will need to be aware of as they migrate to PowerBuilder 10, with regard to their use of Source Code Control tools. Unicode! AUTHOR BIO Paul Horan is the senior architect at Video Communications, Inc., of Springfield, Mass, and has been working with PowerBuilder since version 1.0b. Paul was inducted into the ranks of TeamSybase in May of 2000, and is currently living in Buffalo, NY. 12 PowerBuilder 10 is the first release to fully support the Unicode encoding scheme. Unicode is the universal character encoding scheme for written characters and text. Unicode replaces a proliferation of character sets and encoding schemes with a single, globally interoperable standard. PowerBuilder 10 not only supports Unicode, it actually uses Unicode character encoding internally. What does this mean to you, as a PowerBuilder developer? It means that even if your application will never need PBDJ volume11 issue 11 to store or display an Arabic or Kanji 16bit (double-byte) character, the code in your PBLs will be stored internally in a 16-bit encoding scheme. In fact, you may notice that after migrating to PB10, your PBLs will be just about twice as large as their PB9 counterparts. Remember that nearly all SCC providers operate by archiving the individual revisions to ASCII text files. When a revised PowerBuilder object is checked in, PB will first export the object’s source into the Local Root Folder, and then send that ASCII text file to the SCC provider. The SCC tool increments the tip revision number and tracks the change accordingly. ASCII is an 8-bit, or single-byte, encoding scheme. However, the code in the PBLs is now stored in UTF-16LE, a 16-bit Unicode scheme. The PB engineering team had to devise an encoding format that could use 8-bit ASCII to represent 16-bit Unicode source. The answer was HEXASCII, which is one of several new source file export formats available in the Export Entry dialog. Figure 1 shows the PB10 Export Entry dialog, with the four new export formats available in the Encoding: dropdown list. UNICODE LE (LITTLE ENDIAN) This format is the “default” format when using the Export… menu option to manually export an object to a source file. This encoding scheme is capable of handling source that contains both single-byte and double-byte characters, and it also matches the internal encoding scheme within the PBL. The first line in the file will contain a 2-byte prefix 0xFFFE that flags the encoding scheme as UTF-16LE. You won’t see this prefix unless you open the source file in a Hex editor. Files exported with this encoding scheme cannot be imported back into PB9. UTF-8 This format is the single-byte encod- ing scheme, so files encoded with this format will be half the size of their Unicode partners. The prefix in these files is 3bytes long: 0xEFBBBF. Files encoded in this scheme cannot handle source code containing double-byte characters, nor can they be imported back into earlier versions of PowerBuilder. ANSI/DBCS Files exported with this choice will be single-byte or double-byte, depending on the source. In PB9 and earlier, source was either all single-byte or double-byte. These files contain no prefix code, therefore ANSI/DBCS is the only encoding scheme that PB9 can successfully import. HEXASCII Files encoded with the HEXASCII scheme contain the two-byte prefix HA, and use a single-byte ANSI encoding scheme. However, this encoding scheme is still capable of representing double-byte characters through the use of bracketed “escape sequences.” For example, a typical HEXASCII export file might contain the following single-byte string sequence: $$HEX2$$c189d063$$ENDHEX$$Single byte text$$HEX2$$417ed49a$$ENDHEX$$ Any characters found between the $$HEX2$$ and $$ENDHEX$$ strings represent the double-byte characters in the original source code. This format was developed so that PowerBuilder could use Unicode internally, but the SCC providers could still operate on single-byte ANSI-encoded text files. This format is used for all SCC operations with PB10, and is not backward compatible with PB9. Migrating to PowerBuilder 10 I’m sure you’ve found all that fascinating, but what does it have to do with migrating to PowerBuilder 10? I’m glad you asked… www.SYS-CON.COM/pbdj/ BE YOUR OWN MOBILE SUPER HERO WITH THE POWER OF POCKET POWERBUILDER YOU HAVE THE SKILL SET LET SYBASE GIVE YOU THE POWER! Got PowerBuilder? Go Mobile! PowerBuilder® developers can easily leverage their expertise to create new or extend existing applications using the Pocket. Pocket PowerBuilder — a new rapid application development tool that speeds the creation of mobile and wireless enterprise Pocket PC applications. Go Mobile now with this limited time offer! Purchase Pocket PowerBuilder today at $495. That’s more than 50% savings. Checkout it out today at: http://eshop.sybase.com/eshop © 2003 Sybase, Inc. All rights reserved. All trademarks are the property of their respective owners. objects in place. Now, go to the workspace properties dialog and reconnect it to the SCC project. The object statuses will all show as “checked out,” and you can perform a target-wide check in for all the objects. This will maintain all the existing history in the SCC repository prior to the migration. OrcaScript Enhancements FIGURE 1 | PB10 Export Entry dialog A typical migration effort from one version of PowerBuilder to another is a simple matter of opening the application or target in the new version of PowerBuilder and allowing the IDE to “do its thing.” A cup of coffee later, and your PBLs have all been migrated into the new version. However, this is the first release of PowerBuilder that actually changes the code during the migration process. The PB10 migration process reencodes the entire source into Unicode. From that point forward, all SCC operations are conducted with the HEXASCII encoding scheme, therefore all the export files have the HA header prefix. It doesn’t sound like a significant change – just two letters in the first line of code, but these two letters are not in the tip revision inside the SCC repository. Migrating to PowerBuilder 10 therefore violates the first commandment of source code management: thou shalt not edit an object unless thou hast first checked out that object. If you migrate your source-controlled application code to PowerBuilder 10, you’ve done exactly that – written a change into your local copy of the PBL without first checking out the objects. The first time you connect to the SCC provider from PB10, all the objects will show as “out of sync,” and a subsequent GetLatestVersion will actually “unmigrate” them. There are two possible solutions to this dilemma: 1. Start fresh. Migrate into a new PB10 workspace and register all the objects into a new SCC project as revision 1.0. The only downside (for everyone except PBNative users) is that the history of changes to the objects remains in the previous SCC project. 2. Perform a target-wide checkout prior to migration. Open the workspace in your current version of PowerBuilder and perform a target-wide checkout. Do this for all the targets in the workspace. When you open the workspace in PB10, the migration process will proceed to completion, rewriting the 14 PBDJ volume11 issue 11 PowerBuilder 10.0 includes several enhancements to the OrcaScript command-line utility and a sizeable number of bug fixes. The following list contains several of the bigger-ticket items. • SCC SET CONNECT PROPERTY PASSWORD “password” This new command was added specifically for users of Borland StarTeam. StarTeam is one of the few SCC providers that requires user authentication for all connection attempts. OrcaScript could provide the user name, but not the password, so the SCC CONNECT command would cause StarTeam to present their connection dialog and wait for user input. This totally defeats the purpose of writing unattended batch scripts, so this command was added to supply the password during the StarTeam connection attempt. SCC CONNECT OFFLINE At first glance, the terms “Connect” and “Offline” might sound mutually exclusive, but this new command addresses a very typical situation. The SCC REFRESH TARGET command is not allowed without first issuing the SCC CONNECT command. However, mobile or occasionally connected developers may not be able to establish a direct connection to the SCC provider. SCC Connect Offline can be used with the IMPORTONLY option to rebuild a target from exported source code files on a laptop or other remote workstation. The typical scenario would be: • Developer synchronizes the files in his or her Local Root Folder from the SCC repository while connected. • Disconnects the laptop from the network and boards a plane. • Refreshes and rebuilds the target from the exported source while disconnected. SCC connect offline SCC set target "myTarget.pbt" "refresh_all importonly" SCC refresh target "full" SCC close end session • IMPORTONLY OUTOFDATE The IMPORTONLY option to the SCC SET TARGET command tells OrcaScript that the files in the local root folder contain the desired source, and a “GET” from the SCC repository is not necessary. In previous versions of OrcaScript, this would import and refresh all the files in the target, whether or not they were actually out of sync. PB10 now allows the combination of the IMPORTONLY and OUTOFDATE options on the SCC SET TARGET command. This will compare the source in the PBL with the content of the exported source file, and only import those objects found to be out of sync. To use this feature, you must first synchronize the files in the local root folder from the SCC repository, which is typically done with the SCC provider’s command-line utility. This is a much more efficient way of performing a target-wide GetLatestVersion than requesting the operation from within the IDE. For example: • For example: start session SCC get connect properties "myWorkspace.pbw" start session SCC get connect properties "myWorkspace.pbw" SCC connect offline SCC set target ".\myTarget.pbt" "importonly outofdate" SCC refresh target "full" SCC close end session • IMPORTONLY EXCLUDE_CHECKOUT The EXCLUDE_CHECKOUT option can also be added to the SCC SET TARGET command, and that will skip the import process for any objects currently checked out to the specified user. This feature can also be used in conjunction with CONNECT OFFLINE for disconnected rebuilds. However, that forces OrcaScript to look into the .PBC file to retrieve the checkout status of the objects, so the objects must be checked out prior to disconnecting from the SCC repository. In addition, SCC GET CONNECT PROPERTIES “workspace” is required to obtain the .PBC file when using CONNECT OFFLINE. ▼ [email protected] www.SYS-CON.COM/pbdj/ T H E S T R A I G H T G O O D S O N E A S e r v e r. BRING APPS TO THE WEB WITHOUT LEAVING YOUR POWERBUILDER INVESTMENT BEHIND. It’s easy. It’s proven. Sybase EAServer is the have all rapidly web-enabled their PowerBuilder apps complete solution with the highest ROI with a faster and easier time to market. To discover how for moving PowerBuilder applications to the you can leverage your existing investments, check out Web. But don’t just take our word for it. Sierra our ROI Case Study Guide at Club, The Greenbrier Companies and Hennepin County, MN, www.sybase.com/pbextension. I n f o r m a t i o n A n y w h e r e™ S Y B A S E e - B U S I N E S S S O F T W A R E. TM E V E R Y T H I N G W O R K S B E T T E R W H E N E V E R Y T H I N G W O R K S T O G E T H E R. ©2002 Sybase, Inc. All rights reserved. All trademarks are the property of their respective owners. FEATURE Rules of Data Normalization Data modeling WRITTEN BY MIKE NICEWARNER I n this article, I discuss and provide examples of the many rules of data normalization. Currently I count at least seven, which are: 1. Eliminate repeating groups: Make a separate table for each set of related attributes and give each table a primary key. 2. Eliminate redundant data: If an attribute depends on only part of a multivalued key, remove it to a separate table. 3. Eliminate columns not dependent on the key: If attributes do not contribute to a description of the key, remove them to a separate table. 4. Isolate independent multiple relationships: No table may contain 16 PBDJ volume11 issue 11 two or more 1:n or n:m relationships that are not directly related. 5. Isolate semantically related multiple relationships: There may be practical constraints on information that justify separating logically related many-to-many relationships. 6. Optimal normal form: A model limited to only simple (elemental) facts, as expressed in ORM. 7. Domain-key normal form: A model free from all modification anomalies. Note: All normal forms are additive, in that if a model is in a third normal form, it is by definition also in the second and first. www.SYS-CON.COM/pbdj/ Eliminate Repeating Groups In the original member list, each member name is followed by any databases that the member has experience with. Some might know many, and others might not know any. To answer the question, “Who knows DB2?” we need to perform an awkward scan of the list looking for references to DB2. This is inefficient and an extremely untidy way to store information. Moving the known databases into a separate table helps a lot. Separating the repeating groups of databases from the member information results in the first normal form. The MemberID in the database table matches the primary key in the member table, providing a foreign key for relating the two tables with a join operation. Now we can answer the question by looking in the database table for “DB2” and getting the list of members (see Figure 1). FIGURE 1 | List of members Eliminate Redundant Data In the database table, the primary key is made up of the MemberID and the DatabaseID. This makes sense for other attributes like “Where Learned” and “Skill Level” attributes, since they will be different for every member/database combination. But the database name depends only on the DatabaseID. The same database name will appear redundantly every time its associated ID appears in the database table. Suppose you want to reclassify a database – give it a different DatabaseID. The change has to be made for every member that lists that database. If you miss some, you’ll have several members with the same database under different IDs. This is an update anomaly. Or suppose the last member listing a particular database leaves the group. His records will be removed from the system, and the database will not be stored anywhere. This is a delete anomaly. To avoid these problems, we need a second normal form. To achieve this, separate the attributes that depend on both parts of the key from those depending only on the DatabaseID. This results in two tables: “Database,” which gives the name for each DatabaseID, and “MemberDatabase,” which lists the databases for each member. Now we can reclassify a database in a single operation: look up the DatabaseID in the “Database” table (see Figure 2) and change its name. The result will instantly be available throughout the application. Eliminate Columns Not Dependent on the Key The member table satisfies the first normal form; it contains no repeating groups. It satisfies the second normal form since it doesn’t have a multivalued key. But the key is MemberID, and the company name and location describe only a company, not a member. To achieve a third normal form, they must be moved into a separate table. Since they describe a company, CompanyCode becomes the key of the new “Company” table (see Figure 3). The motivation for this is the same for the second normal form: we want to avoid update and delete anomalies. For example, suppose no members from IBM were currently stored in the database. With the previous design, there would be no record of its existence, even though 20 past members were from IBM. Isolate Independent Multiple Relationships This applies primarily to key-only associative tables and appears as a ternary relationship, but has incorrectly merged two distinct, independent relationships. The way this situation starts is by a business request list similar to Figure 4. This could be any two M:M relationships from a single entity. For instance, a member could know many software tools, and a software tool may be used by many members. Also, a member could have recommended many books, and a book could be recommended by many members. To resolve the two M:M relationships, we know that we should resolve them separately, and that would give us the fourth normal www.SYS-CON.COM/pbdj/ FIGURE 2 | Database table FIGURE 3 | Company table form. But, if we were to combine them into a single table, it might look right (it is in the third normal form) at first. This is shown in Figure 5 and violates the fourth normal form. To get a picture of what is wrong, look at some sample data, shown in Figure 6. The first few records look right, where Bill knows ERWin and recommends the ERWin Bible for everyone to read. But something is FIGURE 4 | Initial business wrong with Mary and Steve. Mary request didn’t recommend a book, and Steve doesn’t know any software tools. Our solution has forced us to do strange things like create dummy records in both Book and Software to allow FIGURE 5 | Incorrect solution the record in the association, since it is a key-only table. The correct solution, to cause the model to be in the fourth normal form, is to ensure that all M:M relationships are resolved independently if they are indeed independent, as shown in FIGURE 6 | Sample data from an incorrect Figure 7. solution PBDJ volume11 issue 11 17 FIGURE 7 | Correct fourth normal form the information correctly. This time we would have even more trouble because we can’t show the relationships between books and software unless we have a member to link to, or we have to add our favorite dummy member record to allow the record in the association table (see Figure 9). The solution, as before, is to ensure that all M:M relationships that are independent are resolved independently, resulting in the model shown in Figure 10. Now information about members and books, members and software, and books and software are all stored independently, even though they are all very much semantically related. It’s very tempting in many situations to combine the multiple M:M relationships because they are so similar. Within complex business discussions, the lines can become blurred and the correct solution not so obvious. Optimal Normal Form FIGURE 8 | Initial business request At this point, we have done all we can with entity-relationship diagrams (ERD). Most people will stop here because this is usually pretty good. However, another modeling style called object role modeling (ORM) can display relationships that cannot be expressed in ERD. Therefore there are more normal forms beyond the fifth form. With the optimal normal form (OMF) it is defined as a model limited to only simple (elemental) facts, as expressed in ORM. Domain-Key Normal Form FIGURE 9 | Incorrect solution FIGURE 10 | Correct fifth normal form Note: This is not to say that all ternary associations are invalid. The above situation made it obvious that Books and Software were independently linked to Members. If, however, there were distinct links between all three, such that we would be stating that “Bill recommends the ERWin Bible as a reference for ERWin,” then separating the relationship into two separate associations would be incorrect. In that case, we would lose the distinct information about the three-way relationship. This level of normalization is simply a model taken to the point where there are no opportunities for modification anomalies. If every constraint on the relation is a logical consequence of the definition of keys and domains: • A relation in DK/NF has no modification anomalies, and viceversa. • DK/NF is the ultimate normal form; there is no higher normal form related to modification anomalies. • A relation is in DK/NF if every constraint on the relation is a logical consequence of the definition of keys and domains. • Constraint is any rule governing static values of attributes that is precise enough to be ascertained whether or not it is true, e.g., edit rules, intrarelation and interrelation constraints, functional, and multivalued dependencies, not including constraints on changes in data values or time-dependent constraints. • Key is the unique identifier of a tuple. • Domain is a physical and a logical description of an attribute’s allowed values. • Physical description is the format of an attribute. • Logical description is a further restriction of the values the domain is allowed. • Logical consequence is to find a constraint on keys and/or domains that, if it is enforced, means the desired constraint is also enforced. The bottom line on DK/NF – if every table has a single theme, then all functional dependencies will be logical consequences of keys. All data value constraints can then be expressed as domain constraints. Practical consequence – since keys are enforced by the DBMS and domains are enforced by edit checks on data input, all modification anomalies can be avoided by just these two simple measures. ▼ • • • Isolate Semantically Related Multiple Relationships Now let’s modify the original business diagram and add a link between the books and the software tools, indicating which books deal with which software tools, as shown in Figure 8. This makes sense after the discussion on Rule 4, and again we may be tempted to resolve the multiple M:M relationships into a single association, which would now violate the fifth normal form. The ternary association looks identical to the one shown in the fourth normal form example, and is also going to have trouble displaying 18 PBDJ volume11 issue 11 This article has been reprinted with permission from www.datamodel.org. AUTHOR BIO Mike Nicewarner has been doing data modeling since the early 1990s for a number of insurance, manufacturing, and finance companies. He has taught and written a number of papers about data modeling tools and techniques. When it comes to modeling tools, he strives to improve the state of the art for everyone involved. [email protected] www.SYS-CON.COM/pbdj/ ©2003 Sybase, Inc. All rights reserved. All trademarks are the property of their respective owners. 4GL RAD Tools POWERBUILDER THE CLASSIC, TRIED-AND-PROVEN CLIENT/SERVER DEVELOPMENT TOOL. POWERBUILDER THE HANG-ONTOYOUR-SEAT CLIENT/SERVER DEVELOPMENT TOOL. For years, PowerBuilder® has reigned Take your client/server applications as the premier development tool to the next level with the for client/server applications. Our PowerBuilder Native Interface. newest iteration extends both our Integrate your existing and new leadership and your investment PowerBuilder applications with in skills and applications for C and C++ applications. And client/server development. There’s easily work with J2EE and .NET a host of exciting new features. components and applications Download all the technical details exposed as Web Services. Details at sybase.com/powerbuilder. at sybase.com/powerbuilder. INFORMATION LIQUIDITY. SYBASE INTEGRATION TECHNOLOGIES. E V E R Y T H I N G W O R K S B E T T E R W H E N E V E R Y T H I N G W O R K S T O PBDJ GETH E R TM . volume11 issue 10 11 FEATURE PowerBuilder in a .NET World Preserving your investment, skills, and knowledge in PowerBuilder WRITTEN BY XUE-SONG ET is becoming (or rather it has already become) a mainstream application development platform for developing both Windows Forms applications and Web applications, and more and more companies have adopted the .NET technology. Sybase anticipated this trend two years ago and developed a PowerBuilder .NET strategy. In that strategy, we decided to support .NET in four major steps. In the first step, we released with PowerBuilder 9 a PBNI extension called the WebServiceClient that enables PowerBuilder to consume .NET Web services. .N In the second step, we released a new product – DataWindow.NET – that makes the patented DataWindow technology available to .NET developers. The PowerBuilder .NET compiler is the next step in the strategy. In this article, I’ll give a brief introduction to the PowerBuilder .NET compiler we are working on. (Please note that the PowerBuilder .NET compiler is still in an early stage of development, so details are subject to change.) Overview The goal of the PowerBuilder .NET transformer is to be able to compile PowerBuilder applications into .NET applications (which could be a Windows Forms application, an ASP.NET application, or a smart client application) and to compile PowerBuilder non-visual objects (PowerBuilder NVOs) to .NET Web services. Compiling PowerBuilder applications to Smart Client applications and compiling PowerBuilder NVOs to .NET Web services might not be available in time for the next major release of PowerBuilder. Briefly the PowerBuilder .NET compiler consists of two main modules as shown in Figure 1: the PowerBuilder system library for .NET and the MSIL emitter. The MSIL emitter compiles PowerBuilder code into MSIL code that references the PowerBuilder system library for .NET. 22 PBDJ volume11 issue11 WU The MSIL emitter will be built into the PowerBuilder IDE in the next major release, which will be virtually transparent to PowerBuilder developers. What PowerBuilder developers will need to work with are two wizards and two project painters. The wizards are the .NET application wizard and the .NET Web services wizard, and the project painters are the .NET application project painter and the .NET Web services project painter. The wizards guide PowerBuilder developers to specific .NET projects, and the project painters are used to build .NET projects. The painters might be able to create an .msi file (Microsoft Installer file) that consists of the generated .NET application for installing or deploying the generated .NET application or Web services directly to the specified Web server. With these new wizards and painters, the PowerBuilder developers will be able to easily create and deploy .NET WinForm and WebForm applications, and Web services as well. PowerBuilder System Library for .NET The PowerBuilder system library for .NET, also transparent to developers, implements all PowerBuilder system classes, enumerations, and functions in .NET languages. The system library is basically managed, but not 100% managed, because the system library for .NET still relies on the DataWindow engine and the PBSHR.DLL library to communicate with database drivers. Since the goal of the PowerBuilder .NET transformer is to be able to compile PowerBuilder applications to both Windows Forms and Web Forms applications, the system library needs to make PowerBuilder controls (e.g., CommandButton) available for both Windows Forms and Web Forms. To achieve this, we implement two sets of PowerBuilder controls: one for Windows Forms and one for Web Forms. Figure 2 shows the assemblies of the system library and the related components. The system library consists of five assemblies and relies www.SYS-CON.COM/pbdj/ on DataWindow.NET, some third-party Web controls, and the PBSHR.DLL. • The Sybase.PowerBuilder.Core.Dll defines the fundamental components of PowerBuilder, including data types, arrays, enumerations, and some base classes such as PowerObject and Transaction. • The Sybase.PowerBuilder.Interop.Dll defines the PBSQL class for handling embedded SQL statements. • The Sybase.PowerBuilder.Common.Dll defines the PowerBuilder system classes that are common for both Windows Forms and Web Forms (e.g., the Connection class). • The Sybase.PowerBuilder.Win.Dll and Sybase.PowerBuilder.Web.Dll each define all PowerBuilder controls, such as Window, CommandButton, ListBox, and DataWindow. PowerBuilder provides many features: data types, arrays, function/event invocation, event handling, operators and expressions, statements, DataWindow, embedded SQL, external functions, PBNI, and EAServer integration, to name a few. You may be curious about how all those features are mapped to .NET. Here are some details. Mapping PowerBuilder Features to .NET DATA TYPES PowerBuilder provides 15 standard data types: blob, boolean, char, date, datetime, decimal, double, integer, long, real, string, time, unsignedinteger, unsignedlong, and longlong, and a special data type (any) that can be used to represent any kind of data. One unique feature of PowerBuilder is that it allows you to get/set the nullness of a value or a variable by calling the IsNull/SetNull system function. To support the data types and nullness, we defined a .NET interface IPBValue that has a property Null, which is both gettable and settable. For each PowerBuilder data type, we defined a .NET structure that implements the IPBValue interface. That way, it becomes possible to get/set the nullness of a value or a variable. Table 1 shows the mapping between PowerBuilder data types and .NET data types. You may be worried about whether defining a .NET structure for each PowerBuilder data type will affect the performance of the emitted .NET assemblies. In fact, the impact is not significant because .NET structures are value types that can be allocated from a stack, which is far more efficient than the heap. EVENT HANDLING PowerBuilder was one of the pioneers in development tools that explicitly defined an event model. It should come as no surprise that .NET also defines an event model. PowerBuilder defines about 600 events, most of which are associated with an event ID. For instance, the clicked event of the CommandButton control is associated with the event ID pbm_bnclicked. An event ID basically defines a method prototype, which is very similar to a .NET delegate. We map PowerBuilder event IDs to .NET delegates, PowerBuilder events to .NET events, and PowerBuilder event handlers to .NET methods. For example, the clicked event of the CommandButton-derived class cb_1 shown below is conceptually translated into the following C# code: public cb_1() { this.ClickedEvent += PBM_EventHandler(this.clicked); } public PBLong clicked() /*pbm_bnclicked*/ { PBSystemFunctions.MessageBox(new PBString("PowerBuilder"), new PBString("Hello world")); return new PBLong(1); } … } POWERBUILDER SYSTEM-DEFINED ENUMERATIONS PowerBuilder defines about 100 system-defined enumerations (e.g., Alignment, BorderStyle). For each of them, we defined a .NET enumeration that has exactly the same items as its PowerBuilder counterpart. The name of the .NET enumeration is the name of the PowerBuilder enumeration prefixed with “PB”. For instance, the PowerBuilder BorderStyle enumeration is mapped to the .NET PBBorderStyle enumeration. POWERBUILDER SYSTEM-DEFINED CLASSES For each PowerBuilder nonvisual system class (e.g., Connection) we defined a .NET class that is named the same as the PowerBuilder class name prefixed with “PB”. The .NET class provides exactly the same fields, methods, and events (if any) as its PowerBuilder counterpart. PowerBuilder data type Any Blob Boolean Char Date Datetime Decimal Double Int Long Real String Time Uint Ulong LongLong PBL files MSIL Emitter WinForm/ WebForm Application References to PB System Library For .NET event clicked messagebox(“PowerBuilder”, “Hello world”) end www.SYS-CON.COM/pbdj/ .NET data type Object byte[] bool char DateTime DateTime decimal double Int16 Int32 float String DataTime Uint16 Uint32 Int64 Table 1 | The mapping between PowerBuilder data types and .NET data types // PowerScript code type cb_1 from commandbutton within w_main … end // C# code public class cb_1 : PBCommandButton { public PBM_EventHandler ClickEvent; .NET struct defined PBAny PBBlob PBBoolean PBChar PBDate PBDateTime PBDecimal PBDouble PBInt PBLong PBReal PBString PBTime PBUInt PBULong PBLongLong FIGURE 1 | Main modules PBDJ volume11 issue 11 23 Sybase.PowerBuilder.Win.DII DataWindowControl Sybase.PowerBuilder.Web.DII Sybase.PowerBuilder.Common.DII DataWindow WebControl Sybase.PowerBuilder.Interop.DII Sybase.PowerBuilder.Core.DII 3rd party WebControl PDSIIR.DII DB Driver FIGURE 2 | System library and related components PowerBuilder visual system classes are handled the same way as nonvisual classes, except that we defined a .NET class in each of the Sybase.PowerBuilder.Win and Sybase.PowerBuilder.Web namespaces. For example, for the PowerBuilder CommandButton class we defined a PBCommandButton class in each of the Sybase.PowerBuilder.Win and Sybase.PowerBuilder.Web namespaces. The PBCommandButton class in the Sybase.PowerBuilder.Win namespace is implemented using the Button class in the System.Windows.Forms namespace provided by the .NET Framework, while the class in the Sybase.PowerBuilder.Web namespace is implemented using the Button class in the System.Web.UI.WebControls namespace. The two sets of visual classes make it possible to compile a PowerBuilder application into both a Windows Forms and a Web Forms application. OTHER FEATURES Other features, including arrays, operators and expressions, statements, SQL statements, dynamic/post method invocation, PBNI, and COM, are all mapped to a suitable .NET feature or implemented as .NET classes. With the PowerBuilder system library for .NET in hand, we can compile a PowerBuilder application into a Windows Forms application, a Web Forms application, or a smart client application, and a PowerBuilder NVO (nonvisual object) into an ASP.NET Web service. Windows Forms The visual classes for Windows Forms in the PowerBuilder system library for .NET are implemented using the Windows Forms controls provided by the .NET Framework. As a result, the look and feel of a Windows Forms application generated from PowerBuilder applications (what we call PowerBuilder Windows Forms applications) would be the same as typical .NET Windows Forms applications. PowerBuilder Windows Forms applications will support all features of PowerBuilder, and without the PBVM involved. short form of “Just-In-Time Compile.” When the .NET runtime is about to run an assembly, it will first compile the assembly into machine code, which is called “Just-In-Time Compile.”) Therefore the performance of ASP.NET applications is appealing. ASP.NET is maturing quickly. Microsoft has announced it will release ASP.NET 2.0 in year 2005. The Web Forms applications compiled from PowerBuilder applications (called PowerBuilder Web Form applications) are based on ASP.NET, so they can take full advantage of ASP.NET. MOVING POWERBUILDER APPLICATIONS TO THE WEB The PowerBuilder .NET compiler will compile a typical PowerBuilder client/server application into a three-tiered Web application, where the PowerBuilder client application becomes an ASP.NET application that runs in a Web server. When a user runs a PowerBuilder Web Form application from a Web browser, the application renders itself into an HTML file and JavaScript code, which is then displayed in the Web browser. When the user interacts with the application, certain post-back events will be triggered and handled by the server-side controls, and a new HTML file and JavaScript code will be generated to reflect the changes of the controls. For n-tier PowerBuilder applications that involve an application server, only the client application needs to be compiled into a PowerBuilder Web Form application; the NVOs deployed to the application server will remain untouched. Compiling a PowerBuilder application into a PowerBuilder Web Form application doesn’t incur dramatic architectural changes. A PowerBuilder application that doesn’t use an application server will continue working without an application server; an application that uses an application server will continue using it, and in the same way. POWERBUILDER MAKES WEB DEVELOPMENT EASIER There are some things that are difficult to do with ASP.NET, such as showing a message box or a dialog (response window in PowerBuilder’s terminology). Showing dialogs in ASP.NET applications is particularly difficult, which was described as “Dialog Hell.” In PowerBuilder applications when a function or an event opens a message box or a dialog, the execution of the function or event will be suspended until the message box or the dialog is closed; however, this is hard to achieve in ASP.NET applications. First of all, there are no built-in Web controls for a message box and dialog. Second, if an ASP.NET thread is suspended somewhere, an HTML file will not be rendered and sent to the Web browser, and therefore the Web browser will keep waiting for the response. To overcome this, we’ve developed the WebMessageBox control for showing message boxes, and the DialogOpener and DialogHolder controls for showing dialogs in a Web browser. When you develop ASP.NET applications with PowerBuilder, you don’t have to worry about how to overcome the shortcomings of ASP.NET. The PowerBuilder .NET compiler does it all for you. Web Forms A BRIEF INTRODUCTION TO ASP.NET ASP.NET provides a form-based programming method and an event-driven programming model, making Web application development much like Windows Forms application development. ASP.NET applications are built using Web controls that run at the server side. Web controls can generate certain HTML content and JavaScript code to represent them in a Web browser. When the user interacts with the Web page, certain post-back events will be triggered for the server-side code to handle. ASP.NET also supports state management and cache, making it a preferable platform for developing Web applications. Developers can write business logic directly in ASP.NET pages or in separate source files (known as code-behind) in any .NET language. The code is compiled into .NET assemblies, which, in turn, are jitted at runtime. (“Jitted” is the past participle of the word “JIT”, which is the 24 PBDJ volume11 issue11 STATES IN POWERBUILDER WEB FORM APPLICATIONS One thing worth mentioning is that a PowerBuilder Web Form application is a little different from a typical ASP.NET application where the server-side controls are destroyed and re-created with each server round-trip. The control tree of a PowerBuilder Web Form application is always kept in memory along with other nonvisual objects. There are both pros and cons to this approach. The good thing is that the ASP.NET runtime doesn’t need to re-create the control tree again and again and no ViewState is needed to pass across the wire, which implies that the performance is better. The downside of this approach is that the scalability will be affected due to the fact that the states are kept in process. If a PowerBuilder Web Form application is configured to run in a Web Form, Server Affinity is required to make sure the requests coming from the same client session are routed to the same Web server. (The Windows Server 2003 Enterprise Edition provides a www.SYS-CON.COM/pbdj/ clients (see Figure 3), so they can provide a rich and responsive user experience and at the same time they are easy to deploy and maintain. There is not a precise definition of smart clients yet, but smart clients have some common characteristics: they utilize both local and network resources, update automatically, and support occasionally connected users. Here is a scenario showing how a smart client works: the main assemblies are deployed to a Web server, and a small stub program is installed in client machines. Upon running, the stub program makes sure the local assemblies are up-to-date, and then launches the real application. When you upgrade the application, all you need to do is copy the assemblies to the Web server. Source: http://msdn.microsoft.com/smartclient/understanding/definition/ FIGURE 3 | Smart clients capture the benefits of both rich clients and Web clients service called Network Load Balancing, which can be configured to support “Server Affinity,” also called “IP Affinity.” For details, please refer to the article “HOWTO: Handle Web Client Session State in an Application Center 2000 Cluster” from MSDN Knowledge Base, Article ID: Q286279.) In a future version, we may introduce additional features to save the states in a StateServer or a database to improve scalability. UNSUPPORTED FEATURES The PowerBuilder .NET compiler can map almost all features of PowerBuilder to ASP.NET, but certain things will not work or will work differently from PowerBuilder due to the limitations of ASP.NET, which uses HTML and JavaScript to simulate desktop applications. The unsupported features include: • ActiveX: Visual ActiveX controls will not be visible in a Web browser because they can’t render themselves into HTML. Nonvisual ActiveX controls will still be callable. Please note that you should avoid using STA (Single Thread Apartment) COM components if possible because they require Thread Affinity (by setting the ASPCompat property to true). • File operations: Since PowerBuilder Web Form applications run at the server side, they cannot access files that are at client-side machines. • Registry: Probably not supported • Clipboard • Drag and drop • Hot keys, shortcut keys, and accelerate keys • Some events (e.g., mouse move event) Smart Clients A BRIEF INTRODUCTION TO SMART CLIENTS ASP.NET is a great framework for developing Web clients, whose most attractive point is that they are easy to deploy and maintain. Nothing needs to be installed in the client machines, and upgrading a Web client application involves merely copying files to the virtual folder. Web clients, however, do have their drawbacks: Web clients cannot leverage on the power of client-side machines, and the user experience of Web clients cannot be very rich. If an application requires a lot of user interactions, making it a Web client application is just unacceptable. Rich clients (e.g., Windows Forms), on the other hand, can provide a very rich and responsive user experience that utilizes local resources. But rich clients are harder to deploy and maintain. Installing and upgrading a rich client application can be a real pain, because you have to do it for each and every machine that needs to run the application. That is where smart clients come to the rescue. Smart client applications are designed to provide the benefit of both rich clients and Web 26 PBDJ volume11 issue11 POWERBUILDER SMART CLIENTS PowerBuilder smart client applications are basically Windows Forms applications. The difference is that instead of compiling the PowerBuilder application to an .exe file, the PowerBuilder .NET transformer compiles the PowerBuilder application into a .NET library, and generates a stub program that can download the .NET library and other necessary files from the specified Web server and launch the application. Web Services Web services are ideal for cross-platform communication in heterogeneous environments because of their use of open standards such as XML and Simple Object Access Protocol (SOAP). The ease of deployment and maintenance makes Web services a very attractive approach. PowerBuilder 10 allows you to deploy PB NVOs as Web services, but only through deploying the NVOs to EAServer, which may not always be acceptable. In PowerBuilder DaVinci (the code name of the next major release), you’ll have another choice: deploying PowerBuilder NVOs as ASP.NET Web services. The tool for doing this is again the PowerBuilder .NET compiler. The compiler can compile a PowerBuilder NVO into an XML Web service class and generate an .asmx file for it. With this feature, PowerBuilder becomes a much more open Web services producer. Summary The PowerBuilder .NET compiler will preserve your investment, your skills, and your knowledge in PowerBuilder. Without going through the steep learning curve of .NET, PowerBuilder developers will automatically become .NET developers for not only Windows Forms applications, but also Web Forms applications. In the releases beyond PowerBuilder DaVinci, you’ll be able to import .NET classes into your PowerBuilder applications, which will greatly increase the power of PowerBuilder. While PowerBuilder makes common things easy to do, the ability to make use of .NET classes enables you to do virtually anything that can be done with the .NET framework. In the future, PowerBuilder might become even more in line with .NET. For example, the PowerBuilder IDE might host the .NET designer for creating a user interface and generating UI code (still in PowerScript), and the .NET compiler might become the native compiler of PowerBuilder. ▼ References • http://weblogs.asp.net/jezell/archive/2003/08/26/25450.aspx • http://msdn.microsoft.com/smartclient/understanding/definition/ AUTHOR BIO Xue-song Wu is a staff software engineer in the Sybase Asia Development Center, Singapore, and a team leader of the PowerBuilder Virtual Machine and Compiler team. [email protected] www.SYS-CON.COM/pbdj/ FIRST LOOK Flying High with PocketBuilder v2.0 WRITTEN BY IAN THAIN A competitive edge can’t think of a better place to stress the virtues of mobile applications than from where I’m writing this article, on Virgin Atlantic, flight VS19 from London to San Francisco. Even at 35,000 ft above Greenland and traveling at 500 miles per hour, I’m using a PocketBuilderbuilt Windows mobile smart client application to access and update data for later synchronization to my corporate database – occasionally connected, always available taken to new heights. I As a reminder for the frequent flyer or novice, the benefits that smart client mobile applications offer to businesses today are improved productivity, better responsiveness and service, and more accurate and timely data so that your mobile workforce has a competitive edge and reduction in back-office data entry. Why am I traveling to San Francisco? Well, October was the month for CTIA and the Pocket PC Summit and this was where Sybase announced the successor to Pocket PowerBuilder v 1.x. The first version of this tool won the JOLT Excellence Award and the Mobile Village Award, so what is Sybase doing to enhance the product? Aside from the name change – the product will now be called PocketBuilder beginning with v2.0 – we are raising the altitude for a RAD Windows mobile development tool and setting the course for new areas of productivity. Let’s take some time and look at these new features. AUTHOR BIO Ian Thain is a technical evangelist and software engineer at Sybase Inc. He has been using PowerBuilder since v2.0, EAServer since v3.0 and Pocket PowerBuilder since its beginning. 28 Phone Enablement These are the two words that embody this release and cover a multitude of features that the PocketBuilder engineers have worked long and hard on. In fact, we know they have done well when it becomes difficult to discuss these features in more than just a few words. PBDJ volume11 issue 11 What does phone enablement really mean? From within your PocketBuilder application on either a Pocket PC Phone Edition or Smartphone device (see Figure 1) you’ll be able to originate and receive voice calls, send SMS text messages, and interrogate the dialing directory and call log. These are all powerful features that will add extra dimensions and innovation to your mobile applications. Some of you may have seen my Insurance Assessor application that I demonstrated during the keynote at TechWave this year. It allows an insurance assessor to manage appointments, input details in written text pictures or voice, and synchronize them back to the corporate database. PocketBuilder v2.0 has the added enhancement to enable Assessor to send SMS messages to the client directly. For example, if the assessor is going to be delayed, a call can be made directly to the client without leaving the application. Remember, to win at mobile application development your applications must succeed in the key areas of usability, innovation, business process integration, and return on investment. All of these key areas are addressed with PocketBuilder. Design Time and Runtime Within the IDE there are a few changes as well; these include being able to change the window size to any of the WM2003-SE supported types (QVGA – Portrait, Landscape; VGA – Portrait, Landscape, etc.). There is also the functionality to specify different input method modes for different entry fields. For example, one field could show the Keyboard IME (input method editor) and others could show the Jot IME (see Figure 3). We have also added some new system-level functions for getting and setting the orientation of your WM2003 Second Edition device from within your PocketBuilder application, as well as FIGURE 1 | Pocket PC Phone Edition or Smartphone device Smartphone Changes These changes will probably be the features that you notice the least, although a lot of work has gone into them. For the important user interface of your applications, we follow Microsoft Design Standards and therefore have implemented at runtime the spinner control (which can be seen in Figure 2, for the current outgoing line) for the DropDown ListBox and ListBox. For Smartphone deployment, PocketBuilder is now able to automatically sign a CAB file from the project painter. This is a necessity for Smartphone deployment. FIGURE 2 | Spinner control www.SYS-CON.COM/pbdj/ $198.00 * ( FREE CD! VALUE!) PBDJ ADVERTISER INDEX ADVERTISER URL PHONE Secrets of the Java Masters Active Endpoints, Inc. www.active-endpoints.com 203-929-9400 2 Every JDJ Article on One CD! Amyuni Technologies www.amyuni.com 866-926-9864 33 Assande www.assande.com ClearNova www.clearnova.com/thinkcap 770-442-8324 11 E.crane www.ecrane.com 603-226-4041 36 iAnywhere www.ianywhere.com 800-801-2069 35 IT Solutions Guide www.sys-con.com/IT 201-802-3020 27 PowerBuilder Developer's Journal www.sys-con.com/pbdj 201-802-3026 31 Sybase http://eshop.sybase.com/eshop 877-230-6771 13 Sybase www.sybase.com/pbextension 877-230-6771 15 Sybase www.sybase.com/powerbuilder 877-230-6771 7, 21 Sybase www.sybase-iad-services.com/30081a 877-230-6771 9 Web Services Edge Expo www.sys-con.com/edge — The Complete Works — CD is edited by JDJ Editor-in-Chief Alan Williamson and organized into 33 chapters containing more than 1500 exclusive JDJ articles! All in an easy-to-navigate HTML format! BONUS: Full source code included! PAGE 5 ORDER AT WWW.SYS-CON.COM/FREECD *PLUS $9.95 SHIPPING AND PROCESSING (U.S. ONLY ) ©COPYRIGHT 2004 SYS-CON MEDIA. WHILE SUPPLIES LAST. OFFER SUBJECT TO CHANGE WITHOUT NOTICE. ALL BRAND AND PRODUCT NAMES ARE TRADE NAMES, SERVICE MARKS OR TRADEMARKS OF THEIR RESPECTIVE COMPANIES. Only from the World’s Leading i-Technology Publisher www.SYS-CON.COM/pbdj/ 201-802-3066 20-21 Advertiser is fully responsible for all financial liability and terms of the contract executed by their agents or agencies who are acting on behalf of the advertiser. This index is provided as an additional service to our readers. The publisher does not assume any liability for errors or omissions. PBDJ volume11 issue 11 29 finding and bringing a previous instance of a window to the forefront and identifying phone-capable devices. Native Controls for New Hardware FIGURE 3 | Jot IME FIGURE 4 | Socket scanner device Support for more controls is now built into the RAD IDE of PocketBuilder. Included in the ranks alongside the biometric scanner and symbol scanner are the camera, GPS (global positioning system), and socket scanner devices (see Figure 4). These controls can be added into the object definition and used easily. If you have already used and developed for PocketBuilder and have been checking out CodeXchange, you’ll recognize that some of these were created in the last six months and distributed as interface DLLs. However, they have now been expanded and “baked” into the PocketBuilder VM. This means it’s even easier to use any of these devices in your applications since we’ve abstracted the complex vendor APIs into simplistic PocketBuilder objects. For example, the Camera object was originally devised for the HP and VEO SDIO camera. Now, since it’s a native control, the instantiation of the camera object will enable developers to code for other cameras such as those found in the HTC manufactured devices using IAStyle’s Camera wizard. What’s Coming Over the Horizon? Unfortunately, there were a few things that didn’t make it into PocketBuilder v2.0. One was the support for ADO.NET. This will give you, the developer, the ability to access Microsoft SQL CE databases, which is yet more proof of our openness and acute ability to listen to our customers’ needs. The other is remote debugging, where the breakpoint that you hit is actually on the device rather than in an emulator within the application running in the IDE. Both of these will follow fairly quickly in a point release. Last, the ability to receive SMS messages is coming soon, and this will be a cool feature! ▼ [email protected] ~continued from page 10~ Enterprise Distribution of Your PocketBuilder Applications generation tool, and by the name of the CAB inf file and the processor type (always ARM for Pocket-Builder applications) the install is for. If the name of the CAB inf file is myapp.inf, the corresponding CAB file would be myapp. arm.cab. This file has to exist in the defined “Output Path.” • The name of the output file (the setup file for your end users) is the application name defined on the CAB Config tab. Take care that you don’t use any spaces in any of your path and file names as this is not supported by EzSetup. Make sure the radio button is checked and click the Build button. If all your files exist and no spaces exist in your path names, you’ll get the setup file. Feel free to execute it and browse through the created installer. It will copy your application CAB file to the location 30 PBDJ volume11 issue 11 defined in the registry key HKLM\Software\Microsoft\Windows CE Services\InstalledDir, and the next time your application will be installed into your device by ActiveSync automatically. Conclusion It’s a lot of fun programming PocketBuilder, but until now it was hard to create the needed files to distribute applications to end users in a professional way. PocketBuilder has changed this by providing PocketBuilder developers with a CAB configuration tool. Developers will configure the creation of the CAB files there and in a second step they will create a professional-looking setup file that will be distributed to the end users. I wish you a happy time PocketBuilding!1 ▼ [email protected] www.SYS-CON.COM/pbdj/ YOUR FASTEST ROUTE TO POWERBUILDER DEVELOPERS • Each issue is devoted exclusively to the newest aspects of PB development using version 9.0, Pocket PB 1.0, PowerDesigner 9.5.2, iAnywhere Solutions, etc. • Written by acknowledged PB and EAServer experts • Published monthly, circulated worldwide - the world's first and leading PowerBuilder print and online resource • Now in its 10th year ! www.SYS-CON.COM/pbdj/ www.sys-con.com/pbdj/ For more details contact Carrie Gebert 201 802.3026 [email protected] PBDJ volume11 issue 11 31 Power Puzzle Answers: page 34 Across–––––––––––––––––––––––––––– 4. If an XML document is ___________, it satisfies the XML syntax rules and can be transmitted without the its schema file. 6. A method for searching XML documents, which is not currently supported by PowerBuilder, is _____. 8. The standard that is used to allow for searching through a repository of web services and retrieve their definitions is known as ____. 10.XML documents are transformed into other document types through XSLT. The S in XSLT stands for _____________. 12.PBDOM is only available with the _____________ edition of PowerBuilder. 14.The Export.XML._______ property determines how (and if) the schema definition for the XML is generated. 16.A web service is accessed through its URL, or ______ Resource Locator. 18.DOM stands for Document ______ Model, 32 PBDJ volume11 issue 11 a document based method of parsing XML files. 20.One way in which XML differs from HTML is that in XML the tags are _____________. 21.XML and HTML are both derived from a much older markup language called ____. 22.XML stands for __________ Markup Language Down–––––––––––––––––––––––––––– 1. The ____________ PBDOM function is used to get the parent PBDOM_DOCUMENT object for a particular PBDOM_ATTRIBUTE object. 2. The ___________ PowerScript function can be used to determine if an XML document is well formed. 3. The _________ PBDOM method is used to insert data into a PBDOM_ELEMENT. 5. ____________ instructions (PIs) are embedded in ‘<?’ and ‘?>’ tags. 7. A _____ section is ignored by the XML parser, and is useful for transmitting raw data (e.g., binary files). 9. XML FO stands for XML _______objects, a mechanism in which XML is transformed using XSLT into other document types (e.g., PDF). 11.SAX stands for ______ API for XML, and event driven model for parsing XML documents. 13.The protocol that provides for the transmission of XML documents in response to RPC called over HTTP is called ____. 15.The ‘<!--’ characters are used to indicate the beginning of a ________. 17.In order for an XML document to be _____ it must conform to the document type description (DTD). 19.PowerBuilder uses a third-party XML parser from Apache called _______ to handle XML documents. 20.The _____ PBDOM function is used to create a copy of a PBDOM_ELEMENT. www.SYS-CON.COM/pbdj/ PowerBuilder News All things of interest to the PB community BY BRUCE ARMSTRONG [email protected] THIRD-PARTY TOOLS PowerGen 6.0 10/08 – E. Crane Computing announced the release of PowerGen version 6.0. PowerGen v6.0 is a major upgrade to PowerGen v5.0, adding support for PowerBuilder v10.x, and continuing support for PB v5.x, 6.x, 7.x, 8.x, and 9.x. It supports the Unicode implementation in PB10 and can export from PB10 PBLs to pure ASCII source files and can import ASCII files. Import, Bootstrap Import, and Synchronize are all available. PowerGen v6.0 also expands PowerGen functionality in several significant ways. www.ecrane.com Database Genius 2.0 9/26 – SV Software announced the release of Database Genius 2.0, a reporting engine that can be embedded in PowerBuilder applications. The new version supports nested reports, library lists, saving reports as PDF, importing/exporting XML and CSV, multiple languages, and a data dictionary. www.svsoftware.net/ smlPortal 3.0 9/17 – PowerObjects announced the release of smlPortal 3.0, a tool that allows IT organizations to rapidly deploy PowerBuilder DataWindowbased reports and forms to the Web, and is affordable to both small and large companies. Using smlPortal, Web developers achieve maximum code reuse and a small learning curve that allows customers to utilize current development skills and current objects that are already deployed in production environments. www.powerobjects.com PowerBuilder/PocketBuilder See related “Mobile Village Awards” below. CORPORATE eOffers 9/20 – Sybase announced the successful launch of eOffers, an 34 PBDJ volume11 issue 11 eGovernment online portal of the commercial acquisition business unit of GSA’s Federal Supply Service (FSS). The enterprise infrastructure and information management solution provided by Sybase ASE, an enterprise-class relational database management system, and Sybase EAServer application server on Linux has enabled eOffers solution at GSA to deliver a streamlined, higher level of service by expediting the FSS IT schedule contracting process through online applications. iANYWHERE AvantGo for Ericsson P910 Smartphones 10/05 – iAnywhere Solutions (a subsidiary of Sybase) announced that it is working with Sony Ericsson to provide AvantGo mobile content to users of the new Symbian-based P910 Smartphone. Sony Ericsson Smartphone users can now quickly and easily synchronize hundreds of mobile Web sites containing news, weather, sports, and entertainment, including content from many of the world’s top media brands, using either their desktop computer or a wireless Internet connection. Unwired Accelerator and Unwired Orchestrator 10/04 – Sybase announced two complementary new products to rapidly mobilize and extend enterprise applications for the burgeoning mobile workforce. Sybase Unwired Accelerator empowers nontechnical users to quickly mobilize without programming Web applications, databases, Web services, and other data sources for delivery to a wide spectrum of mobile devices for both connected and occasionally connected access. Mobile Village Awards 9/28 – Mobile solutions from Sybase and its iAnywhere Solutions subsidiary were recognized by MobileVillage Inc., winning five first place 2004 MobileVillage Mobile Star Awards in the following enterprise software categories: • Mobile developer tool: Pocket PowerBuilder • Mobile database: SQL Anywhere Studio • Mobile middleware: M-Business Anywhere • Mobile device management: XcelleNet Afaria • Wireless Web content provider: AvantGo Market Strategy Leadership Award 9/22 – Frost & Sullivan presented iAnywhere Solutions (a subsidiary of Sybase) with the 2004 Market Strategy Leadership of the Year Award in the sales force automation (SFA) mobile middleware market at the Excellence in Mobile Communications Awards Banquet. Credited as the market leader in the mobile database, device management, and middleware markets, iAnywhere has over 9 million deployed technology licenses for its mobile and embedded database products. Mobile Lifestyle Survey 9/21 – AvantGo (a subsidiary of Sybase) released the results of the AvantGo 2004 Mobile Lifestyle survey. The survey reveals that when it comes to device functionality, early technology adopters want to have their cake and eat it too. When asked to imagine the “musthave” features of an all-in-one “dream device,” survey respondents chose a surprising combination of “bells and whistles” and standard options. The September survey of 3,260 AvantGo users, conducted entirely via PDAs and smartphones, also revealed that 85% of Pocket PC owners and 82% of Palm owners said that they planned to stick with the same operating system with their next purchase. ADAPTIVE SERVER ENTERPRISE World’s Largest Data Warehouse 10/04 – Sun Microsystems and Sybase announced that they have created the largest, verified data warehouse in the world according to an independent audit conducted by InfoSizing, Inc. The Sun and Sybase iForce Enterprise Data Warehouse Reference Architecture – consisting of Sun Fire servers, Sun StorEdge storage subsystems, and Sybase IQ, a highly scalable analytical engine – enables customers to set up such highly scalable data warehouses in days instead of months, while also minimizing storage costs. ASE for Linux 9/08 – Sybase demonstrated its commitment to the Linux community through the release of the first free deployment version of an enterprise-class Linux database: Sybase Adaptive Server Enterprise Express Edition for Linux. Now enterprises, the developer community, and small businesses will be able to build, test, and deploy new applications with no license fee, allowing them to experience the substantial performance and cost-savings benefits of Sybase ASE on Linux, recognized as the “Best Linux Database” in the 2003 LinuxWorld Magazine Readers’ Choice Awards, and as the low TCO leader over Oracle, IBM, and Microsoft by the Standish Group. Power Puzzle Answer Key 1 G E T O W N 8 U E R 12 E N D O 13 S C O U 14 M E T A P E N T 18 O B J E B J E 22 E C T 2 X W E L L F O R M L 6 X P 7 A C 9 R F D D I 10 S O A T E R P R I S E F M A I A L T D A T A T Y P E I 16 U N I F O G C T 20 C A S E S 21 S G M L O X T E N S I B L E 4 3 A D D P C R T H O O N C 11 Y L E S H E E T E S I N S M T I P N L 15 G E C O 17 M V M A 19 X E L N S I T I V E R T D C E S E D 5 A T R E E www.SYS-CON.COM/pbdj/ Forget the wires. We know the ropes. Wondering how to get your Wi-Fi projects off the ground? We can show you how. We’re iAnywhere Solutions, the leading provider of solutions for the unwired enterprise. Emerging wireless technologies such as Wi-Fi now enable businesses to deliver a desktop computing experience to mobile workers. We have more than a decade of experience delivering "always available" access to corporate data and applications – keeping your mobile workers productive when they don’t have a wireless connection and providing information security and synchronization services when they enter a wireless LAN or hot spot. More than ten thousand companies and one thousand partners worldwide rely on mobile technology from iAnywhere Solutions. Let us show you the ropes to get your Wi-Fi solutions off the ground quickly. Call 1-800-801-2069 or visit www.ianywhere.com. Copyright 2003. iAnywhere Solutions, Inc. All rights reserved. iAnywhere is a trademark of Sybase, Inc. or its subsidiaries. All other trademarks are the property of their respective owners. www.ianywhere.com
Similar documents
English - SAP Help Portal
If a WPF application includes third-party controls and the required reference as sembly files are not in a build subfolder (..\bin\Debug or ..\bin\Release), when you publish it as a SmartClient ap...
More information