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

ArticlesA New Synergy for Windows


February 1994 / Reviews / A New Synergy for Windows

ProdeaSynergy's graphical tools let you create complex scripts for automating Windows tasks across many different applications

Steve Gillmor

Sometimes in sports or the arts, a performer arrives with a talent so great that he or she makes the most difficult feats seem easy. Such is the case with ProdeaSynergy, a new application-integration software package that at first glance does not appear to have all that much to it. It's only when you try to accomplish what it can do in some other way that you begin to appreciate what is going on behind the scenes.

In simplest terms, ProdeaSynergy is a Grand Central Station that serves as the hub connecting software like databases, spreadsheets, and communications programs, both on individual machines and across a network. The visually oriented Windows dev elopment environment lets you derive data from any source, massage and format it, and then send it on via conditional choice of E-mail, fax, paper, or disk. You can do all this without needing to know the intricate details of proprietary messaging techniques, programming tools, or file-format compatibility.

The Elements of Synergy

The power of Prodea's automated scripts depends on the software applications and desktop tools available to you locally or over a network. ProdeaSynergy can mediate between packages, selecting the best common format and the optimum interchange method, but it is not a programming language; it can't provide applications with any missing functionality. It also can't assume control from within an application. If you want to automate a procedure from within Excel, for instance, you'll need to develop an Excel macro to do the processing. You then use ProdeaSynergy to pass the output of the macro to other applications.

In the final analysis, a process automated by Prodea's s oftware will work only as well as the mechanisms used to drive it. ProdeaSynergy is not a replacement for cross-application automation tools like Visual Basic for Applications or OLE 2 Automation. In fact, as VBA and OLE 2 Automation become more widespread, Prodea will be able to leverage these tools to link applications together in a visual way and facilitate development across several applications.

ProdeaSynergy has three major elements: the ProdeaSynergy Package, the ProdeaSynergy Library, and the Variable Server. You create packages by placing icons in the ProdeaSynergy Workspace that represent application and system objects that retrieve, process, or store information. You then represent the movement of data between these objects by placing arrows from source to destination icons. After defining object and arrow properties, you choose the Runner icon to execute the package.

The ProdeaSynergy Library provides a simple GUI where you can organize and launch various packages. Once created, a pa ckage can be published in a designated library, which can then be saved, copied, or E-mailed to another machine. A separate executable file that you can launch from the Workspace, the ProdeaSynergy Library supports password-protection security features; a subdirectory tree structure to group packages by related topics; and appearance options to modify the color scheme, the size and type of buttons, and icons that represent topics and packages.

The Variable Server leverages ProdeaSynergy's ability to resolve relationships and communications at run time rather than at build time. The Variable Server provides 260 predefined global variables that can be set and referenced by each of the programs you are running in a package. These variables can be manipulated via DDE, OLE, and application menu add-ins that ProdeaSynergy often installs in a process dubbed synergizing. You can use variables with conditional arrows to control where the data flows based on changes at run time.

Application Support

Whe n you install ProdeaSynergy, it prompts you to select and define the applications you have on your system. The program accesses the Application Services Database, a predefined list of DOS and Windows applications that contains basic information such as program name and location, type or class of application, messaging protocols supported, and file formats supported. The Database also contains the key set of application functions and commands that ProdeaSynergy needs to instruct each application to perform its tasks within the package.

You highlight each new application name in the list on the right side of the Application Definition dialog box and then click the Insert button to add the name to the Defined list on the left. ProdeaSynergy verifies the presence of the application on your system before inserting the name. If it doesn't find the application, the program gives you the opportunity to enter the appropriate path or choose the Browse button if you need help.

You can also use one of sever al "Any" applications to define your own applications within a class (e.g., word processor, spreadsheet, or database), to provide support for tools that are not currently predefined in the database. Prodea is constantly updating this data, which resides in files separate from the ProdeaSynergy main executables. Thus, you can get support for new programs and upgraded versions of existing products by downloading from the Prodea BBS or by mail, without needing to upgrade ProdeaSynergy itself or alter your existing packages and libraries.

The Workspace has five major elements: the Application Toolbar, the System Toolbar, the Menu Bar, the Status Bar, and the Package Window. Defined applications are represented by their program icons in the Application Toolbar, which runs across the top of the screen. You can double-click on an icon to run the associated application from within ProdeaSynergy.

Putting ProdeaSynergy to Work

Creating a package couldn't be easier--you just click and drag an icon into the Package Window. Start with a simple example. Suppose you need to generate a monthly report with data you regularly enter into a spreadsheet. Each month, you need to move a range of cells from the spreadsheet, place the data in a word processing document, and then print the document. After creating a new ProdeaSynergy Package, you would drag the appropriate spreadsheet icon to the upper left corner of the Package Window. Don't worry if you have Excel and you are creating a package to run on a machine that has only Lotus 1-2-3; ProdeaSynergy can automatically substitute one spreadsheet application for another at run time.

