WebFlow

We design WebFlow to compose distributed applications with following JavaBeans component
model. User constructs complex applications from components like bean development toolkits.
In addition to writing  JavaBean with BDK, user needs only to write IDL interface of  bean with
its implementation which is exactly same as normal bean. WebFlow provides delegator  which
intercepts  all event firings and property change events and forwarding to right  target .

There are two types of connections/bindings between (distributed) beans. One is exactly same as normal bean: event binding and property change event binding in which Webflow is delegating events. Other is
direct connection of  beans to each other with CORBA Event Service . In this connection, each bean has two channel, Input and Output event channel and WebFlow establish connection betwee two beans by
chaining the output channel of source bean to Input channel of target bean. In this way, event is delivered to
target bean by  either pulling from input channel or calling push method of target bean.

WebFlow also functions as gatekeeper to provide proxy objects for all the remote objects which instantiated by other remote Webflow server. In this way, user can access the remote objects even
trough Applet.Webflow has standard API which can be called by either application or any visual bean development tool (BDK).  In this way, user can link together local JavaBeans and distributed Beans.

The more interesting and challinging  is to customize the distributed bean without instantiating it with
using CORBA Property Service which provides the user to associate the any attribute for any corba Object. When user completed cutomization, he can instantiate the bean and apply all the properties he
prepared before.

Webflow server keeps all the objects it created and connections between them. So actually it is the container which  holds the containees (components or beans which is local or distributed). If it creates the proxy for local beans in addition to remote ones, the object reference of any bean which is  supported (or which has proxy inside the WebFlow server)  can be requested. Therefore we can increase the supported interfaces(beans) dynamically without changing previous one. What does it provide to us?
It will give the benefit of putting WebFlow Server as a bean.
 
 

  1. Administration : Give the names of current WSs running (getting from NameServer-NS), give module names running under itself, make event binding between two created modules (CorbaBean) by getting the parameters from Applet: (SourceModule, EventName, EventMethod, TargetModule, TargetMethod), make property binding with the parameters (SourceModule, Get/Set method for property, TargetModule, TargetMethod).

  2.  
  3. Gatekeeper : Give the proxy IOR (Object reference) for created remote module running on host other that Applet Server. In this process, WS creates proxy for remote module and returns the reference for proxy to Applet. If module is created locally, it will not create proxy and return only local object reference

  4.  
  5. Module Factory : Instantiate the module with unique name locally.

  6.  
  7. Adapter for Event/Property Binding : It is delegator for all modules running inside itself. We don't need to create adapters dynamicallly like BDK does. for this, It keeps all the information of the event/property bindings to itself.

  8.  
  9. Scheduler : If user doesn't give tha target WS for one modules, it may try to find the least loaded WS and instantiate it on this WS or it my not start new module but use the another one previously created and running for himself  or other users (Collaboration possible) ,

  10.  

     
     
     
     
     
     
     

    Keeping Sessions: Keeps session information for each user in NS(Name Server). Gives all logged users and their running modules.
     
     
     
     


     
     




    Architecture of new WebFlow


     


















     
     
     


     


     


     
     


    Event Binding when two modules are on same WS


     










     


    Event firing bewtween two JavaBeans M2 and M4 inside same JVM and
        JavaBeans M5 and M8 within different JVMs