Default
Google

Note

This document is under development and will undoubtedly contain lots of badly explained information. I have revised it again recently, and so it may seem to have changed completely since the last time you looked.

Introduction

Architecture

A possible architecture for managing data, operations on that data, and the ordering of those operations, carried out by users through different "interaction media", could be given as follows:

A suggested architecture.

See a rather large animation of how the architecture works.


Agents

Agents must be able to describe operations to users, perform operations on behalf of users, and be related to other operations through other agents.

Agent internals.

It would be envisaged that agents take the form of "medium-specific" functionality which presents agents to users and handles user interactions through a particular medium. The diagram pictured here includes a template and would be suited more to Web applications. However, agents should be able to describe and handle interactions for different media:

HTTP/WAP/SOAP
Web applications and other kinds of interactions can be supported using text markup languages, templates and Internet protocols.
E-mail
E-mail is different from "interactive" communication, such as that supported by Web "sessions", but messages could be defined using templates and mail servers could be accessed by agents in order to send and receive information from users.
Telephony
Both "human operator" and voice menu services could be supported - automatic voice responses could be built using templates, whilst operators could be supported using more advanced interfaces than those offered by Web applications. (Alternatively, Web applications could be used by operators with additional telephony hardware control.)
Paper
Processing of postal mail might be possible, with scanning or OCR employed for input purposes, and the emission of letters or faxes for output purposes. Again, textual templates might be sufficient for the generation of operation descriptions.

Agents do not represent users themselves, but they do support user sessions within the medium in which they are deployed.


Agent template dependencies.

Templates

Templates need to express enough about the operation in order to describe it. This means that they must describe the data involved and provide a means for users to express that data correctly in a response. Since many operations may be chosen in a given interaction, a means of indicating the operation should be "framed" in the template so that the user can return their choice in the response.

Description Generators

Description generators use resources such as templates to describe a collection of operations.

Interface

Get Description