Next, you select a word processor icon, drag it just to the right of the spreadsheet icon, and connect the two icons with an arrow showing the direction of the data flow. Finally, you select the Printer icon from the System Toolbar, drag it to the right of the word processor icon, and connect the two icons with an arrow. You can also add conditional arrows if you have more than one possible outcome.

Before continuing with the package design, you need to access a spreadsheet that contains the range to be moved. You can access the spreadsheet from within ProdeaSynergy by right-clicking on the spreadsheet icon and entering the worksheet filename in the appropriate field of the Application Object Properties dialog box. If you've defined a range, you need to right-click on the arrow between the spreadsheet and the word processor and enter the name of the range in the Range Definition From: field. Otherwise, all the data within the worksheet will be moved with no further work on your part. Click on the Runner icon, and your package will execute.

Intelligent Choices

ProdeaSynergy manages and mediates between the applications, data files, and output devices you selected in creating the package. Moving your completed package to another machine reveals much more about ProdeaSynergy's underlying power. Perhaps the spreadsheet you employed on the original system is not available on another desktop. When you run the package on the new machine, ProdeaSynergy searches the Application Services Database for Excel and, not finding it, suggests Lotus 1-2-3 as a suitable replacement. The program uses built-in search heuristics to find files used in a package if they have been moved or, as is often the case, are stored in different locations on other machines.

Similarly, you may have defined Microsoft Mail as your package's Windows E-mail application, while another system uses Lotus cc:Mail. ProdeaSynergy automatically makes the appropriate adjustments, transparently switching messaging protocols from MAPI to VIM. Depending on the protocols supported by applications and registered in the current Application Services Database, ProdeaSynergy might use DDE to communicate with Quattro Pro for Windows, a combination of DDE and OLE with most word processors, and, if necessary (as in the case of Harvard Graphics), keystrokes.

ProdeaSynergy identifies and exploits the "richest" data/file format shared by source and destination applications. When you select two objects that don't have a compatible transfer file format, the Windows Clipboard can sometimes be used as an interface to automatically reformat source data and pass it on. For example, a graph created in Excel can be converted via the Clipboard icon to be read into a Word for Windows document, while the cell data is moved via DDE and a temporary file that ProdeaSynergy creates at run time.

Taken together, these automated services shield the user from much of the complexity in creating enterprise-wide integrated tools. Yet ProdeaSynergy goes beyond ease of use in some instances to perform feats that are difficult to accomplish with other methods.

Taking Stock

Take the example of a package designed to perform stock pricing analysis by downloading data from CompuServe, integrating it into a spreadsheet report, and then E-mailing, faxing, or printing the results based on user-defined instructions. First I'll describe how P rodeaSynergy constructs the package and then how, or if, it can be done another way.

You begin by using Visual Basic, Toolbook, or another authoring program to create a front-end user interface for entering user ID, password, stock symbol, period, and output choices. These values are sent via DDE commands to the Variable Server and are subsequently available to other applications running within the package.

Next you use Procomm Plus for DOS to record a script that logs onto CompuServe and downloads historical stock price data. You then press the Control key while double-clicking on the Procomm icon to open the script file and replace specific user information with variable references. ProdeaSynergy automatically substitutes these values in the script file before launching the communications program and then waits for its completion.

To import new pricing information, you create a spreadsheet in Excel and define a range to receive data. Next, draw an arrow from Procomm Plus to Excel and sp ecify the input range in Excel in the Arrow Properties dialog box. ProdeaSynergy automatically replaces the specified range in Excel with the new information each time the package is run, resizing the range to fit as well.

If the stock price is up, the package should create a short note with the current price and send it with the attached spreadsheet to management via Microsoft Mail. You do this by drawing a conditional arrow from Excel to Microsoft Mail, which automatically brings the spreadsheet in. Use Notepad to create the note, adding a variable from the Variable Server to represent the current price. Enter the resulting filename in the Message Text field of the Application Object Properties dialog box. Also enter the variable containing the manager's name in the To: field. ProdeaSynergy automatically performs a comparison at run time; if the price is up, it substitutes the price in the note and E-mails the results with the spreadsheet.

Fax and printer icons with conditional arrows are conf igured in a similar fashion, with the complete package then published to a library. The great majority of development time here is spent in creating the user interface, recording the Procomm Plus macro script, and creating the Excel spreadsheet.

The Hard Way

To duplicate this project with Visual Basic or a similar authoring program, you would begin by designing the same user interface that served as a front end to the ProdeaSynergy package. Recording the Procomm script would also be the same. But then the two paths quickly begin to diverge.

