Archives
 
 
 
  Special
 
 
 
  About Us
 
 
 

Newsletter
Free E-mail Newsletter from BYTE.com

 
    
           
Visit the home page Browse the four-year online archive Download platform-neutral CPU/FPU benchmarks Find information for advertisers, authors, vendors, subscribers Request free information on products written about or advertised in BYTE Submit a press release, or scan recent announcements Talk with BYTE's staff and readers about products and technologies

ArticlesProspero's Magic Application Integrator


February 1996 / Reviews / Prospero's Magic Application Integrator

A new visual programming tool helps integrate data from different Windows applications into single-click programs

Kelly Trammell

Like its namesake in Shakespeare's The Tempest , Oberon Software's Prospero promises to work magic. With Prospero, you graphically specify the interactions between popular Windows applications and data sets and then compile the result into a stand-alone program.

Here's an example. You can draw a visual program, or map, to transfer sales data from a database, merge the data with contact information from a contact manager, consolidate and total the data in a spreadsheet, insert the data into a word processor document, then print it out. The map compiles the integration instructions with the l inks to the various source and target application data into a single executable file. You can then run this .EXE file without manually opening any of the applications.

Building with Blocks

Programming in Prospero uses three basic elements: building blocks, connections, and ports. Building blocks are the components that represent tasks. Building blocks can generate, collect, or control data. Prospero uses three types of building blocks: application templates, common building blocks, and system-defined blocks.

Application template blocks are tied to specific third-party applications, such as Microsoft Excel or Lotus Notes. Prospero comes with predefined application blocks for Word and Excel, Notes, Symantec's Act contact manager, Delrina's WinFax Pro, MAPI-based electronic mail, and SQL databases. These blocks have predefined BASIC code.

Common blocks are set up to perform common chores, such as if/then/else flow, calculating formulas, and handl ing variables. Developers can program these blocks by filling out forms that construct BASIC code for the block. One common block is, essentially, a BASIC editor for developing custom blocks.

System-defined blocks are used for other common programming tasks, such as looping, counters, moving data to the clipboard, and printing. The only difference we could find between common and system-defined blocks is that you can't modify the latter's code.

Ports are the connection points between building blocks. For example, in moving sales-contact information from Act to Excel, the programmer must specify the Act field names as output ports and an Excel named range as the input ports. Data flows through pipelines called connections, which the programmer creates by drawing lines on-screen between ports. Connections can allow only one value to pass through (indicated with a single arrowhead) or multiple values (double arrowhead).

Making Programs with Prospero

Cre ating a Prospero program is quite simple. Open the visual program editor, which is similar to any vector-based drawing program. Drag-and-drop or insert a building block onto the editor screen for each task, and develop any new building blocks for BASIC subroutines you may need. Configure your building blocks as needed, specifying data, application, and file location, selection criteria, and actions to be executed. Next, you connect the ports on the building blocks, specifying the order of execution and the direction and amount of data to be moved. After testing, you can compile the visual program into an executable file.

Turn on Prospero's animation mode and, during program execution, each component on the visual editor will change color when it's active. Not only is this neat, it also serves as a kind of visual data flow debugger, since you can see the component interaction in real time.

Oberon recommends at least a 486DX2/66 processor, 8 MB of memory, 10 MB of disk space, and Windows 3.11, Windows NT 3.5, or Windows 95. Prospero is a 32-bit application, so if you're running Windows 3.11, you must install the Win32s DLLs; Oberon also recommends that you install their ODBC Win32s extensions. We installed Prospero on a Compaq Prolinea running Windows 3.11 with a 75-MHz Pentium and 16 MB of RAM. We also used Oberon's Win32s DLLs and ODBC drivers. The entire process took less than 15 minutes.

The program comes with a sample application that we tried to re-create. This puts up a dialog box to get filter information from the user, selects records from an Act database, and transfers the data to an Excel spreadsheet. Building the sample program is simple and gives you a basic understanding of how the tool works.

However, the first time we executed the program, we ran out of resources. We closed everything that was running except Prospero and the program then worked. On the third execution, the application ended abruptly with the error message "Object creation failed." Using the integrated debugger, we set breakpoints and found the program wasn't opening the Excel spreadsheet. We tried a number of alternatives without success. Finally, we closed the program and re-created it. This time, it ran without a hitch.

Doing Real Work

