1. Statement of the Technical Field
The present invention relates to the field of collaborative computing and more particularly to the status awareness of objects in a collaborative computing environment.
2. Description of the Related Art
Collaborative computing refers to the use by two or more end users of a computing application in order to achieve a common goal. Initially envisioned as a document sharing technology among members of a small workgroup in the corporate environment, collaborative computing has grown today to include a wide variety of technologies arranged strategically to facilitate collaboration among members of a workgroup. No longer merely restricted to document sharing, the modern collaborative environment can include document libraries, chat rooms, video conferencing, application sharing, and discussion forums to name only a few.
A collaborative computing application enjoys substantial advantages over a more conventional, individualized computing application. Specifically, at present it is rare that a goal of any importance is entrusted and reliant upon a single person. In fact, most goals and objectives can be achieved only through the participation of a multiplicity of individuals, each serving a specified role or roles in the process. Consequently, to provide computing tools designed for use only by one of the individuals in the process can be short sighted and can ignore important potential contributions lying among the other individuals involved in the process.
To facilitate collaborative aspects of a process, collaborative environments often incorporate the concept of a “live name”. A live name is a reference within the collaborative environment to a collaborator which indicates the presence of the collaborator associated with name. For example, the live name can indicate whether the collaborator has “logged in” or whether the collaborator has not utilized the collaborator's computer for some time—an idle state. Live names may also provide additional information about the person whose name appears. For example, in an organizational setting, a user may query on a live name in order to see the job title of the named collaborator, or to communicate with the named collaborator. Live names have been most widely utilized in the collaborative chat tool where it can be helpful to know whether a collaborator is available for an online discussion, and to be able to invoke a chat by a simple operation performed upon the collaborator's name.
As an extension of the live name concept, the “live object” can provide similar, collaborative advantages. A live object refers to a reference within the collaborative environment to a document which indicates the current status of the document, for example whether or not the document is in use. The live object also can indicate the identity of a collaborator using the document. In this way, collaborators need not work in isolation towards a common goal. Rather, a team environment can be promoted by the awareness of the presence and activities of fellow collaborators in a collaborative environment.
Notwithstanding the effective notion of a live name or live object, online collaborations seldom are limited to preconfigured live objects. Rather, in many circumstances, collaborators utilize garden variety objects such as documents and files which are created outside of the collaborative environment which supports “liveness”. Accordingly, an awareness of the state of a non-live object and the application of actions based upon the state of non-live actions can arise only manually through the multiple observations of different states of different objects and collaborators. Consequently, in many circumstances, important conditions can go unrecognized.
The present invention addresses the deficiencies of the art in respect to live objects and provides a novel and non-obvious method, system and apparatus for wrapping objects for liveness in a collaborative environment. In a preferred aspect of the present invention, a method for enabling liveness for a non-live object can include the step of wrapping the non-live object to emulate liveness in a collaborative environment. Preferably, the wrapping step can include selecting at least one attribute of the non-live object, repeatedly updating a status of the at least one attribute for the non-live object, and, providing the repeatedly updated status to the collaborative environment in order to emulate liveness for the non-live object.
The selecting step can include the step of writing a reference to the non-live object and the attribute to an entry in a live object database. In this regard, the updating step can include determining a status for the attribute in the entry and writing the status to the entry. The providing step in turn can include the step of reading the status from the entry. Finally, the wrapping step can include introducing the non-live object into a unified activity manager, creating an activity in the unified activity manager, and inserting the non-live object as a resource in the created activity. For instance, the introducing step can include dragging-and-dropping the non-live object into the unified activity manager, or selecting the non-live object through a file system browser window and placing the selected non-live object into the unified activity manager.
Notably, the wrapping step can include the step of wrapping a non-live calendar item to add a completeness indicator to the calendar item. Also, the wrapping step can include the step of wrapping a non-live to-do item to add a time-of-day indicator to the to-do item. Finally, the wrapping step yet further can include the step of wrapping a non-live document to add a completeness indicator to the document.
A system for enabling liveness for a non-live object can include a collaborative environment configured to manage live objects. The system also can include a live wrapping processor programmed to wrap non-live objects to emulate live objects in the collaborative environment. In a particular aspect of the invention, the collaborative environment can be a unified activity manager.
Additional aspects of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The aspects of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.
The accompanying drawings, which are incorporated in and constitute part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention. The embodiments illustrated herein are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown, wherein:
The present invention is a method, system and apparatus for wrapping objects for liveness in a collaborative environment. In accordance with the present invention, non-live objects created outside of a collaborative environment configured for liveness can be wrapped with logic configured for liveness. The wrapper applied to the non-live object can be used to track the status of the non-live object and manage the reporting of the status to client processes so as to emulate the presence of a live object. Importantly, the collaborative environment can be a unified activity manager in which non-live objects from outside the unified activity manager can be placed within the unified activity manager and wrapped with an activity so as to become a live object within the unified activity manager.
In more particular illustration,
Specifically, the live wrapping processor 200 can include logic programmed to select a particular one of the non-live objects 110 for wrapping. Once selected, attributes in an attribute list 130 can be chosen for tracking the state of the particular one of the non-live objects 110. Preferably, the identity of the particular one of the non-live objects 110 can be stored in a table 140 along with the selected attributes from the attribute list 130. Subsequently, the live wrapping processor 200 can monitor the state of the particular one of the non-live objects 110 according to the selected attributes in the table 140. The monitored state, in turn can be combined with the particular one of the non-live objects 110 to produce a live object 160 able to be utilized within the collaborative environment 150.
In further illustration,
Once a non-live object has been wrapped in accordance with
In decision block 280, if it is determined that additional live objects remain to be processed in the database, in block 290 a next live object can be selected for processing and the operations of blocks 260 through 290 can repeat. When all live objects referenced in the database have been processed with status updates, the process can begin anew for the first live object in block 250. Notably, by maintaining periodic updates of the attributes of the non-live objects referenced in the database, an appearance of a live object can subsist by mere reference to the database by the collaborative environment. Accordingly, several collaborative aspects can be added to the non-live objects when utilized within the collaborative environment.
For example, a completeness indicator can be added to a calendar item. Specifically, the completion status of “done” or “not done” can be associated with the calendar item so as to provide a more accurate, historical view of the calendar item. Also, a completion status can be added to a to-do when scheduled as a calendar item. A scheduled time-of-day and an alerting attribute can be added to a to-do item as well. In this way, the to-do can become a lightweight calendar item.
Notably, a completeness and awareness attribute can be added to a non-live document or shared work object. The completeness indicator can indicate whether or not the non-live document or shared work object has been completed. This can be particularly helpful when assembling compound documents. Additionally, a percent-complete indicator or an anticipated completion date indicator can be added to indicate to other collaborators how close the non-live document or work object is to completion. The awareness attribute, by comparison, can be used to track the actions of other collaborators in respect to the non-live document or work object.
In a particular aspect of the invention, the collaborative environment can be a unified activity manager. To that end,
The activity view can include a description of an activity task that is contained within the activity. The task description can include one or more activity tasks associated with the activity. Additionally, activity tasks can be decomposed into zero or more dependent activity tasks, which together comprise a richer procedural specification of the original activity task. Each of these dependent activity tasks is itself an activity task, but appears in a subtask-relationship to the original activity task. This process of specifying activity tasks in sub-task-relationship may be extended to any desired level of dependent specification.
The activity view further can include a detailed listing of the properties of a selected activity in the activity list view. Specifically, the detailed listing can include a listing of collaborators (people) specified for the activity. Also, the detailed listing can include a listing of collaborator roles (roles) specified for the activity. Further, the detailed listing can include a listing of events specified for the activity. Finally, the detailed listing can include a listing of links to internal workflows, external workflows or both.
The peoples and roles view can include a listing of collaborators in the collaborative environment available for assignment to a specified activity in the activity checklist view. The peoples and roles view also can include a listing of collaborative roles in the collaborative environment available for assignment to a specified activity in the activity list view. In this regard, a role can be compared to a person in that a person references a specific identity and a role references only a class of persons. Finally, an activity map can be provided. The activity map can include a hierarchically arranged set of electronic mail messages, calendar entries, documents, files and file folders, and applications, such as an application share, discussion thread or chat session, to name a few.
In accordance with the present invention, an object 310 lacking liveness can be placed within the user interface of the unified activity manager 320—for example through the use of a drag-and-drop operation. When placed within the user interface of the unified activity manager 320, the non-live object 310 can be inserted into an activity 330 having liveness as a quality. As such, the activity 330 can act as a wrapper to the non-live object 310 in the unified activity manager 320 in order to emulate the direct liveness of the non-live object 310.
More particularly,
The present invention can be realized in hardware, software, or a combination of hardware and software. An implementation of the method and system of the present invention can be realized in a centralized fashion in one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system, or other apparatus adapted for carrying out the methods described herein, is suited to perform the functions described herein.
A typical combination of hardware and software could be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein. The present invention can also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which, when loaded in a computer system is able to carry out these methods.
Computer program or application in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following a) conversion to another language, code or notation; b) reproduction in a different material form. Significantly, this invention can be embodied in other specific forms without departing from the spirit or essential attributes thereof, and accordingly, reference should be had to the following claims, rather than to the foregoing specification, as indicating the scope of the invention.