Open Kite Project Toolkit

High Level Requirements [1]

Architecture (High Level)

      ________
     /        \
    +          +
    |\________/|                +----------+                  +-----------+
    |          |                | Database |                  | Component |
    | Database |<-------------->|  Server  |                  |  Manager  |
    |          |                |          |                  |           |
    +          +                +----------+                  +-----------+
     \________/                   ^                            ^ |  ^
                                  |                            | |  |
                                  |   +---------replies--------+ |  |
                                  |   |  +------requests---------+  |
                                  |   |  |                          |
                                  V   |  V                          V
                                +----------+                  +-----------+
                                |          |-----requests---->|   Client  |
                                |Components|                  |  Request  |
                                |          |<----replies------|  Manager  |
                                +----------+                  +-----------+
                                                                    ^
                                                                    |
                                                                    |
                                                                    |
                                                                    V
                                                              +-----------+
                                                              |    User   |
                                                              | Interface |
                                                              |           |
                                                              +-----------+
    

In this diagram, the general structure of the proposed system is shown.

The Database Server provides a single point of entry to the database. It must carry out the following functions:

  1. Control of what gets added to the database, including flagging conflicts in the case of dual updates.
  2. Maintaining a list of which components are interested in which parts of the database.
  3. Feeding data and / or updates to interested components.

All communication to and from the database manager will be in the form of XML fragments, which will correspond to named regions in the XML DTD.

These fragments will be either a simple fragment, in the case of an add, delete or request for a copy of data, or a fragment pair (before / after) in the case of an update request or notification.

Fragments returned from the database manager may be either the full fragment or a subset of its components. In this way a component could request continuous updates of the entire kite, but only recieve deltas of the parts that have changed.

The Component manager instantiates and destroys components, and feeds requests and replies to and from the relevant components and the client request manager.

The client request manager handles the client request API, which defines the interface to the server side of the system from the user interface. Requests may come in to this from both UI components and the server-side components as well. Thus, if a component requires another component to act, it will request this through the client request manager.

The components for the processing core of the system Each component must do the following:

  1. Register themselves, and their purpose, with the component manager. This information will be used by the Component manager in order to route requests to the relevant components.
  2. Carry out their relevant function, and send the reply to the component manager. Any errors will be propagated up to the client as necessary.

As mentioned, components may act as clients in their own right. Thus a component may ask for a function to be carried out, but not care how it is carried out. The components in the system are therefore very loosely coupled, and can be changed on an 'ad hoc' basis.

Notes

[1] These requirements are very high level, and don't cover nearly enough detail to start work yet.

[2] This is so that certain tasks can be isolated - I'm thinking particularly about the 'parts layout' functionality, which is applicable to more than just kite design. Hell, we could sell that, if we weren't going GPL.

[3] Any predeveloped libraries we use should be covered by the GPL or similar, and should have the same technology restrictions. Moreover, they should have as few dependencies on other libraries as possible (if you've ever tried to compile 'Enlightenment', you'll understand _exactly_ why)


Project Administrator
Last modified: Mon Jun 12 12:12:32 BST 2000