Default
Google

 

Project Description

 

Collaborative Tool

The purpose of the collaborative development tool is to enable a team to collectively edit a set of documents and to capture any ensuing discussion.

The tool revolves around the concept of a  project. A project is a collection of documents and a set of associated discussion transcripts. Each project will have one or more participants of which one participant will also be known as the chair. A project may be in one of two states: inactive or active. Documents may be added to the project by participants when a project is in its active or inactive state. Only the chair can move the project from the inactive state to the active state and from the active state back to the inactive state. When a project is active participants may engage in a controlled discussion and shared editing. An active project is known as a session. Only one person at a time may talk during a session. The session dialogue will be captured for future reference and is known as a transcript. During a session documents may be selected one at a time for collaborative editing. Only one person at a time is allowed to edit a shared document. When the chair closes the session the project is said to be inactive. When a session is closed a transcript of the session dialogue is saved.

Participants will identify themselves by logging onto the system with a username and a password. When they login they will be notified if they have been added to or deleted from a project. They will also be notified of any active projects in which they are a participant. If a user is new to the system they can request a username and password at login time.

A participant may create a new project and add participants to that project. The creator of a project, by default, is the chair of the project. The chair may add or delete participants from the project. The chair may delete the project. A participant may belong to many projects.

If a participant is the chair of a project they may activate a project and create a new session for that project. The chair is said to have joined the session. When a project is activated any participant logged into the system will be notified. Participants can optionally join any project session for which they are project participants.

During a project session two concurrent activities are provided: discussion and shared editing. Several sessions may be concurrently active in the system.

A discussion consists of a controlled dialogue where only one person at a time can speak. When the discussion starts the chair has control of the dialogue. Dialogue control is moved between participants in one of three ways:

Each participant in a discussion will see the dialogue along with an indication as to who is talking. Participants can view earlier parts of the current dialogue.

When a session is closed the dialogue that took place during the session will be filed with the project as a discussion transcript. When a transcript is saved the start time, the end time, and the names of the documents edited during the session are captured and associated with the transcript.

Concurrently with the discussion a project document may be jointly edited. Initially the chair will be given control of editing. The participant with edit control may open an existing project document or create a new project document. A document that is being edited is said to be an active document. As with the discussion, participants may request a turn to edit the document and will be queued for editing. The same queuing rules as described for the discussion will be used for editing. Each participant will see the edits as they take place as well as an indication as to who is currently editing the document. The participant currently editing a project document may at anytime save the document. Each time a document is saved its version number is incremented by one. When a document is first added to a project its version number is one. If a document was created as part of a session the first time it is saved its version number is one. Only one document at a time may be active for editing. New documents may be opened by the participant currently in control of editing and made active. If there is already an active document it will be made inactive. If a document is made inactive and has changed since it was last saved the participant will be asked if the document should be saved.

Participants may leave a session. When a participant leaves a session everyone participating will be notified. If the participant has edit and/or discussion control that control will move to the first person in the edit/discussion control queue. If that queue is empty control will move to the chair.

When the chair leaves a session the project is made inactive. If there is any active document it will be made inactive. When a project is made inactive a transcript of the session dialogue will be made. All participants will be forced to leave a project when the chair leaves.

Participants may get a listing of  the names of the documents and transcripts associated with a project, if they belong to that project. Participants may get a listing of the names of the projects they belong to.

When a user is finished with the system they will log off. When a user logs off they will be forced to leave any active sessions.

Infrastructure Components

The collaborative tool described in the previous section will be required to use the following three components.

Asynchronous Multicast Communications Component (AMCC)

The communications component acts much like a channel based radio spectrum. Messages sent on a specific channel will be heard by anyone listening on that channel.

Any component wishing to use the AMCC will attach to the AMCC. When a component is no longer interested in participating in communications it will detach from the AMCC.

To receive communications directed to a channel a component will listen to the channel. When a component no longer wishes to receive communications from a channel it will unlisten to the channel. Channels are identified by an integer in the range from 0 to 231-1.

A component can send a message to all the components listening on a channel by doing a send on that channel.

When a component wants an unused channel it will request a free channel with a "get free channel" request. "get free channel" will return a channel for which there are no current listeners in the range from 256 to 231-1. Channels 0 to 255 are reserved for fixed services.

Directory Component

The directory component provides a hierarchical lookup service. Each node can store a set of attributes, each of which can have zero or more string values. Users can store attributes in the directory by providing a path to a node along with a set of attributes and their associated values. Users can get values by providing a path to a node and optionally a list of attribute names. If no attribute names are provided, all the attribute/values for a node will be returned. An example directory is:

In the above example the paths to nodes 3, 6, and 1 would be "a.d", ".", and "c" respectively. Assume the "." is used to separate the names of the edges in the path. A dot (".") by itself represents the root node. An example attribute value for a node might be {attribute1 = "value1", attribute2 = "value2", attribute3 = {"value3", "value4"}, attribute4 = {}}. Each of attributes attribute1 and attribute2 have single values. Attribute attribute3 as two values and attribute attribute4 has an empty value.

You can assume that the contents of the entire directory can be read into memory of the implementation platform. The directory can use its own persistent store.

Persistent Store Component

The persistent component store provides a persistent store for information. Three operations are provided for the store:

Comments

The directory component will be used with the AMCC and will listen on channel 0. The persistent store component will also listen on an AMCC channel. A component that wants to use the persistent store will find what channel the persistent store is listening on by looking up in the directory the node at "system" and examining the value associated with the attribute "persistentStore".

 



Acquiring image from ProHosting Banner Exchange