Release notes (0.0.5.1)

-------------------------------------------------------------------------
Adding new modules

- the number of buttons (and corresponding cards) is limited to nmax.
  Currently it is set to 15. 
  It is defined in webflow/frontend/WebFlowEditor.java 
  Also, pay attention to the case statement in method addcard in
  webflow/frontend/ModuleControls/lowerPanel.java

- one has to associate a backend module with the front-end card. At this
  time we use a hash table for this purpose (defined in 
  webflow/frontend/ModuleControls/lowerPanel.java
  How does it work: the name of the class back-end module is assigned 
  an integer, say K. This means that the corresponding card is implemented
  by class controlsK.java

  Example: an entry in the hash table created by:
           ModuleNames.put("GAUSSIAN",new Integer(9));
  means, that the front-end card is implemented by class controls9.java

- all controlsX.java are put into directory webflow.frontend.ModuleControls

- all controlsX.java inherit from class controls.java (this way you
  inherit the socket connection between front- and back-end)

- if a module does not have a front-end card, that is, its class name
  is not entered into the hash table, the module get a default,
  dummy - if you will, card implemented by controls0.java


- PortServlet uses port 5500: defined in THREE places:
   * webflow/backend/PortServlet
   * webflow/frontend/ModuleControls/controls.java
   * webflow/modulrs/Templates/Template.java

----------------------------------------------------------------------------
 Graphical representation of ports

- Ports are defined twice:
   * in the backend module
   * in the graphical representation of the module
- User is responsible to make these two definitions match. 
   * the back end module is associated with the graphical representation
     using an entry in module.txt file.
   * Syntax of the entry is:  module_class_name web_server graph_rep
     Example:
     webflow.modules.QuantumSimulations.EditFile aga.npac.syr.edu:1255 webflow.frontend.WebNodeFTP
   * In webflow/frontend/WebNodeFTP.java two ports are defined:  
            ...
            portList = new WebPort[2];
            numPorts = 2;
            portList[0] = new WebPort(this, "img");
            portList[1] = new WebPort(this, "img");
            ...
            pers1.addPort(portList[0], obj3, 4);
            pers1.addPort(portList[1], obj2, 2);
 
      obj3 is a small circle       
      obj2 is an arc

   * In webflow/modules/QuantumSimulations/EditFile.java the ports are declared as:  
            outport = new OutputPort("WFFileDescriptor");
            mm.putPortID(outport.getPortID());
            inport = new InputPort("WFFileDescriptor");
            mm.putPortID(inport.getPortID());

   * Comparing these two pieces of code you see that
            output port corresponds to portList[0] and is reperested by the cirlce
            input port corresponds to portList[1] and it is represented by the arc

    because of the order they are declared.


MODULES

-------------------------------------------------------------------------------
FileBrowser   (and associated webflow/frontend/ModuleControls/controls3.java)

Output port: WFFileDescriptor, must be connected.

At initialization, it displays directory /dummy. Well, it is dummy.
In run mode, it blocks till a file is not selected.

 How to select a file:
 type the directory (or directory root) in the upper TextField and hit RETURN.
 The contents of that directory is then downloaded from the server and
 displayed in the central part of the card. Click on a subdirectory (a dot 
 left to the name) to expand it. Click on a filename to select the file.
 The name of the selected file appears in the bottom FileText. You may type
 the file name in that FileText, too.
 Once you selected the file, click the OK button. This will trigger execution
 of the back-end module.

 The back end module creates an object of class WFFileDescriptor and sends it
 to the output port.
 For the purpose of QS demo, the backend module checks for substrings
 GAUSSIAN, GAMESS, and CERIUS2. If these are present in the file path, the
 file attribute is set to GAUSSIAN, GAMESS, and CERIUS2, accordingly.
 These attributes are used in FTPout module.
 The file host is set to "local". 

 FileBrowser can access only files seen by the machine on which the WebFlow
 server is running.

 To access a remote file, use module FileName that allows you to specify 
 a remote host, and produce input for the FTPin module.  

GAUSSIAN  (and assiciated webflow/frontend/ModuleControls/controls9.java)

Input port : WWFileDescriptor, must be connected
Output port: WWFileDescriptor, optional

WARNING: This module must be customized!

Description of the backend module
    
 The module waits till input port receive the WFFileDescritor of the 
 Gaussian94 input. Note, the name of the file is received, not the file itself.
 It is assumed that the file is already uploaded to the taget machine (using, 
 for example, FTPout module). The module then generates gram_client script 
 and submits it for execution. 
 NOTE: the gram client is run on the machine that hosts WebFlow server.
 The gram client requests execution on a remote machine (such as Origin2000)
 that host gram_server.

 The following defaults has been defined:
  GRAM contact: modi4.ncsa.uiuc.edu:4001:modi4.ncsa.uiuc.edu-fork@globus.org 
  GRAM client code: /home/B7D/globus/haupt/gram_client_test_irix   
  Working directory: /scratch-modi4/haupt/GAUSSIAN
  Output file: gauss_stdout
  Executable: tomqg94  (customized version of qg94)

 After the gaussina run is completed, an outFile WFFileDescriptor is created,
 and sent to the output port (if connected). The outFile contains information
 required by the FTPin module that can import the output file back to the
 machine hosting the WebFlow server.