To emulate ProdeaSynergy's run-time script-variable substitution, you need to write a Visual Basic routine that reads through the entire script and replaces prompted fields, or one that generates the Procomm Plus script on the fly, filling in the necessary information.

Now you hit a major roadblock: Visual Basic needs to launch Procomm Plus for DOS and wait for it to complete execution of the script. Unfortunately, however, Visual Basic's Shell func tion runs other programs asynchronously. You can't be sure Procomm Plus has finished executing before your Visual Basic code continues on, and the workarounds are kludgey.

So, instead, you might use Procomm Plus for Windows and add commands to the recorded script to send DDE messages to Visual Basic when the script has completed. You also need to create Basic DDE server routines that wait in a procedural loop. You're leveraging two different programming tools here, with limited documentation another factor to consider.

If you test the application at this point, you'll notice that Procomm Plus for Windows won't overwrite an existing data file using CIS-B+ protocol, so what works the first time will not work the next. You need to add some Visual Basic code to handle this, while ProdeaSynergy's Application Services Database is aware of this anomaly and automatically deletes the file before running the package.

Using DDE to interface with Excel is easier than with some other products, but you 'll probably have to use a combination of DDE commands and Excel's macro facility to emulate the ProdeaSynergy package. Excel does not have a built-in mechanism to replace an existing range with new data and then redefine the range to include only this new data. The "Excel macros" listing shows some sample commands that would perform that task.

Since it's not possible to pass arguments to Excel macros via DDE, Visual Basic would need to POKE the values into the macro sheet or find some other way to duplicate ProdeaSynergy's run-time variable substitution.

As noted earlier, ProdeaSynergy can automatically switch messaging protocols, but in Visual Basic, you'd have to build both MAPI and VIM functionality into the application. You'd need to code all conditional logic and variable substitution, and to prepare modified versions for each target machine around the network. What would take an hour or two with ProdeaSynergy might take a day or two at best, if the project was ever undertaken at all.

You can see some of what ProdeaSynergy does under the hood by using the Watch feature, which posts much of the messaging data as the program steps through a package. You can toggle the Variable Server window so that it stays on top of your screens and use the Step function to debug your work.

Wish List

Looking to the future, it would be nice if you could define new applications in a more robust fashion than is currently possible. The Any application interfaces are limited in their configurability, and the fax functionality does not allow complete hands-off automation of programs like WinFax Pro. Some integration with a robust macro recorder would also be desirable; the Windows Recorder is not directly supported in the Application Services Database. ProdeaSynergy is a DDE-aware application, so you can integrate it with your existing development environment.

With the imminent arrival of OLE 2 Automation, ProdeaSynergy is ideally positioned to leverage the interapplication power now available with off-the-shelf software. The program delivers a unique combination of embedded intelligence and ease of use.


The Facts



ProdeaSynergy           $495
Prodea Software Corp.
11095 Viking Dr., Suite 225
Minneapolis, MN 55344
(612) 942-1000
fax: (612) 942-1010


Excel macros.



To replace a range of data with new data and then redefine the range, you'd have to write an Excel macro. ProdeaSynergy handles the chore seamlessly.


GET.DOCUMENT(1)
IF(NOT(ISBLANK(argRange)))
  SELECT(GET.FORMULA(argRange))
END.IF()
IF(argFormat>0,EDIT.DELETE
     (argFormat),CLEAR(3))
END.IF()
OPEN(argFile,0)
GET.DOCUMENT(1)
SELECT.LAST.CELL()
SELECT(!A1:ACTIVE.CELL())
COLUMN.WIDTH(,,,3)
COPY()
ACTIVATE(C6)
PASTE.SPECIAL(2,1,FALSE,FALSE)
DEFINE.NAME(GET.FORMULA(argRange))
ACTIVATE(C13)
CANCEL.COPY()
ERROR(FALSE)
CLOSE()
ERROR(TRUE)
RETURN()


Screen: Icons in the ProdeaSynergy Workspace represent application and system obje cts that retrieve, process, or store information. You then represent the movement of data between these objects by placing arrows from source to destination icons. Arrows with question marks show conditional processes. The Variable Server dialog box lets you monitor the changing values of variables during execution and debugging of your package. Variables can represent values within an application, with conditional arrows, and within most fields of ProdeaSynergy dialog boxes.
Screen: The Application Definition dialog box is available during installation or any time you want to update or add new applications. You can define applications that reside on both local and network drives.
Steve Gillmor is director of Southern Digital, Inc., a computer and video consulting firm based in Charleston, South Carolina. He is also a professional developer and coauthor of Using Visual Basic 3 (Que/Prentice-Hall, 1993). He can be reached on the Internet at sgillmor@aol.com or on BIX c/o "editors."

Up to the Reviews section contentsGo to previous article: New and ImprovedGo to next article: HOOPS 4.0: Beyond 3-DSearchSend 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