What Is a Collaborative System?

A collaborative system is one where multiple users or agents engage in a shared activity, usually from remote locations. In the larger family of distributed applications, collaborative systems are distinguished by the fact that the agents in the system are working together towards a common goal and have a critical need to interact closely with each other: sharing information, exchanging requests with each other, and checking in with each other on their status. In this chapter, we’ll consider a collaborative system as one that is also distinguished by a certain level of concurrency; i.e., the agents in the system are interacting with the system and with each other at roughly the same time. So a chat session is collaborative, because all of the agents involved need to coordinate with each other to be sure that the chatters don’t miss anyone else’s comments. An email system isn’t collaborative, because each email client simply wants to be sure that its messages get to the right server, and eventually to the intended recipient. A particular email client doesn’t care about the state of any other client, and doesn’t need to coordinate with any of them in order to accomplish its goal.

Figure 9.1 depicts some of the elements that can go into a collaborative system:

  • Autonomous or user-driven agents

  • Operational and data servers

  • Dynamic and persistent data repositories

  • Transactions between agents, servers, and data

Agents, servers, data repositories, and transactions ...

Get Java Distributed Computing now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.