Explicit inputs
Data to be associated with the operation, hints about certain parts of the template, session of the user wanting information about the operation.
Implicit inputs
Operation collection.
Explicit outputs
None.
Side effects
In the case of HTML/XML documents, an instantiated description of a form to be sent to the user (in the agent's medium) is passed to the user's session.
Expected error conditions
None.

Action Handlers

Action handlers need to be able to pass on responses from users to the operations, deal with error conditions, and then invoke decisions. Therefore, handlers need to be consistent with the operation names and interfaces.

Interface

Invoke Operation

Explicit inputs
Operation name, session of the user requesting the operation.
Implicit inputs
Operation collection, data to be transformed by the operation (taken from the user's session), decision object to be involved.
Explicit outputs
None.
Side effects
A decision object may be invoked if the operation is a success.
Expected error conditions
Hints about where the operation failed.

Consistency

Consistency checking tools should be employed to ensure that templates produce output which correctly reflects the operation names and interfaces, and that the information associated with operations can be correctly interpreted by action handlers. Hints describing the failure of an operation should be easily fed into the description generator to change the nature of the description.


Sessions

When an incoming request is received...

  1. The agent framework (the framework supporting the different agents for a particular medium) creates a session object containing the details of the request. It registers this session with the session register.
  2. The agent itself accesses the request details and gives them either to the action handler or to the description generator.
  3. The session object receives description details from either the description generator invoked directly, or from a description generator invoked through a decision object.
  4. The agent framework communicates the received description details to the user, and possibly deregisters the session from the session register.
  5. Applying Data

    The agent must first determine whether a description is required or whether an action is being performed.

    Some descriptions require a certain amount of data to be supplied and would not normally be requested by a user not able to provide such data. In such situations, the agent framework might produce an "error page", but a more preferable outcome would be to discover a suitable agent from which the user can start a sequence of meaningful interactions.


    Operations

    Operation collections expose a interfaces to named operations. Each operation's interface must be described in some way, and this could be done by reporting the relationships the operations have with different kinds of data.

    Operation Activities

    Operations should be free to transform information in any way they choose, but they will all be related to data types and their definitions, and many will want to retrieve details of well-defined objects for which an identifier is supplied.

    Operations and Data

    Where data types are associated with operations, these associations can take the following forms:

    Interface

    Describe Operation

    Explicit inputs
    Operation name.
    Implicit inputs
    Data type definitions associated with this operation.
    Explicit outputs
    Data types associated with the operation given, along with the type of associations involved.
    Side effects
    None.
    Expected error conditions
    None.

    Invoke Operation

    Explicit inputs
    Operation name, data to be transformed by the operation.
    Implicit inputs
    Data from "repository" services (where identifiers have been given, but where actual data is required in the transformation).
    Explicit outputs
    Transformed data of the form given.
    Side effects
    Some data which was retrieved from "repository" services may have been transformed. This will need to be put back into its "repository".
    Expected error conditions
    Hints about where the operation failed.

    Decisions

    Decisions "join" operations together, passing information between them where necessary. As a result of a decision being taken, an operation is described to a user by invoking the description generator of a particular agent.

    In order to choose an agent for an operation collection, a decision must consider the following things:

    When a new session is created, the appropriate agent must be found to handle that session, since it may be the policy that new sessions cannot be created for certain agent frameworks by the decision, any newly introduced frameworks must somehow be activated for the users to receive descriptions of the next operation.

    Interface

    Invoke Decision

    Explicit inputs
    Operation outputs, session/agent involved.
    Implicit inputs
    Agents available for subsequent operations, session register.
    Explicit outputs
    None.
    Side effects
    Agent invoked.
    Expected error conditions
    None.

    Session Register

    The session register records the "channels" (known as sessions) through which users may be contacted, and these sessions are associated with different agent frameworks (or media).

    Agent frameworks contact the session register to associate active sessions with themselves. Such information is later used by decisions to determine users can be contacted - sessions are acquired by decisions and passed to appropriate agents within the agent frameworks they are designed for.

    Interface

    Register Session

    Explicit inputs
    Session to register, user associated with session, agent framework which created the session.
    Implicit inputs
    None.
    Explicit outputs
    None.
    Side effects
    Session registered for user and associated with the given framework.
    Expected error conditions
    None.

    Deregister Session

    Explicit inputs
    Session to deregister.
    Implicit inputs
    None.
    Explicit outputs
    None.
    Side effects
    Session deregistered.
    Expected error conditions
    Session may not be registered.

    Find Session for User (and Agent Framework)

    Explicit inputs
    User for whom a session is to be found. Possibly an agent framework within which the session must exist.
    Implicit inputs
    None.
    Explicit outputs
    A session representing the user within an agent framework (possibly the stated framework).
    Side effects
    None.
    Expected error conditions
    No session exists for the stated user (or at least not within the given agent framework).

    Find User and Agent Framework for Session

    Explicit inputs
    Session.
    Implicit inputs
    None.
    Explicit outputs
    The agent framework within which the session operates, and the user that the session represents.
    Side effects
    None.
    Expected error conditions
    The stated session is not registered.

    Preparation

    For any given process, the following tasks must be performed:

    Define Operations

    Define the operations to be performed in the process, along with their interfaces.

    Operation specification.

    Dependencies

    Apparently none. Operations are free to have their own interfaces.

    Define Decisions

    Define the decisions which are to determine the order in which the operations will be invoked. It should be possible to define a skeleton decision graph which ignores the details of agents and operations.

    Decision specification.

    Dependencies

    The outputs of one operation must, combined with other data sources, be sufficient to meet the requirements of the description generator for any operation following it.

    Define Agents

    Define the agents through which access to operations will be given. Define their relationships with decisions. Define their resources.

    Agent specification.

    Dependencies

    Agent resources must only reference properties of the operation interfaces that they seek to describe, along with valid properties of the data types involved.

    The behaviour of agents, through action handlers, must be compatible with the operations and decisions they are attached to.


    Status

    (October 11th, 2000)
    Added a description of the session register and how it is used. Added an animated GIF image of how the architecture might be used.
    (October 10th, 2000)
    Added agents to the description of the development process. Changed GIF images to PNG images.
    (October 4th, 2000)
    Added more detailed description of the development process.
    (September 19th, 2000)
    Added more notes about the preparation of workflows.
    (September 9th, 2000)
    Described decisions.
    (September 8th, 2000)
    Added descriptions of the associations between operations and data types, and of sessions.
    (August 27th, 2000)
    Added session and interface descriptions.
    (August 25th, 2000)
    Added more description of agents.
    (August 23rd, 2000)
    Added some description of agents.
    (August 22nd, 2000)
    Revised the document completely.


    Acquiring image from ProHosting Banner Exchange