ONJava.com -- The Independent Source for Enterprise Java
oreilly.comSafari Books Online.Conferences.


AddThis Social Bookmark Button

Replace those Shared Drives with Space Drives
Pages: 1, 2, 3


Shared drives are common in organizations; shared spaces are not. A shared space goes beyond simple file sharing because it is integrated into the messaging and notification structure of the workspace backbone. For instance, you can create departmental shares for each department with which you exchange documents and communication. All of the marketing group would be given access to the marketing space, and all of the sales group would be given access to the sales space. You can also define a shared "marketing - sales - development" space. In effect, you are linking and segmenting user machines along logical boundaries, not only for content, but also for communication. Alternatively, you can define shares that map to workgroup processes. The status of work artifacts can be equated to physical location.

When you are added to a shared space, you are automatically registered for shared space events. Members of the space can be notified when changes to the shared space definition occur, e.g. when member additions/removals or content additions/deletions. Clients receive notification of the change through the content service and update their views appropriately. Views can be built using asynchronous notification or using polling techniques. Instant messaging, as opposed to email, is the norm in the space drive environment. Attachments can often be eliminated or dramatically reduced. Space messaging builds on the concept of loosely-coupled communication using a "space channel." A space channel is a named ordered set of messages. Therefore, you can define content shares that map to communication channels.

Figure 3. Space drives are event-driven.

All elements (share, channel, and group) can be referenced by the same logical name. Groups can be defined around shares and channels. This is similar to defining share drives and email groups for departments. However, there is no explicit relationship between these technologies. Space drives assume the relationship between content and communication and leverage that relationship for messaging and notification. For instance, channels are automatically established with members of shared spaces.

In addition, users register to receive messages from specific channels. This can be equated to a "buddy list" or a roster in instant messaging products. Messages written to your user id/channel can be read with a simple "receive" request.

public interface MessengerInterface {   

    public void send(ChatMessage message) throws RemoteException; 

    public ChatMessage receive(String channel) throws RemoteException; 

    public void register(String channel, RemoteEventListener subscriber) 
                                                 throws RemoteException;

The ChatMessage simply contains the To: and From: user IDs, which may reference single users, groups, or the entire workspace.

You can belong to one or more groups. The group ID is used to segment the group workspace.


Messages sent to a group channel are available to every member of that group. This provides a group, or "multi-casting," type of messaging within the workspace. Finally, the broadcast channel is used to identify the global workspace. Every user is a member of the global "WorkSpace" channel. A message of the day and timely information can easily be delivered to an entire workspace group. Space messaging provides a simplified approach to dynamic communication, coordination, and sharing of objects between network resources.


Finally, the workflow component of a workspace provides the scheduling and event notification process in the space drive environment. This allows participants to exchange tasks and requests, and monitor the progress of work processes.

Your workflow process definition is composed of a collection of work items. Work items model specific tasks in the workflow system. Of course, workflow applications can use any number of approaches. For example, you could use XML to define process templates and task execution policy.

Figure 4. Workflow process definition.

Every work item in a process has an associated task. A task is modeled to reflect the current state of the work item. Each task defined in the workflow component implements the ActivityState interface. This interface is implemented to provide task-specific, state-change processing for the activities under workflow control.

public interface ActivityState extends Serializable
    public static final String TASK_INIT = "inactive";
    public static final String TASK_READY = "ready";
    public static final String TASK_START = "start";
    public static final String TASK_COMPLETE = "complete";
    public static final String TASK_SUSPEND = "suspend";
    public void start() throws RemoteException;
    public void terminate() throws RemoteException;
    public void suspend() throws RemoteException;
    public void resume() throws RemoteException; 

A workflow component can also use the messaging component to deliver warning messages to users assigned to tasks in trouble. An alert event can be used to trigger asynchronous notification to owners of processes and users assigned to specific workflow tasks.

Improved communicationMore complex to set up
Improved collaborationAdditional software required
Selective membership/permissions
Workflow- and task-oriented
Multiple views
Minimal Administration


The coordination and integration of content indexing, messaging, and simple workflow using space drives can go a long way towards improving the coordination of activities that most workgroups engage in daily. Many of the shortcomings of share drives can be eliminated and a new level of automated communication is easily in reach.

The growing Internet economy will mandate improved coordination and automation of processes both internal and external to an organization. Efficiencies are gained by integrating internal systems with users, partner systems, and external customers. Coordination of activities and dissemination of information within and across organizational boundaries are essential factors to improving effectiveness.

Space drives are a first step in creating an effective platform for content, community, commerce, and collaboration.

You can test an example space drive implementation at www.jworkplace.org.

Robert Flenner is an active author, software developer, and independent contractor who is actively involved with emerging B2B technologies.

Return to ONJava.com.