The present invention generally relates to collaboration tools, and more particularly relates to integrating messaging with collaboration tools.
Various dedicated collaboration tools (e.g., wikis) are used to help individuals organize task materials in single location where all members can view these task materials. Collaboration topics (e.g., a particular wiki) can be created in those tools to work on a particular aspect of the project. For example, a sales team may use a wiki to keep track of the team's sales leads and status, while a group of software developers may use a wiki to post their development schedule and progress.
In one embodiment, a method is disclosed. The computer-implemented method comprises receiving, from a user, a first message associated with a collaborative task. The first message includes an identification of the collaborative task, a plurality of participants for the collaborative task, and a request from the user for each of the participants to provide content for the collaborative task. In response to receiving the first message, a request message is generated for each of the participants. Each of the request messages includes a notification of the collaborative task and the request from the user for that participant to provide the content for the collaborative task. The request messages are sent to the participants.
In another embodiment, an information processing system is disclosed. The information processing system comprises a memory and a processor that is communicatively coupled to the memory. A messaging manager is communicatively coupled to the memory and the processor. The messaging manager is configured to perform a method comprising receiving, from a user, a first message associated with a collaborative task. The first message includes an identification of the collaborative task, a plurality of participants for the collaborative task, and a request from the user for each of the participants to provide content for the collaborative task. In response to receiving the first message, a request message is generated for each of the participants. Each of the request messages includes a notification of the collaborative task and the request from the user for that participant to provide the content for the collaborative task. The request messages are sent to the participants.
In a further embodiment, a computer program product is disclosed. The computer program product comprises a non-transitory computer readable storage medium having computer readable program code embodied therewith. The computer readable program code is configured to perform a method. The method comprises receiving, from a user, a first message associated with a collaborative task. The first message includes an identification of the collaborative task, a plurality of participants for the collaborative task, and a request from the user for each of the participants to provide content for the collaborative task. In response to receiving the first message, a request message is generated for each of the participants. Each of the request messages includes a notification of the collaborative task and the request from the user for that participant to provide the content for the collaborative task. The request messages are sent to the participants.
As will be discussed in greater detail below, various embodiments of the present invention provide a collaboration environment that supports coordinated, collaborative authoring. One or more embodiments provide a messaging interface for users to accomplish their tasks using messages, such as email, in a coordinated, collaborative authoring process. In one embodiment, a semi-structured, template-based approach is implemented that allows users to use templates to specify their requests in messages. These message requests can be interpreted by the collaboration environment manager and are used to automatically drive the collaboration flow. As part of its actions, the collaboration environment manager automatically creates a collaborative environment page, such as a wiki page, and dynamically updates the page to record co-authoring tasks and collate co-authored content. As a result, users can use a tool with which they are familiar (e.g., a messaging client and messages) to accomplish their tasks in a co-authoring process, while leveraging a wiki for additional benefits (e.g., obtaining collaboration awareness and formatting the text).
The accompanying figures where like reference numerals refer to identical or functionally similar elements throughout the separate views, and which together with the detailed description below are incorporated in and form part of the specification, serve to further illustrate various embodiments and to explain various principles and advantages all in accordance with the present invention, in which:
The operating environment 100 includes one or more server systems 102 and 104, and one or more user systems 106 and 108. Each of these systems is communicatively coupled to one or more networks 110. The network 110, in this embodiment, is a wide area network, local area network, wired network, wireless network, or the like. A collaboration environment server system 102 includes a collaboration environment 111. The collaboration environment 111 includes a collaboration environment manager (coordinator) 112. The collaboration manager 112 creates collaborative environment pages 114, such as wiki pages. The collaboration manager 112 also manages and supports user interactions with the collaboration environment 111. The collaboration environment 111 also includes a messaging module/manager 116. The messaging manager 116 includes a message generator 118 and a message processor 120. The messaging manager 116, in this embodiment, utilizes a messaging client 122 to send and receive messages to/from users of the user systems 106 and 108 via a messaging server 104 (which can be separate from or part of the server system 102). One or more of the collaboration environment components can be combined into a single component, and one or more of these components can reside on one or more other systems as well.
In one embodiment, the collaboration environment 111 utilizes the above components to receive, from a user, a first message associated with a collaborative task. The first message includes at least an identification of the collaborative task, a set of participants for the collaborative task, and a request by the user for each of the participants to provide a set of content for at least one portion of the collaborative task. The collaboration environment 111 automatically generates a second message for each of the participants in response to receiving the first message. The second message includes at least a notification of the collaborative task and the request from the user for the participant to provide the set of content for the portion of the collaborative task. The collaboration environment 111 sends the second message to each of the participants.
The collaboration environment 111 of this embodiment is a wiki-based tool that supports coordinated, collaborative authoring. A wiki is one example of a collaborative authoring tool. For example, a sales team may use a wiki to keep track of the team's sales leads and status, while a group of software developers may use a wiki to post their development schedule and progress. In a business setting, collaborative authoring often requires coordination, including assigning authors to specific sections and managing their progresses. Conventional wikis, however, do not directly support coordinated, collaborative authoring. In contrast, the collaboration environment 111 of this embodiment utilizes one or more wikis to support a coordinated co-authoring process, which can be across different domains (technical, legal, healthcare, etc.). The collaboration environment 111 of this embodiment uses a tag-based approach to support two key user roles and their respective tasks in such a process.
First, the collaboration environment 111 supports the role of a coordinator or lead author, who can insert tags in a wiki page to specify co-authoring tasks. A coordinator or lead author initiates and manages the overall collaboration process. For example, a sales manager leads a sales team to co-write a sales report; and a project leader organizes project members to co-author project updates. In such cases, a coordinator often performs tasks such as: defining authoring tasks for individual members (i.e., who writes what), managing member progresses (e.g., reminding them of their impending tasks), and writing part of the content.
Second, the collaboration environment 111 supports the role of a participant, who is a co-author invited by a coordinator to write designated sections of a wiki. A co-author can be invited by a coordinator to write designated sections of a document. One of the participant's tasks is to handle the received writing assignments in one of the following ways: accept a request to write the specified sections, reject the request, and delegate the entire or part of the request to one or more other individuals. To support flexible user roles in a dynamic collaborative authoring process, the collaboration environment 111 allows a participant to initiate authoring tasks in the same workflow (e.g., adding new sections). In this embodiment, the participant plays the role of a local coordinator who manages and initiates authoring tasks.
In this embodiment, the collaboration environment 111 supports the above user roles and associated tasks by helping users better manage a collaborative authoring process (e.g., defining and monitoring co-authoring tasks) to minimize interruptions on their own content writing. The collaboration environment 111 also helps increase users' awareness of each other's activities and status for a more transparent and efficient collaboration. To minimize interruptions, the collaboration environment 111 lets a user performs all tasks in the main workspace. In this embodiment, the main workspace is a wiki page where the content is being created, edited, and viewed.
To support all tasks of a user in a wiki, the collaboration environment 111 implements a tag-based approach to document authoring. In this embodiment, tags are directly attached to the content inside a wiki page to indicate related activities and status. Tags can also be executed to drive a collaboration flow (e.g., inviting a participant). Tags that specify co-authoring tasks are referred to as task tags. In this embodiment, tag usage is implemented as an integral feature of a wiki, and the collaboration environment 111 supports tag editing (add, remove, and modify) in a wiki edit mode. This design makes tag editing a natural part of the content editing, minimizing the interruptions on a user's primary task of content writing. This feature also allows users to define authoring assignments while they are writing or editing specific portions of a document.
In this embodiment, the task tags have simple and unambiguous semantics. This allows tags to be easily defined and understood by intended recipients (e.g., users and the collaboration environment 111). In this embodiment, the collaboration environment 11 is configured to extract task parameters (e.g., author name and due time) to drive the collaboration process (e.g., notifying participants about their tasks). Therefore, in this embodiment, a tag widget with structured fields is utilized as compared to a plain text-based tag. Task tags provide collaboration awareness for all the co-authors since the tags already include information about collaborators' activities and status. Task tags can be dynamically updated and visually encoded to reflect the evolving task status.
In this embodiment, a task tag has various fields that describe key aspects of a collaborative writing process. A first set of fields can be user-defined fields such as a participants field, a due date/time field, and a task description field. A second set of fields includes a status field and a log field (logging the task delegation path). This second set of fields is reserved for the collaboration environment 111 to track and update a collaboration flow. Additional fields can be utilized as well. In one embodiment, a user can toggle among various display modes of a task tag: full, summary, and iconic view. Additional visual cues (e.g., dotted versus solid sideline) can be used to differentiate the tag content from the document content. For example, arrow direction can be used to indicate the task flow related to the current user.
To support the role of a coordinator, the collaboration environment 111 allows a user to: Add a Task (creating a task tag to assign participants to a specific section), Send a Task (triggering the collaboration environment 111 to email task recipients), and Remind (triggering the collaboration environment 111 to send an email reminder to designated participants). Once a tag is added, only the tag creator can edit its fields. However, in other embodiments, other users can edit the fields of a tag. A valid authoring task specifies one or more participants. The collaboration environment 111 allows users to specify participants' names or email addresses. The collaboration environment 111 maps names to email addresses before emailing designated participants about their tasks upon a Send Task request. On the server side, an event-driven finite state machine is implemented to handle various user requests (e.g., Remind) and drive the collaboration flow (e.g., email reminders to designated participants). In one embodiment reminders are automatically sent by the collaboration environment 111. In another embodiment, the collaboration environment 111 does not send users automatic reminders for overdue tasks. This embodiment provides users with one or more options to take actions and avoid adverse consequences (e.g., flooding the inbox of an out-of-office user).
Upon receiving the email notification of a collaborative task (e.g., a writing assignment), a participant can follow a uniform resource locator (URL) link embedded in the email to open the wiki page. The participant is directed to enter content in the designated area for the task tag. The participant can also reject or transfer the task by clicking on a corresponding widget or entering a corresponding response. When a task is transferred, the collaboration environment 111 automatically updates the participant field of the transferred task with new participants. The corresponding log field is also updated to indicate the transfer path. This information is useful for users to keep track of re-routed tasks. Once a participant has completed the work, it can be submitted. Once the work is submitted, it is available for the coordinator and other co-authors to view. In one embodiment, users cannot view other user's writing prior to its submission. However, this is not a required feature.
The user-inserted tags can be executed by the collaboration environment 111 to automatically drive the collaboration workflow (e.g., notifying co-authors about their tasks), and provide collaboration awareness for all the collaborators (e.g., showing the co-authoring task status in the wiki). Therefore, the collaboration environment 111 extends wikis in at least two aspects. First, wikis are extended to support tag-based collaboration management with little interruption on a user's primary task of content authoring. Second, wikis are extended to support content-centric collaboration awareness (e.g., aware of co-authors' work and status). In one embodiment, the collaboration environment 111 also preserves standard wiki features. For example, coordinators can enter and modify content anywhere in a wiki page. Similarly, participants can enter content in their designated space or any unrestricted areas of the page. In this embodiment, participants can only view but not modify other users' work unless they are invited to do so. However, this is not a required feature.
The collaboration environment 111, in this embodiment, utilizes messaging, such as email, to facilitate coordinated, collaborative authoring. In particular, the collaboration environment 111 employs a semi-structured, template-based approach, which allows users to use templates to specify their requests in emails and the emailed requests can be interpreted by the collaboration environment 111 to automatically drive the collaboration flow (e.g., notifying co-authors about their tasks or extracting a co-author's response from an email). As a result, users can complete their co-authoring tasks by email and the collaboration environment 111 with much less manual effort (e.g., monitoring the progress and collating multiple responses). Furthermore, users can leverage the collaboration environment 111 created page/wiki 114 to access the co-authored content and perform additional tasks (e.g., content formatting). As a shared work space, the wiki 114 also provides all collaborators with the desired collaboration awareness.
As discussed above, the collaboration environment 111 is configured to support the tasks of both coordinators and participants in a coordinated, collaborative authoring process. Users are able to perform their tasks by messaging mechanisms such as email. As shown in
A participant (co-author) can respond to the assigned co-authoring task by messaging, such as email. For example, the participant can reply to the message received from the collaboration environment 111 indicating that the participant accepts, declines, or transfers the assignment. The participant can also generate a new message and is not limited to replying to the message received from the collaboration environment 111. The user can type a response to the co-author assignment directly into the email. In another embodiment, a list of response choices (e.g., accept, reject/decline, transfer, etc.) is presented to the participant within the email. The user is then able to select one of these choices for responding to the co-authoring request.
In some situations a group of people may be required to co-author interdependent content. For example, consider a coordinator who is setting up a visitor's agenda. The coordinator lists the visitor's available time slots and then asks her colleagues to enter their proposed topics and preferred time slots to meet with the visitor. Because two people cannot occupy the same slot, one person's decision depends on the others' decisions. In this example, the collaboration environment 111 gathers user inputs from emails and posts them to the wiki page 114, and then lets the coordinator organize them manually. Alternatively, users can view others' input in the wiki 114 and then decide on their own. In another embodiment, the collaboration environment 111 can be configured to automatically manage scheduling information and conflicting schedules.
Once the participant has completed the reply email message, the message is sent to the collaboration environment 111. The collaboration environment 111 then receives the message from the participant. The message processor 120 extracts the submitted content from the response/reply email received from the participant. For example, the participant's acceptance of the co-author assignment can be extracted. The collaboration environment manager 112 then updates the corresponding wiki page 114 with the extracted information. If the participant decides to reject or transfer the task, the collaboration environment 111 forwards such responses to the coordinator for review. The coordinator can also manage the collaborative authoring process by sending email messages to the collaboration environment 111. For example, the coordinator can specify various management actions, including reminding and removing a co-author. Per the coordinator's email request, the collaboration environment 111 can then act upon on the coordinator's behalf. In one embodiment, the collaboration environment 111 sends email notifications to the coordinator for updating the coordinator regarding the status of the collaboration project and interactions with the co-authors (e.g., being aware of co-authoring tasks assigned or reminders sent). This is shown in
As discussed above, the messages (e.g., emails) sent by the users to the collaboration environment 111 are created in a format that can be parsed by the collaboration environment 111. This allows the collaboration environment 111 to understand a user's email message (e.g., specifying co-authoring tasks) and act upon it (e.g., creating a wiki page and notifying co-authors). Therefore, in this embodiment, the collaboration environment 111 supports a semi-structured email input. This provides a set of semi-structured messaging templates for users to specify their intended tasks. Following these templates, the collaboration environment 111 can interpret a user's email message and use it to drive the collaboration authoring process.
The following is a more detailed discussion of such messaging templates. A coordinator can launch a collaborative authoring project by defining a set of co-authoring assignments, as discussed above. In one embodiment, the coordinator launches a collaborative authoring process by generating a message, such as an email message, that includes co-authoring information. For example, the coordinate utilizes a messaging client 128 to generate an email message using a collaboration environment messaging template that captures at least the key elements of a co-authoring assignment.
The content field 310 comprises the information (content) to be authored by a designated participant. For example,
The author field 312 comprises an identifier (e.g., email address) that can be used to uniquely identify a co-author. The due date/time field 314 specifies the due time of the task. The instructions field 316 records the coordinator's instructions to the co-author with respect to the task assigned to the co-author. In practice, users may also use different combinations of such elements to define different types of co-authoring tasks. For example,
A few examples of co-authoring tasks are:
Type 1: [Content, Author, dueTime, Instruction]
Type 2: [Content, [<Author>+, dueTime, Instruction]+]
Here, Type 1 specifies one author per task, while Type 2 defines multiple authors per task with or without the same due times or instructions. Because Type 1 can be considered a special case of Type 2, Type 2 can be further generalized to define multiple co-authoring tasks:
[Content, [<Author>+, dueTime, Instruction]+]+ (1)
Formula 1 is a very general template and can be used to capture all co-authoring tasks.
As represented by Formula 1, the information captured by this template can be potentially quite complex, including multiple co-authoring tasks with different compositions of the elements. To help users fill in this template and help the collaboration environment 111 process with the filled-in information, a combination of tables and text blocks can be used to represent the content of the template. In this embodiment, tables are used to encode simple and deterministic information, while complex content is placed in text blocks. As shown in
In addition to launching a collaborative authoring process, a coordinator can also monitor and manage the overall co-authoring process. In one embodiment, the collaboration environment 111 also supports management actions by email. A few examples of management actions are reminding co-authors of their tasks, removing a co-author, and replacing a co-author with a new one.
Each management action can be associated with a separate template such as:
Remind: [timer, <targetAuthor>+, message]+ (2)
Remove: <targetAuthor>+ (3)
Replace: [<originalAuthor>, <targetAuthor>]+ (4)
As shown in Formula 2, the Remind template has three basic elements: timer, targetAuthor, and message. Here the timer defines when the reminder should be sent to one or more target authors. In this embodiment, the target authors are those who have not finished their assigned tasks when the timer expires. The Remove template takes as input one or more target authors to be deleted (Formula 3). The last template, Replace, takes as input the specification of the original co-author and a new one (Formula 4). A separate template is not required for Add (adding a co-author or a co-authoring task), which is part of defining a co-authoring task.
In this embodiment, the coordinator is able to utilize a management template when two conditions have been satisfied. First, a collaborative authoring process should exist (already be launched), otherwise there is nothing to manage. Second, the coordinator should be able to indicate which collaborative authoring process to manage. To satisfy the first condition, the collaboration environment 111 does not make management templates available to users if no co-authoring tasks exist. To help meet the second condition, the collaboration environment 111 lists all ongoing collaborative authoring projects in a menu from which a coordinator can select one to manage. After selecting a co-authoring project, the coordinator can then use an action template to specify management needs in an email.
Upon a coordinator's management request (e.g., sending a reminder to participants), the collaboration environment 111 acts on the coordinator's behalf. For example, the collaboration environment 111 imitates sending a reminder as if it were done by a person in a collaboration environment wiki 114. However, an extra step is performed to provide the desired awareness, which is otherwise missing in a normal email interaction. For example, for all three actions (Remind, Remove and Replace), the collaboration environment 111 emails the coordinator a confirmation with a status report after it performs the action per the coordinator's request.
As can be seen, the messaging templates discussed above allow a coordinator to easily specify a set of co-authoring tasks and/or management actions in an email message. In some instances users may make mistakes when filling in such templates (e.g., entering an invalid email address for a co-author). Correcting these mistakes after the email message is sent would require additional email interactions between the user and the collaboration environment 111. Therefore, a coordinator can interactively validate an email message before sending it to the collaboration environment 111 so that user mistakes can be caught and rectified before an unwanted or erroneous email is sent. In one embodiment, validating an email message is performed by checking the validity of each field (e.g., email IDs and a valid due time).
The format of the messaging templates discussed above allows the messaging manager 116 of the collaboration environment 111 to easily parse the email messages received from users. For example, the template formats allow the message processor 120 to extract co-authoring tasks from the message. Using the extracted information, the collaboration environment 111 performs one or more operations. For example, the collaboration environment manager 112 can create a collaboration environment wiki page 114 that includes the content that the coordinator has authored and the content to be co-authored extracted from the message received from the coordinator. The collaboration environment manager 112 can also use extracted information to insert a set of task tags (e.g., co-authors, due time, and task status) in the wiki page 114. These task tags not only are useful for driving the collaboration flow but also provide collaboration awareness.
The collaboration environment 111 also notifies each user that the coordinator has requested their participation in the collaboration project as a co-author. For example, based on the identifier of each requested co-author extracted from the coordinator's message, the message generator 118 creates a message, such as an email message, to be sent to each of these co-authors. This email message includes, or is formatted according to, the messaging template discussed above. For example,
This assignment email message 500 also includes a message 506 from the coordinator that was extracted from the first section 302 of the message 300 received from the coordinator. This message provides the participant with some context about the assignment. The message 500 also includes instructions 508 that indicate how the co-author can provide the requested information. For example, the message 500 shown in
Once the notification email message has been created, the collaboration environment 111 sends the email message to the given user via the messaging client 112 and the messaging server 104. Once the user receives the notification message, the user can accept the co-authoring task, reject the task, or transfer the task to one or more others. The user can respond to the notification email message either by replying to the email or selecting the link to the wiki page 400 that is included within the message and entering a response and/or requested information directly into the wiki page 400.
If a participant decides to accept the task, the participant can simply include the requested content in a reply email message that is sent to the collaboration environment 111. For example,
The email message 600 is addressed to the collaboration environment 111 using the ID (e.g., email address) 602 associated with the collaboration environment 111. The reply email message 600 can include any information including template portions from the notification message received from the collaboration environment 111. For example,
Once the co-author has finished creating the reply email message 600, the reply email message 600 is sent to the collaboration environment 111. The collaboration environment 111 receives the reply email message 600 and the message processor 120 analyzes the message and identifies the content created/authored by the user based on the template fields. In addition, the messaging manager 116 is able to identify which collaboration project and wiki page is associated with the message based on the content of the message, an ID associated with the message, the participants identified in the message, etc.
The collaboration environment manager 112 uses the extracted information/content to update the corresponding section in the wiki page 400. For example,
In some instances a participant may intentionally or unintentionally alter the elements of an email template. Therefore, a participant's email response may not be as expected. For example, a participant who is submitting a write-up in a reply email message to the collaboration environment 111 may accidently delete the delimiter that indicates where the participant should enter his write up. As a result, the collaboration environment 111 may not be able to properly parse the participant's reply due to the missing delimiter.
Therefore, in this embodiment, the collaboration environment 111 notifies the coordinator via a message if the response is not in an expected format, and allows the coordinator to process the response. In this embodiment, the collaboration environment 111 forwards the questionable email message to the coordinator with an attached rationale (e.g., cannot extract a co-author's input from the email reply). Instead of changing the messaging template, users may sometimes provide unexpected input in the email message. For example, as shown in
In another example, a participant may choose to completely ignore the email instructions and simply enter all comments and write-up in one place (e.g., at the top of the email message). In such situations, the collaboration environment 111 does not find the expected content where it should be (e.g., below the delimiter /-- Content --/ in
Sometimes a participant may not be satisfied with the participant's previously submitted write-up. Therefore, the participant may send another reply email message to the collaboration environment 111 with a modified write up. The collaboration environment 111 can handle this situation in various ways. For example, the modified write up can be used to replace the existing one or can be simply appended to the existing one. If there are multiple users who are assigned to work on the same section, the collaboration environment 111 can append one's input to another user's. This provides the coordinator multiple points of view and the decision on which one to keep.
The collaboration environment 111 can also automatically send a status report to users whenever appropriate. For example, in this embodiment the collaboration environment 111 automatically sends a status report to the coordinator, when sending a reminder to the designated participants, as shown in
Accordingly, the collaboration environment is a wiki-based tool that supports coordinated, collaborative authoring. Users are able to accomplish their tasks through a messaging mechanism, such as email, in a coordinated, co-authoring process. Users can use messaging templates to specify their requests in email or simply fulfill their co-authoring tasks via email reply. Additionally, the collaboration environment can understand template-based messages from users. The collaboration environment uses the information extracted from these messages to drive the collaboration flow, including automated generation and update of a wiki page to persist and share co-authoring results. As a result, the collaboration environment of the present invention allows users to use their most familiar tool (e.g., email) to complete their tasks in a co-authoring process, while using a wiki as a back channel to provide collaboration awareness.
Referring now to
After filling in the template, the user emails the message to the collaborative environment 111, at step 912. The collaborative environment 111 receives the email message from the user, at step 1014. Upon receiving the email message, the collaborative environment 111 processes the message and acts upon it, at step 1016. The collaborative environment 111 extracts information from the identified template fields within the message, at step 1018. The collaborative environment 111 uses the information extracted from the email message to automatically create a collaborative environment wiki page 114, at step 1020. The generated wiki page includes the user's authored content and the skeleton of the sections to be authored by the participants designated by the user, respectively. The collaborative environment 111 tags each section of the page with various meta-information, including its author, due time, the user's (coordinator) instruction, and the task status, at step 1022. This provides desired collaboration awareness. After creating the wiki page, the collaborative environment 111 sends a notification email to each of the participants (co-authors), at step 1024.
A participant receives the notification email from the collaborative environment 111, at step 1126. The participant generates a reply message, at step 1128. The participant adds information such as comments and the content requested by the user, at step 1130. The participant then sends the message to the collaborative environment 111, at step 1132. The collaborative environment 111 receives the email message from the participant, at step 1134. The collaborative environment 111 extracts the information that was added to the email message by the participant, at step 1136. The collaborative environment 111 updates the collaborative environment wiki page 114 with the extracted information, at step 1138. The control flow then exits at step 1140. The above process can include other steps as well. For example, the collaborative environment 111 can determine if any other participant has failed to provide their content by a given date that is set by the user. If so, the collaborative environment 111 can send a reminder email message to the participants who have not provided content. The collaborative environment 111 can also send a status report to the user providing a current status of the collaborative task/project.
The information processing system 1200 includes a computer 1202. The computer 1202 has a processor(s) 1204 that is connected to a main memory 1206, mass storage interface 1208, and network adapter hardware 1210. A system bus 1212 interconnects these system components. Although only one CPU 1204 is illustrated for computer 1202, computer systems with multiple CPUs can be used equally effectively. The main memory 1206, in this embodiment, includes the collaboration environment 111 and its components.
The mass storage interface 1208 is used to connect mass storage devices, such as mass storage device 1214, to the information processing system 1200. One specific type of data storage device is an optical drive such as a CD/DVD drive, which can be used to store data to and read data from a computer readable medium or storage product such as (but not limited to) a CD/DVD 1216. Another type of data storage device is a data storage device configured to support, for example, NTFS type file system operations.
An operating system included in the main memory is a suitable multitasking operating system such as any of the Linux, UNIX, Windows, and Windows Server based operating systems. Embodiments of the present invention are also able to use any other suitable operating system. Some embodiments of the present invention utilize architectures, such as an object oriented framework mechanism, that allows instructions of the components of operating system to be executed on any processor located within the information processing system 1200. The network adapter hardware 1210 is used to provide an interface to a network 110. Embodiments of the present invention are able to be adapted to work with any data communications connections including present day analog and/or digital techniques or via a future networking mechanism.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
Aspects of the present invention may be embodied as a system, method, or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.), or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention have been discussed above with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiments above were chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.