Here's an example of Prospero in the real world. At KPMG Peat Marwick, an administrative person periodically collects sales information from Excel spreadsheets that have been E-mailed from various parts of the organization. This person has to consolidate and rekey the data into a Notes database for sorting, viewing, and reporting. This task normally takes 6 to 8 hours per month. We developed a Prospero application to automate the process and add a reporting function using Microsoft Word.

We initialized an Excel block for each spreadsheet using the import feature, and Prospero correctly preconfigured the blocks for name, location, and named ranges. We then added a new Excel block to consolidate these into a single spreadsheet. Specifying the ports was easy. However, when we tried to append data into the global spreadsheet, the program kept overwriting the previous contents. We finally fixed this, with a little help from Oberon's technical support staff, by changing input options.

Next we set up two Notes blocks -- one to catch data from the global spreadsheet and another to transfer selected data to a report. To make this work, we created a new view in the Notes database for the status report data. We prompted the user for a date range, then fed that back into the Notes block to extract the chosen records into the report. We compiled the application and ran it several times. Performance wasn't bad: The program processed some 500 records in approximately 3 minutes.

Steep Learning Curve

Prospero is most useful for repetitive tasks or infrequent batch data conversions where the underlying data and file layouts don't change often. For dynamic data, however, it has some limitations. If you rename or move a sprea dsheet, the Prospero application must be recompiled or run via the interpreter.

Like most point-and-click programming tools, once you move beyond simple data transfers, Prospero's level of complexity goes up tremendously. One factor that complicates the learning process is that each type of building block has some unique configuration options. Become an expert at configuring the Excel block, and you still have to learn the Notes block, the Word block, and so on.

This kind of difference between applications also surfaced when we tried to perform equivalent functions in Notes and in a SQL database; the options are different. Also, you can insert additional SQL code into a SQL block. Furthermore, the SQL block has buttons you can use to set the record-selection criteria.

For the next release, Oberon should try to make similar functions look and act similarly to the programmer across different building blocks. This would substantially reduce the complexity associated with learning the softwar e.

Prospero has a ton of functionality, and its visual editor and animation features are really slick. However, to get Prospero to do complicated tasks, like multiple filters or data merges, you have to spend a lot of time learning how the tool works.


PRODUCT INFORMATION


Prospero........................$695

Oberon Software Inc.
Cambridge, MA
(617) 494-0990
fax: (617) 494-0414
Circle 1133 on Inquiry Card.

HotBYTEs
 - information on products covered or advertised in BYTE


The Essential Prospero

screen_link (51 Kbytes)

The screen at left shows the essentials of a Prospero visual program on the editor screen. Each block indicates its application or data source, field names, what data gets transferred to where, and the nature of those transfers. The palette at bottom contains sample blocks for various applications and functions.

Below, a properties block for a Notes database shows how visual programming substitutes forms and templates for declarations and selection criteria.


Kelly Trammell is a partner with KPMG Peat Marwick's Strategic Services in Houston, Texas. You can reach him on the Internet at ktrammel@kpmg.com .

Up to the Reviews section contentsGo to previous article: Go to next article: Data on the MoveSearchSend a comment on this articleSubscribe to BYTE or BYTE on CD-ROM  
Flexible C++
Matthew Wilson
My approach to software engineering is far more pragmatic than it is theoretical--and no language better exemplifies this than C++.

more...

BYTE Digest

BYTE Digest editors every month analyze and evaluate the best articles from Information Week, EE Times, Dr. Dobb's Journal, Network Computing, Sys Admin, and dozens of other CMP publications—bringing you critical news and information about wireless communication, computer security, software development, embedded systems, and more!

Find out more

BYTE.com Store

BYTE CD-ROM
NOW, on one CD-ROM, you can instantly access more than 8 years of BYTE.
 
The Best of BYTE Volume 1: Programming Languages
The Best of BYTE
Volume 1: Programming Languages
In this issue of Best of BYTE, we bring together some of the leading programming language designers and implementors...

Copyright © 2005 CMP Media LLC, Privacy Policy, Your California Privacy rights, Terms of Service
Site comments: webmaster@byte.com
SDMG Web Sites: BYTE.com, C/C++ Users Journal, Dr. Dobb's Journal, MSDN Magazine, New Architect, SD Expo, SD Magazine, Sys Admin, The Perl Journal, UnixReview.com, Windows Developer Network