DBMS

Prospero 1.1

By Joseph Williams
DBMS, September 1996 Oberon's visual programming tool Prospero 1.1 lets developers share and transfer data from a single source among different desktop and client/server programs.

As more and more applications find their way to the desktop, the ability to share data among these applications becomes increasingly important. Oberon's Prospero 1.1 is a visual programming tool that lets you share and transfer data between different desktop and client/server programs, including Microsoft Word, Microsoft Excel, Symantec ACT!, Lotus Notes, ODBC databases, and the Internet. Prospero's simple graphical interface makes it easy for end users and developers alike to create visual programs that provide integrated business solutions.

The most basic component of a Prospero program is called a graphical building block. These blocks fit together to create programs that can be run at any time to integrate data among different sources. Building blocks shield the user from the complexities of application APIs, OLE2 technology, and ODBC databases by providing graphical access to more sophisticated technologies. Each building block has characteristics called behaviors that define what the block can do. For example, a database source can behave as an update, insert, delete, or select query.

In the Beginning
Installing Prospero from the CD is simple and straightforward. A dialog gives you the option of performing the initial installation, adding new extensions for Prospero to use, configuring Windows to run with the executables Prospero creates, or running the demo. The installation is quick, and in no time you're ready to work. Upon launching the application for the first time, I was presented with four MDI child windows that compose the Prospero workspace. The interface centers around the visual program editor.

The visual program editor workspace is like a blank piece of paper. To begin, select an icon from the palette or the Extensions window that represents the data source with which you want to work. Data sources are one type of building block. A building block is merely a reusable component that performs a task or tasks within the visual program. In addition to accessing a data source, a building block can perform logic functions, contain a Basic or C++ script, provide an interface to an API, or perform many other tasks.

The actual data is represented in a data source as a port. This port could be a field in a database, a named range in an Excel spreadsheet, a bookmark in a Word document - you get the picture. In the most simple visual program, you merely connect the ports of the source and destination data blocks and you have a data migration tool.

To test this basic functionality, I created a form letter in Microsoft Word. I had recently attended a conference and needed to send follow-up letters to 150 conferees. I created a template letter that contained bookmarks where I wanted to import data. Next, I opened Prospero and dragged the Word icon from the palette to the visual editor and associated it with my Word document. I then dragged the Database icon from the palette to the visual editor and connected the ODBC source to my conference database. After connecting the source and destination ports by dragging and dropping the associated database field to the appropriate bookmark in Word, I was ready to run the application. Immediately, I had my form letter. By setting the Mail Merge check box in the Word building block setup screen, my form letter is sent to the printer each time the bookmarks are refreshed.

Give Me More
The database manipulation I performed was a simple select query. I can also configure Prospero to perform delete, update, and insert queries by double-clicking on the database building block and selecting the Setup button. In addition to simple data transfers, I can perform data manipulation such as filtering, arithmetic functions, and even SQL passthrough statements that can accept variables at runtime by using other building blocks on the palette.

I can select only the data that meets a certain criteria by using the variable building block. For example, in my form letter mailing, I might want to send letters only to people with the last name "Williams." The first step in performing this operation would be to reopen my database building block and check the Last_Name field in the Criteria Fields list on the Table Setup dialog. I would then drag the variable building block icon to the visual editor and enter "Williams" for the initial value in the variable dialog. Connecting the Value port on the variable building block to the Lookup Last_Name port on the database building block completes the task. The next time I run the visual program, the list will return only conferees with the last name Williams.

Around the Blocks
Prospero packages many standard building blocks that perform a wide range of functions. You can integrate decision trees, if/then logic, list management, execution of loops, and sorting, all by dragging the proper icon to the palette. By dragging a printer icon to the visual editor and connecting a document to its input port, you can print any source document as part of the visual routine. There is also a building block for WinFax Pro. If WinFax is installed on your system, you can use this block just as you would a printer to send output directly to the fax machine. This functionality is what makes Prospero much more valuable than a simple data migration tool. Integrated office solutions can be created with little effort once the visual building block paradigm is mastered.

