Vestpocket Software








SOA Object Designer

The SOA Object Designer example shown below is the design for the 'Merge Addresses Into Document' job in the  Postal Merge example which is shown on a separate page.  This example shows streams of address and document objects being merged to produce streams of mailing objects.  Notice that in the example below both the input and the output are streams of objects rather that single objects.



The SOA Object Designer has three tabs.  The Properties tab allows the user to define the properties of  the executable object.  The system assigns the Wrapper Object ID, the Input Object ID, and the Output Object ID automatically.  An executable object can be defined to execute anything, so the user enters the name of their executable in the Executable Name box..  The user can optionally enter an initial estimated execution time in the Minutes and Seconds boxes.  As the system accumulates a history of the execution times of the object, the system refines the initial estimate.  The user can optionally enter a description of the object in the Description box.  An object can be interactive.  An interactive object is one that can pause and ask the user for input during its execution.  If an object is interactive, the Is Interactive box is checked. If the object can accept an input stream of objects the user checks the Input is a Stream box.  If the object can produce a stream of output objects, the user checks the Output is a Stream box.  The definition of the object, the input object definition and the output object definition are then stored in the database.  If the user desires, a template can be generated to help establish the link between the users executable and its 'wrapper'.  Skeletal template wrappers can be generated for most of the common programming languages such as C, C++, FORTRAN, Java, C#, etc. Users can also 'custom wrap' their own programs.  Executable objects can be programs written in any language, scripts, batch files, etc.  There are versions of the SOA Object Designer written in both Java and in C#.  The program shown on this page is written in Java.



The Input Definitions tab allows the user to design the objects input  requirements. The Label is a constant shown to the left of the the value when it is displayed.  The Tag is the internal tag of the value.  The Units ia a constant shown to the right of the value when it is displayed.  The Default Value and the Bounds are is optional.  The Type can be chosen from a list of types such as string, integer, double, etc.  A type can also be an object so an object can contain objects.  The Control Type can be chosen from a list of control types such as TextBox, TextField, ComboBox, Label, etc.  The example above shows the input object definition for an object called 'PostalMerge'.  The Postal Merge object takes a 'stream' of  Mailing List Address objects and merges them with a single selected Mailing List Document object thus producing a 'stream' of  Documents Ready To Be Mailed objects.  The next object down stream would be the Document Mailer object.  This object would take the 'stream' of Documents Ready To Be Mailed objects and finish the mailing process by generating the physical documents to be mailed on printers.  This sounds like a serial process unless you consider the possibility that a stream could be segmented and segments assigned to a number of parallel computers.



The Output Definitions tab allows the user to design the objects output requirements.  It functions much like the Input Definitions tab but it generates 'read only' output forms.  Values shown in an Outputs from a computational process cannot be altered.  They may be overridden but they cannot be changed directly. 



The Generate Templates dialog allows the user to generate skeletal 'wrapper code' for a selected programming language.  The user edits and compiles the wrapper code to create an interface between their executable object and the parallel array framework.



The Input Form, shown above, was generated by the wrapper input definition for the Postal Merge object.  The user could specify values for the inputs of an object like this but these values would almost certainly be overridden  by one or more objects that are upstream from it that have run before it.  The only exception might be during a test of the object.  In that case a single address and document number could be entered.  The object could then be run individually to see if it could produce a correctly formatted Printable Document object.  The user can also define their own custom input form if they desire.



The Output Form, shown above, was generated by the wrapper output definition for the Postal Merge object.  Output forms are always 'read only'.  The user can also define their own custom output form if they wish.

List Editor



The List Editor Dialog shown above is used to edit the lists in the ComboBox and ListBox controls in an input dialog.  Simple controls like the TextBox and Spinner are edited directly on the screen.  Controls that are actually list of values are edited using the List Editor.

The Text Editor Dialog




The Text Editor Dialog shown above is used to edit the TextField controls in an input dialog.


The Table Editor Dialog




The Table Editor Dialog shown above is used to edit the Table controls in an input dialog.

An Example With All Control Types



The Example Dialog above has controls of all types represented.