| <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> | |
| <html> | |
| <head> | |
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> | |
| <title>eclipse communication framework use cases</title> | |
| <link rel="stylesheet" href="http://www.eclipse.org/default_style.css" type="text/css"> | |
| </head> | |
| <body bgcolor="#FFFFFF"> | |
| </table> | |
| <table border=0 cellspacing=5 cellpadding=2 width="100%"> | |
| <tbody> | |
| <tr> | |
| <td width="69%" class="bannertext"><font class="indextop style2">eclipse communication framework use cases</font> | |
| <br><br> | |
| <font class="indexsub"></font> | |
| </td> | |
| <td width="31%"><div align="center"><img src="../images/Idea.jpg" width="120" height="86" | |
| hspace="50" align="middle"></div></td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <table border=0 cellspacing=5 cellpadding=2 width="100%" > | |
| <tr> | |
| <td align=left valign=top bgcolor="#0080C0"> | |
| <font color="#FFFFFF" face="Arial,Helvetica"> | |
| <b>Chat Use Case</b> | |
| </font> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td valign="top"> | |
| <p>The ECF development team is considering at least four distinct types of chat use | |
| cases depending on whether GroupIDs and chat SharedObject IDs are well-known or not. | |
| We have given each of the types a name suggested by the manner in which it would be | |
| used. This name is not really the important issue. What's important here is the | |
| combination of well-known and individualized IDs.</p> | |
| <hr> | |
| <h4>1. ChatRoom -- GroupID well-known, Chat SharedObject ID well-known</h4> | |
| <p>In this case everyone knows a common familiar GroupID, e.g., "server.com" and joins | |
| that container. They also create a SharedObject with the well-known ID, "chat". | |
| This is a big space that anyone with permission to use "server.com" may enter.</p> | |
| <h4>2. IM -- GroupID well-known, Chat SharedObject ID individualized</h4> | |
| <p>We all join a well-known container for some purpose. It doesn't have to be to chat. | |
| We might have joined the container for the purpose of learning about people's | |
| online status. Then, you decide that you would like to chat with someone, but don't | |
| want to go to the trouble of creating a new container for that purpose. So, instead, | |
| you create a ChatSharedObject, but give it a unique ID. Then, you direct some other | |
| group member to create that ChatSharedObject as well. Now, we can use the chat, but | |
| others are not aware of our chat and cannot participate.</p> | |
| <p><u>Note</u>: The privacy afforded by this approach depends somewhat on whether | |
| getSharedObjectIDs returns all the IDs known at the container or only the ones | |
| created by any user.</p> | |
| <h4>3. Chat Meeting -- GroupID individualized, Chat SharedObject ID well-known</h4> | |
| </p>This case requires two containers: one for the actual chat and one to communicate | |
| the individualized GroupID of that chat.</p> | |
| <ol> | |
| <li>We all join a well-known container that we call the Lobby. | |
| Let's say it has a GroupID of "server.com/lobby" and provides some | |
| way to send invitations from one user to another.</li><br> | |
| <li>One user creates a new container and joins it by creating a unique | |
| GroupID for the chat, e.g., "server.com/mychat". In addition, the | |
| user adds a ChatSharedObject with the well-known ID, "chat".</li><br> | |
| <li>This first user sends an invitation to another user via the lobby | |
| to let the second user know that they are invited to the | |
| "server.com/mychat" container. (Presumably, it would also be good | |
| to send information about the container type, just in case we want | |
| to support multiple types of meetings.</li><br> | |
| <li>The second user joins the meeting by creating the appropriate chat | |
| container, adding in the appropriate chat object, and joining with | |
| the "server.com/mychat" GroupID.</li> | |
| </ol> | |
| <h4>4. Whisper -- GroupID individualized, Chat SharedObject ID individualized</h4> | |
| <p>Let's imagine that the ChatMeeting identified above has been joined by many people | |
| and we now want to support a private conversation among a subset of the participants. | |
| Assuming we are too lazy to create a new container for the purpose, one user might | |
| create a new chat object with an individualized ID, then, as in the IM case, they | |
| would instruct another user to create the object as well.</p> | |
| </p><u>Note</u>: The privacy afforded by this approach depends somewhat on whether | |
| getSharedObjectIDs returns all the IDs known at the container or only the ones created | |
| by any user.</p> | |
| <hr> | |
| <h4>Chat Use Case Considerations</h4> | |
| <p>One thing the ECF development team with these use cases is to begin to tie specific | |
| communication features to patterns in the use of ECF containers and shared objects. For | |
| example, say that you had a 'well-known' chat, and you wanted to have a feature that | |
| started a shared whiteboard with the same set of participants. Well, one way to implement | |
| this would be to have the chat create a new shared object (a whiteboard component) that | |
| implemented the whiteboard communications functionality (i.e. keeping the whiteboard | |
| state synchronized) and the whiteboard UI. In this way, the whiteboard functionality | |
| would be separable from the chat, and usable within different communications contexts. | |
| The whiteboard component could even be implemented to run similarly on multiple container | |
| implementations (multiple providers)...e.g. SIP or XMPP or whatever. In this way a library | |
| of components could be created, implemented as shared objects (in this case), or | |
| combinations of shared objects and provider implementations (less desirable from a | |
| component design point of view).</p> | |
| <p>In any event, we think that with a variety of use cases (these and others) and a | |
| couple of functioning providers (coming very shortly), we can experiment a little bit | |
| with the design of communications components, and begin to connect various features | |
| with individual components or sets of components (implemented as independent shared | |
| objects, shared objects with connectors, patterns of classes used by shared objects, | |
| custom containers, etc).</p> | |
| </td> | |
| <tr> | |
| </table> | |
| </body> | |
| </html> |