Prospero includes a mail building block that provides an interface to the MAPI functionality. One of the easiest MAPI interfaces that I have used, it has logon, logoff, send, and send interactive behaviors that let a novice or end user tap into the power of the Messaging API in no time. By merely providing a user and password string to the input port of the mail building block, the mail session is initiated. You can immediately improve the notification system or audit trail of an office management system by integrating this type of functionality.

Another nice feature of Prospero is the OLE server building block. OLE automation methods are implemented directly into the visual program, where OLE automation controllers such as Visual Basic can take advantage of this OLE technology. Prospero also has OLE templates for Word and Excel OLE objects and can turn any OLE object into a building block. Prospero can read and write to ASCII files via a flat file building block. This block can read an input file line by line or create an output file. This provides a good mechanism for simple parsing routines and for loading database fields from an ASCII file.

For arithmetic data manipulation, Prospero provides the aggregate function building block. The behaviors for this block include count, maximum, minimum, sum, and first and last, which determine the last record in a set of values for a given field. A formula building block provides a good resource for data manipulation. This block can be used to produce arithmetic formulas or simple field manipulation. These blocks provide intermediate data transformation between a source and destination block.

Conquering the WWW
One of the neatest features in this release is the WWW building block, which lets you access and retrieve data from the Internet. Prospero supports Netscape Navigator, Microsoft Internet Explorer, and NCSA Mosaic; it also provides a native interface that does not require a browser. Prospero ships with two sample projects that use the WWW building blocks -one that retrieves mutual fund prices and one that retrieves stock quotations. Figure 1 shows the visual program that retrieves the mutual fund prices. It connects to the Fidelity Investments Web page, retrieves the daily financial information as text, converts the text to numbers, and places it in an Excel spreadsheet. (See Figure 2.)

Back to Basics
Prospero includes a Basic compiler that lets you create your own building blocks through Block Scripting Language (BSL). Every building block in the project is created using BSL and can be opened as BSL by selecting "Open as BSL" on the object menu.

The Basic building block lets you create new building blocks using Basic code. Although these blocks do not support Visual Basic code or concepts such as form design, they are quite useful. Basic building blocks can be written directly or imported from other Basic programs and system blocks or by accessing DLLs directly using the use statement. The system blocks can be opened and used as examples for new code. This gives you the ability to customize and fine-tune the actions of your visual program to meet your specific needs.

The Good, The Bad
The online help for this product is superb. It provides a good working overview for Prospero and detailed narrative on most aspects of the program. Version 1.1 has greatly improved written documentation as well. If you purchased version 1.0 and found the documentation frustratingly sparse, you will appreciate the ample number of examples and the in-depth coverage of key topics included with version 1.1.

My biggest disappointment was performance. The simple mail merge I created was quick and simple to set up, but it took a considerable amount of time to execute. There are several ways to enhance performance, such as optimizing the executable for speed instead of size, not displaying programs while they are running, and turning animation off. (Animation lets you visually trace the steps of the program through the building blocks as it runs.) Performance is an issue that needs to be addressed in future revisions.

Overall, I enjoyed working with Prospero. It was easy to get up and running, and I could quickly produce output that would have taken much longer using conventional methods of writing many lines of code. The 1.1 upgrade has some major improvements over its 1.0 predecessor - better documentation, the ability to create and deploy executable files, extended support for more applications, and Internet support, just to name a few. If Oberon continues to address its weaker areas and produce quality upgrades, it will soon take its place as a recognized leader in providing data integration software. It is certainly worth evaluating to see how it assists you in providing solutions for your business needs.


Joseph Williams, owner of ZMS Consulting, specializes in client/server development using PowerBuilder, Visual Basic, and Lotus Notes. You can contact Joseph via email at jewill@mindspring.com or 75517.3613@ compuserve.com.

FIGURE 1


--This figure shows a visual program that attaches to the Internet and retrieves mutual fund prices, placing them into an Excel spreadsheet. The three blocks on the left of the screen are all nested visual programs.

FIGURE 2


--Here is the output of the visual program shown in Figure 1. This program ships as a sample program with Prospero 1.1 and provides a great starting place for Internet programming.
Table of Contents -September 1996 | Home Page
Copyright © 1996 Miller Freeman, Inc. ALL RIGHTS RESERVED
Redistribution without permission is prohibited.
Please send questions or comments to mfrank@mfi.com
Updated Wednesday, September 18, 1996