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.