Context based work environment

The present invention extends to methods, systems, and computer program products for providing a context based work environment. In some embodiments, a computer system is configured to mine relationships to capture references relevant to a context. In other embodiments, a computer system adds a reference to a context. In yet other embodiments, a computer system performs a task when focus is shifted off of the task between performance of different portions of the task. Accordingly, embodiments of the present invention promote more efficient data manipulation at a computer system and can (potentially significantly) reduce the amount of work that has to be re-performed when a worker leaves and then subsequently resumes a task.

CROSS-REFERENCE TO RELATED APPLICATIONS

Not applicable.

BACKGROUND OF THE INVENTION

Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, and database management) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. As a result, many tasks performed at a computer system (e.g., voice communication, accessing electronic mail, controlling home electronics, Web browsing, and printing documents) include the exchange of electronic messages between a number of computer systems and/or other electronic devices via wired and/or wireless computer networks.

In virtually any computing environment, users often switch between differently configured components, such as, for example, different applications and/or different data. Often, these different applications and different data are relevant to one another. For example, in Line of Business (“LOB”) systems references often refer to instances, such as, for example, of a specific customer, a specific order, or a specific product. Thus, in the course of preparing a customer proposal, a sales manager may want to compare a number of alternative products from various suppliers to decide on a product strategy. Accordingly, each alternative product is relevant to every other alternative product and to the customer proposal.

Often, the manipulation of different types of data through the use of different applications is part of a human-driven process initiated and understood by a user of a computer system. For example, the sales manager may access product data from different suppliers, potentially using different applications. Some product data may be obtained through electronic mail, some through Web browsing, some through telephone communication, etc. It may be the responsibility of the sales manager to then compile a summary of the customer proposal for corporate executives. However, from the perspective of a computer system that runs the applications and manipulates the data, the process is an unstructured process. That is, the process from accessing product data through different applications and then compiling a summary exists in the sales manager's mind but no formal description of the process is known to the computer system. Thus, there is typically no computer based assistance providing an overall task status or computer based guidance in coordinating applications. Accordingly, the burden for maintaining a task status and coordinating applications falls on the sales manager.

Thus, if a user has to suspend work on a human-driven process (e.g., to work on some other process), there is often no easy way to return to the point in the process where work was suspended. That is, there is typically no computer based mechanism for suspending and resuming a task that spans multiple data types, applications, etc. As a result, a user is often required to remember where they were. If a user is not precise in their remembrance, the user may be required to redo some amount of work that was previously performed. For example, when returning to customer proposed project, the sales manager may have to locate and re-review e-mails, Web pages, and phone messages to re-identify products from different suppliers.

Similar, and potentially more difficult, problems can occur when a first user performs one portion of a human-driven process and a second different user (e.g., as a result of the first user delegating responsibility) performs another portion of the human-driven process. That is, there is typically no computer based mechanism for implementing mulit-user based tasks when different portions of the task rely on different data types and different applications. As a result, the second user may have no way to know how far along in the human-driven process the first user was before the second user began working on the human-driven process. For example, the sales manager may begin work on the customer proposal and then, at some future point, delegate completion of the customer proposal to an assistant. Unfortunately, to insure that the customer proposal is correct, the assistant may have to re-perform at least some of the actions the sales manager has already performed. For example, the assistant may need to locate and re-review e-mails, Web pages, and phone messages that the sales manager has already reviewed.

Other similar problems can occur when different portions of a task rely on differently configured computer system components, such as, for example, differently configured user-interfaces, differently configured security requirements, differently configured connectivity requirements, etc. As result, a user is often forced to re-identify previously identified data and re-performed previously performed work. Re-identifying previously identified data and re-performing previously performed work is inefficient and can reduce productivity.

BRIEF SUMMARY OF THE INVENTION

The foregoing problems with the prior state of the art are overcome by the principles of the present invention, which are directed towards methods, systems, and computer program products for providing a context based work environment. In some embodiments, a computer system mines relationships to capture references relevant to a context. The computer system submits query criteria to the context through a common external behavior of the context. The common external behavior is common to the context and one or more other contexts and provides a common interface such that different applications can uniformly submit queries to the context and to the one or more other contexts.

The context internally identifies any references in the context that satisfy the query criteria in accordance with internal behavior specific to the context. The computer system determines that a second context, included in the one or more contexts, with potentially relevant references is within a relevance threshold of the context. The computer system recursively submits the query criteria to the second context through the common external behavior. The second context internally identifies any references in the second context that satisfy the query criteria in accordance with internal behavior specific to the second context.

In other embodiments, a computer system adds a reference to a context. The computer system selects a reference with a user-input device. The computer system indicates that the reference is to be included in a context. The context has a common external context behavior for receiving references that is common to the context and one or more other contexts at the computer system. The context accepts the reference in accordance with the common external behavior. The context processes the reference in accordance with internal logic. The internal logic being internal to the context and differing from the internal logic of at least one of the one or more other contexts.

In yet other embodiments, a computer system performs a task when focus is shifted off of the task between performance of different portions of the task. The computer system shifts focus (e.g., either automatically or in response to user input) to a context that includes one or more references relevant to performing a task. A first portion of the task is performed. Performance of the first portion of the task has an outcome that manipulates the configuration of one or more of the relevant references. The computer system saves the context to preserve the configuration of the one or more relevant references. The computer system shifts focus to a different context (e.g., either automatically or in response to user input) that includes different references such that focus is shifted away from the configuration of the one or more relevant references. The computer system restores the context subsequent to saving the context. A second subsequent portion of the task that depends on the outcome of the first portion of the task is performed. The second subsequent portion of the task utilizes the preserved configuration of the one or more relevant references such that performance of the first portion of the task does not have to be repeated.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The principles of the present invention provide for providing a context based work environment. In some embodiments, a computer system mines relationships to capture references relevant to a context. The computer system submits query criteria to the context through a common external behavior of the context. The common external behavior is common to the context and one or more other contexts and provides a common interface such that different applications can uniformly submit queries to the context and to the one or more other contexts.

The context internally identifies any references in the context that satisfy the query criteria in accordance with internal behavior specific to the context. The computer system determines that a second context, included in the one or more contexts, with potentially relevant references is within a relevance threshold of the context. The computer system recursively submits the query criteria to the second context through the common external behavior. The second context internal identifies any references in the second context that satisfy the query criteria in accordance with internal behavior specific to the second context.

In other embodiments, a computer system adds a reference to a context. The computer system selects a reference with a user-input device. The computer system indicates that the reference is to be included in a context. The context has a common external context behavior for receiving references that is common to the context and one or more other contexts at the computer system. The context accepts the reference in accordance with the common external behavior. The context processes the reference in accordance with internal logic. The internal logic being internal to the context and differing from the internal logic of at least one of the one or more other contexts.

In yet other embodiments, a computer system performs a task when focus is shifted off of the task between performance of different portions of the task. The computer system shifts focus (e.g., either automatically or in response to user input) to a context that includes one or more references relevant to performing a task. A first portion of the task is performed. Performance of the first portion of the task has an outcome that manipulates the configuration of one or more of the relevant references. The computer system saves the context to preserve the configuration of the one or more relevant references. The computer system shifts focus to a different context (e.g., either automatically or in response to user input) that includes different references such that focus is shifted away from the configuration of the one or more relevant references. The computer system restores the context subsequent to saving the context. A second subsequent portion of the task that depends on the outcome of the first portion of the task is performed. The second subsequent portion of the task utilizes the preserved configuration of the one or more relevant references such that performance of the first portion of the task does not have to be repeated.

Embodiments within the scope of the present invention include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media may be any available media, which is accessible by a general-purpose or special-purpose computer system. By way of example, and not limitation, such computer-readable media can comprise physical storage media such as RAM, ROM, EPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other media which can be used to carry or store desired program code means in the form of computer-executable instructions, computer-readable instructions, or data structures and which may be accessed by a general-purpose or special-purpose computer system.

In this description and in the following claims, a “network” is defined as one or more data links that enable the transport of electronic data between computer systems and/or modules. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer system, the connection is properly viewed as a computer-readable medium. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above should also be included within the scope of computer-readable media. Computer-executable instructions comprise, for example, instructions and data which cause a general-purpose computer system or special-purpose computer system to perform a certain function or group of functions. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code.

In this description and in the following claims, a “computer system” is defined as one or more software modules, one or more hardware modules, or combinations thereof, that work together to perform operations on electronic data. For example, the definition of computer system includes the hardware components of a personal computer, as well as software modules, such as the operating system of the personal computer. The physical layout of the modules is not important. A computer system may include one or more computers coupled via a network. Likewise, a computer system may include a single physical device (such as a mobile phone or Personal Digital Assistant “PDA”) where internal modules (such as a memory and processor) work together to perform operations on electronic data.

In this description and in the following claims, a “reference” is defined as data used to identify one or more instances of a data entity. References can include one or more data items used to identify data entities. For example, customers can be uniquely identified by tax number, DUNS number, etc. Alternately, a list of customers can be identified by zip code, region, account, manger, etc.

References can be used to formulate queries to services, such as, for example, a list of data entity attributes or a formulation of a set of conditions. A reference can include a combination of required and optional attributes. Thus, clients that have different reference information can flexibly obtain similar views of data entities and utilize the same actions through the same interfaces. A reference schema can be utilized to expose attributes and properties of data entities for identifying data entities. Thus, reference formats can be formally and generally defined.

In this description and in the following claims, a “relationship” is defined as information in one data entity that can be used to construct a reference to another data entity. For example, given a view of an order data entity (e.g., representing a purchase order) it is possible to construct a reference to a corresponding customer data entity (the customer purchasing the products in the purchase order) based on information in the order data entity. That is, the order view can be transformed into a customer reference referring to the customer data entity. Relationships can be defined using both a view schema and a reference schema. Thus, relationships are not constrained to a single service and can be used to relate data entities encapsulated in different services.

Relationships can be statically defined in metadata, such as, for example, an express reference to some data entity. For example, an order data entity can include an express reference to the customer that submitted the order. Alternately, a context manager can correlate data at run-time to derive or infer relationships between data entities (hereinafter referred to as “correlation”). For example, a service agent can determine (by parsing or some other mechanism) that the body of a document contains a reference to product data. Thus, the context manager infers that the product data is relevant to the document. Further, when multiple references are added to the same context, a context manager can correlate the multiple references to one another.

Accordingly, a combination of entities, references, and relationships can be utilized to semantically describe services. A semantic description of services can thus include data entities, their relationships to one another, as well as their behaviors. Based on a semantic description of services, relevance between data entities can be determined. Relevance can be defaulted across all users, can be role based, or based on activity.

In this description and in the following claims, a “context” is defined as an environment in which something exists or happens. A context can be viewed as a container of references that are relevant to an environment and/or task. Context can change over time as the relevancy of references relatively to an environment and/or task changes. Different types of contexts can be configured for different uses.

For example, an activity context can be configured to display references as icons on a workspace and the relationships as connecting lines. Hovering over the icons with a cursor can cause popup text to display. One mode of selecting (e.g., clicking with a mouse) replaces an icon with the popup text. Another mode of selecting (e.g., double-clicking with a mouse) opens a window for content.

A collaboration context can be configured to include and manage timelines and planning. It shows the references, where appropriate, attached to the timeline or to the planning. It may display the references as icons, as pop-ups or as windows. The references can exhibit similar behavior as in the activity context.

A document context can be configured to include entity references embedded in the text as SmartTags or icons. These icons can provide exact, up to date, information about the entities.

A Real Time Communication (RTC) context can include contact information, video, instant message conversation text, possibly a transcript of a voice conversation and an area that can be used to share (or actually communicate) references between the parties in conference. Different parties can view different information based on the same reference at the same time. They share the references, but not necessarily the behavior (e.g., my purchase order may be your sales order).

Different types of contexts can have common external behavior. For example, different types of contexts can all store references, interact with stored references, allow references to provide the same user experience across contexts, can accept new references (e.g., through drag and drop), can remove references, can receive queries, and can provide query results.

On the other hand, different types of contexts can have different internal logic. For example, different types of contexts can differ in how they interact with references, in how they structure references, in how they present reference structure, and in how they store and share context. Different types of context can also differ in how they calculate relevance. For example, a collaboration context may find recent events more relevant and may understand something about a business objective. On the other hand, a document context has no timeline and no business objective, but it may derive information from its store or from its type and use this instead. This leads to offering different navigation and different actions. In one context, products may be closely linked to suppliers, in another to ongoing projects, and in a third to general ledger accounts.

FIG. 1illustrates an example of a computer architecture100that facilitates a context based work environment. Depicted in computer architecture100is computer system101. Computer system101can be connected to a network, such as, for example, a Local Area Network (“LAN”), a Wide Area Network (“WAN”), or even the Internet. Accordingly, computer system101and other network connect computer systems can receive data from and send data to other computer systems connected to a network. Accordingly, computer system101, as well as other connected computer systems (not shown), can create message related data and exchange message related data (e.g., Internet Protocol (“IP”) datagrams and other higher layer protocols that utilize IP datagrams, such as, Transmission Control Protocol (“TCP”), Hypertext Transfer Protocol (“HTTP”), Simple Mail Transfer Protocol (“SMTP”), etc.) over the network. For example, computer systems101can create SOAP envelopes, exchange SOAP envelopes over a network, and receive SOAP envelopes.

Computer system101includes context manager102that is generally configured to manage containers of references. Context manager102manages containers of references to provide a user of computer system101with references that are relevant to a specified context. Context manager102includes context capture module103, relevance module104, context save module106, context restore module107, and context query module108. Generally, context capture module103is configured to capture references for a context, relevance module104is configured to determine the relevance of one reference to another reference, context save module106is configured to save a context, context restore module107is configured to restore a context, and context query module108is configured to query a context for references matching specified criteria.

Storage151can be virtually any type of storage devices, such as, for example, a magnetic disk or optical disk. Storage151can store references (data) in various different formats that are in turn utilized by various different applications at computer system101. For example, as depicted, storage151stores documents152, contacts153, e-mails154, real time communications156, and contexts157. However, it should be understood that a wide range of other types of data can also be stored at storage151. Reference schema114can be utilized to expose attributes and properties of relationships between references stored at storage151and otherwise utilized at computer system101.

Context manager102can create contexts (i.e., containers of references) that include references stored at storage151and maintain those contexts as contexts157. For example, as depicted, activity context111includes order121, contact122, product123, and e-mail124. Context capture module103can utilize relationships between references to determine what references are to be captured for inclusion in a context (i.e., in a container of references). Context capture module103can interoperate with relevance module104to identify other references that have a requisite relevance to captured references. References having a requisite relevance to captured references can also be included in the context. For example, if alternate products141and142are potential alternates for product123, relevance module104can determine that alternate products141and142are to be included in activity context111.

Relevance module104can evaluate static metadata relationships between references and can create correlations between references (e.g., at run-time) to determine relevance. For example, relevance module104can create a correlation between alternate product141and alternate product142based on alternate product141and alternate product142being alternate products for product123. Relevance module104can include logic to make such a determination even if there is no expressly described relationship (e.g., defined in reference schema114) between alternate product141and alternate product142. For example, relevance module104may detect that alternate product141and alternate product142were both identified in a search for replacements for product123.

One metric for determining relevance includes calculating how many relationships have been followed (or the “distance”) between references. A relevance threshold can be defined to indicate how related one reference is to be to another reference for the one referenced to be identified as relevant to the other reference (and thus possibly included in the same context as the first reference). In some embodiments, a relevance threshold (e.g., relevance threshold116) is defined as a number, such as, for example, 1, 2, 3, 4, 5, etc. The distance between two references can be compared to the relevance threshold to determine if one reference is relevant to the other reference. For example, when the distance between two reference is within (e.g., is less than or equal to) the relevance threshold, relevance module104determines that one reference is relevant to the other reference. On the other hand, when the distance between references is not within (e.g., is greater than) the relevance threshold, relevance module determines that one reference is not relevant to the other reference.

Thus, a relevance threshold can essentially result in a perimeter around a context. References relevant to the context can be limited to those data entities within the perimeter.

However, it should be understood that a relevance threshold is not limited to numbers representing a perimeter around a requested data entity. For example, a relevance threshold can be a more complex relevance data structure including other relevance rule data, such as, for example, a user's role, a data entity type, recorded data usage, etc. A number representing a perimeter distance may or may not be combined with other relevance rule data in a relevance data structure. For example, the relevance of a relationship can be determined by a relevance algorithm. A relevance algorithm can be configured in metadata referring to a piece of executable code that can return a relevancy.

Context capture module103and/or relevance module104can include references in a context automatically. For example, in response to order121being captured for inclusion in activity context111, context capture module103can also capture contact122(e.g., a sales person for order121) and product123(e.g., a product included in order121). Thus, when a user of computer system accesses order121, other relevant references are also available.

Users can also add references to a context. For example, a user-interface can include a menu option of including a reference in a context. A menu including such a menu option can be revealed by selecting (e.g., right clicking) on a reference. Alternately, a common external behavior of contexts can be to interact with a user-interface to facilitate drag and drop addition of a reference to a context. A user can select a reference (e.g., clicking and holding down a left mouse button), drag the reference (e.g., by moving the mouse) to the context, and drop the reference (e.g., releasing the left mouse) into the context. For example, a user can drag and drop e-mail126(e.g., from contact122's boss) into activity context111. Similar techniques can be used to remove a reference from a context.

Upon receiving a reference (added automatically or by a user) the internal logic of the context (which can differ from context to context) controls how the reference is processed. For example, in a document context a reference can be represented by a smart tag or hyperlink. Alternately, in a collaborative context, a reference can be represented by an icon on an appropriate location in a timeline. User added references can be classed as highly relevant to a context.

Context save module106can save a context to contexts157. For example, context save module106can save activity context111to contexts157. An active context can be a context stored in the system memory of computer system101. Thus, context save module106can save a context from system memory to storage151. On the other hand, context restore module107can restore a context form contexts157. For example, context restore module107can load collaboration context131from contexts157. Thus, context restore module can load a saved context from storage151into system memory.

Context query module108can query contexts (i.e., containers of references) for references satisfying specified query criteria. For example, context query module108can submit criteria161, such as, for example, an order number, an employee ID, a product name, etc., to activity context111. Criteria161can originate from a user's manipulation of input devices (e.g., a keyboard and mouse) or at another computer system.

Context query module108can implement recursive queries. For example, as a result of alternate products141and142being relevant to product123, context query module108may also submit criteria161to collaboration context131. Context query module108can submit criteria161to other contexts having references related to references in collaboration context131, etc. Recursion can be scoped (e.g., using a relevance threshold) such that a reasonable amount of references are returned in response to a query. For example, it may be that context query module108recurses to contexts that are within a distance of 1 from a context that initially received query criteria.

Query results can be returned to context query module for display at a user interface.

FIG. 2illustrates an example user-interface screen of an activity context200. Activity context200includes relevant references for order5006(PO5006for corporation A and SO5006-01for corporation B) from the perspective of an employee of corporation A. Context200shows relevant references for corporation A, including related purchase orders PO5022, PO4987, and PO4851and product Z that is included in PO5006. Context200also shows relevant references for corporation B, including jobs, sales orders, representatives, and correspondence. A transcription and audio file of a voice message is also included. Thus, the employee has efficient access to relevant information for order5006without having to run multiple applications (e.g., a media player, purchase order application, contact viewer, etc.) and search in various different locations.

FIG. 3illustrates an example flow chart of a method300for mining relationships to capture references relevant to a context. The method300will be described with respect to computer architecture100and activity context200.

Method300includes an act of submitting query criteria to a context in accordance with a common external behavior (act301). For example, context query module108can submit criteria161to activity context111. It may be that activity context111contains some of the references depicted in activity context200. For example, order121may be Sales Order SO5006-01, contact122may be Rob Baker, product123may be product Z, etc. As previously, described, criteria161can include an order number, an employee ID, a product name, etc.

The common external behavior is common to the context and one or more other contexts and provides a common interface such that different applications can uniformly submit queries to the context and to the one or more other contexts. For example, activity context111can expose a common external behavior for receiving query criteria that is common with other contexts (e.g., collaboration context131) at computer system101. Applications, such as, for example, context manager102, can thus uniformly (e.g., according to a similar or even the same data format) submit queries to activity context111, collaboration context131, and other contexts in contexts157.

Method300includes an act of the context identifying any references in the context that satisfy the query criteria in accordance with internal behavior specific to the context (act302). For example, activity context111can identify any references (e.g., order121, contact122, etc.) that satisfy criteria161. Activity context111can process criteria161in accordance with internal logic that may differ from the internal logic of other contexts (e.g., collaboration context131). Identified references can be formatted in accordance with reference schema114or can be unstructured references.

Activity context111can expose a common external behavior for returning identified references that is common with other contexts (e.g., collaboration context131) at computer system101. Activity context111can return any identified references that satisfy the query criteria161to context query module108in accordance with the common external behavior.

Method300includes an act of determining that a second context, included in the one or more other contexts, with potentially relevant references is within a relevance threshold of the context (act303). For example, relevance module104can determine that collaboration context131is within relevance threshold116of (e.g., a single relationship is traversed to get to) activity context111.

Method300includes an act of recursively submitting the query criteria to the second context through the common external behavior (act304). For example, context query module108can submit criteria161to collaboration context131. It may be that collaboration context131contains references that are relevant to references depicted in activity context200. For example, alternate products141and142may be relevant to product Z. Collaboration context131can expose the common external behavior for receiving query criteria that is common with other contexts (e.g., activity context111) at computer system101.

Method300includes an act of the second context identifying any references in the second context that satisfy the query criteria in accordance with internal behavior specific to the second context (act305). For example, collaboration context131can identify any references in collaboration context131(e.g., alternate products141and142and document143, etc.) that satisfy criteria161. Collaboration context131can process criteria161in accordance with internal logic that may differ from the internal logic of other contexts (e.g., activity context111).

Collaboration context131can expose the common external behavior for returning identified references that is common with other contexts (e.g., activity context111) at computer system101. Collaboration context131can return any identified references that satisfy the query criteria161to context query module108in accordance with the common external behavior.

Relevance module104can determine if any other contexts are within relevance threshold116of activity context111. These other contexts can include contexts that are the same distance from activity context111as collaboration context131. These other contexts can also include contexts that are the further from activity context111than collaboration context131but that are still within relevance threshold116. For example, when the relevance threshold116is traversal of two relationships, any context with one relationship traversal from collaboration context131would also be within relevance threshold116. These other contexts can expose a common external behavior for receiving query criteria and returning identified references that are common with other contexts (e.g., activity context111and collaboration context131) at computer system101. However, these other contexts can process criteria161in accordance with internal logic that may differ from the internal logic of other contexts (e.g., activity context111and collaboration context131).

FIG. 4illustrates an example flow chart of a method400for adding a reference to a context. The method400will be described with respect to computer architecture100.

Method400includes an act of selecting a reference with a user-input device (act401). For example, a user of computer system101can use a keyboard and/or mouse to select an icon representing e-mail126.

Method400includes an act of indicating that the reference is to be included in a context having a common external context behavior for receiving references (act402). The common external behavior is common to the context and one or more other contexts at the computer system. For example, a user of computer system101can drag the icon representing e-mail126to activity context111. Alternately, a user of a computer system can select a menu option associated with e-mail126to indicate that e-mail126is to be included in activity context111. Activity context111, collaboration context131, and other contexts in contexts157can have a common external behavior for receiving references.

Method400includes an act of the context accepting the reference in accordance with the common external behavior (act403). For example, activity context111can accept e-mail126in accordance with the external behavior common to activity context111, collaboration context131, and other contexts in contexts157. It may be that the icon representing e-mail126that was previously dragged to activity context111is subsequently dropped into activity context111. Alternately, as a result of a menu selection activity context111can accept e-mail126.

Method400includes an act of the context processing the reference in accordance with internal logic (act404). For example, activity context111can process e-mail126in accordance with logic contained in activity context111. A context's internal logic can differ from the internal logic of other contexts. For example, the internal logic contained in activity context111can differ from the internal logic contained in collaboration context131.

FIG. 5illustrates an example flow chart of a method500for performing a task when focus is shifted off of the task between performance of different portions of the task. The method500will be described with respect to computer architecture100and activity context200.

Method500includes an act of shifting focus to a context that includes one or more references relevant to performing a task (act501). For example, a user of computer system can use an input device to shift focus to activity context200. As previously described, the references depicted in activity context111can be some of the references displayed in activity context200. One or more of the references in activity context200can be relevant to the task of determining the total cost of all purchase orders that include product Z. Alternately, for example, in response to some event, context manager can automatically shift focus to activity context200(without receiving user input).

Method500includes an act of performing a first portion of a task, performance of the first portion of the task having an outcome that manipulates the configuration of one or more of the relevant references (act502). For example, a first portion of the task of determining the total cost of all purchase orders that include product Z, may be identifying all of the purchase orders that include product Z. Depicted in activity context200, the identified purchase orders include PO5006, PO5022, PO4987, and PO4851. Including the identified purchase orders in activity context200changes the configuration of the activity context200(since these purchase orders were not previously included under the “Purchase Orders” reference).

Method500includes an act of saving the context to preserve the configuration of the one or more relevant references (act503). For example, in response to user-input, context save module106can save activity context200to storage151. Alternately, for example, in response to some event, context save module106can automatically save activity context200(e.g., without receiving user input).

Method500includes an act of shifting focus to a different context that includes different references such that focus is shifted away from the configuration of the one or more relevant references (act504). For example, in response to user input focus can shift from activity context200to some other context stored in contexts157. As a result of the shift in focus, the grouping of the identified purchase orders PO5006, PO5022, PO4987, and PO4851depicted in activity context200may be wiped from system memory and/or may no longer be displayed. Alternately, for example, in response to some event, context manager102can automatically shift focus from activity context200to some other context stored in contexts157(e.g., without receiving user input).

Method500includes an act of restoring the context subsequent to saving the context (act505). For example, in response to user-input, context restore module can restore activity context200. Alternately, for example, in response to some event, context restore module107can automatically restore activity context200(e.g., without receiving user input). Restoring context can include preserving the grouping and configuration of the one or more relevant references. For example, the relationships and arrangements depicted inFIG. 2can be preserved when activity context200is saved.

Method500includes an act of performing a second subsequent portion of the task that depends on the outcome of the first portion of the task, the second subsequent portion of the task utilizing the preserved configuration of the one or more relevant references such that performance of the first portion of the task does not have to be repeated (act506). For example, the total cost of purchase orders PO5006, PO50822PO4987, and PO4851can be calculated from the preserved grouping of purchase orders PO5006, PO5022, PO4987, and PO4851. The total cost can be calculated without having to re-identify that purchase orders PO5006, PO5022, PO4987, and PO4851include product Z.

Thus, a context based work environment generally assists a user in integrating tasks, applications, other users, and remote systems and their corresponding data. As a result, embodiments of the present invention promote more efficient data manipulation at a computer system. Computer system users can flexibly query for references relevant to a context and can add and remove references from a context in accordance with common external behavior that is common across different types of contexts. However, different contexts can have different internal logic that processes references in a different ways, for example, based on context type. Further, embodiments of the present invention can (potentially significantly) reduce the amount of work that has to be re-performed when a worker leaves and then subsequently resumes a task.

With reference toFIG. 6, an example system for implementing the invention includes a general-purpose computing device in the form of computer system620, including a processing unit621, a system memory622, and a system bus623that couples various system components including the system memory622to the processing unit621. Processing unit621can execute computer-executable instructions designed to implement features of computer system620, including features of the present invention. The system bus623may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory includes read only memory (“ROM”)624and random access memory (“RAM”)625. A basic input/output system (“BIOS”)626, containing the basic routines that help transfer information between elements within computer system620, such as during start-up, may be stored in ROM624.

The computer system620may also include magnetic hard disk drive627for reading from and writing to magnetic hard disk639, magnetic disk drive628for reading from or writing to removable magnetic disk629, and optical disk drive630for reading from or writing to removable optical disk631, such as, or example, a CD-ROM or other optical media. The magnetic hard disk drive627, magnetic disk drive628, and optical disk drive630are connected to the system bus623by hard disk drive interface632, magnetic disk drive-interface633, and optical drive interface634, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-executable instructions, data structures, program modules, and other data for the computer system620. Although the example environment described herein employs magnetic hard disk639, removable magnetic disk629and removable optical disk631, other types of computer readable media for storing data can be used, including magnetic cassettes, flash memory cards, digital versatile disks, Bernoulli cartridges, RAMs, ROMs, and the like.

Program code means comprising one or more program modules may be stored on hard disk639, magnetic disk629, optical disk631, ROM624or RAM625, including an operating system635, one or more application programs636, other program modules637, and program data638. A user may enter commands and information into computer system620through keyboard640, pointing device642, or other input devices (not shown), such as, for example, a microphone, joy stick, game pad, scanner, or the like. These and other input devices can be connected to the processing unit621through input/output interface646coupled to system bus623. Input/output interface646logically represents any of a wide variety of different interfaces, such as, for example, a serial port interface, a PS/2 interface, a parallel port interface, a Universal Serial Bus (“USB”) interface, or an Institute of Electrical and Electronics Engineers (“IEEE”) 1394 interface (i.e., a FireWire interface), or may even logically represent a combination of different interfaces.

A monitor647or other display device is also connected to system bus623via video interface648. Other peripheral output devices (not shown), such as, for example, speakers and printers, can also be connected to computer system620.

Computer system620is connectable to networks, such as, for example, an office-wide or enterprise-wide computer network, a home network, an intranet, and/or the Internet. Computer system620can exchange data with external sources, such as, for example, remote computer systems, remote applications, and/or remote databases over such networks.

Computer system620includes network interface653, through which computer system620receives data from external sources and/or transmits data to external sources. As depicted inFIG. 6, network interface653facilitates the exchange of data with remote computer system683via link651. Network interface653can logically represent one or more software and/or hardware modules, such as, for example, a network interface card and corresponding Network Driver Interface Specification (“NDIS”) stack. Link651represents a portion of a network (e.g., an Ethernet segment), and remote computer system683represents a node of the network.

Likewise, computer system620includes input/output interface646, through which computer system620receives data from external sources and/or transmits data to external sources. Input/output interface646is coupled to modem654(e.g., a standard modem, a cable modem, or digital subscriber line (“DSL”) modem) via link652, through which computer system620receives data from and/or transmits data to external sources. As depicted inFIG. 6, input/output interface646and modem654facilitate the exchange of data with remote computer system693via link652. Link652represents a portion of a network and remote computer system693represents a node of the network.

WhileFIG. 6represents a suitable operating environment for the present invention, the principles of the present invention may be employed in any system that is capable of, with suitable modification if necessary, implementing the principles of the present invention. The environment illustrated inFIG. 6is illustrative only and by no means represents even a small portion of the wide variety of environments in which the principles of the present invention may be implemented.

In accordance with the present invention, modules including content managers, context capture modules, relevance modules, context save modules, context restore modules, context query modules, as well as associated data, including relevance thresholds, reference schemas, references, and relationships can be stored and accessed from any of the computer-readable media associated with computer system620. For example, portions of such modules and portions of associated program data may be included in operating system635, application programs636, program modules637and/or program data638, for storage in system memory622.

When a mass storage device, such as, for example, magnetic hard disk639, is coupled to computer system620, such modules and associated program data may also be stored in the mass storage device. In a networked environment, program modules depicted relative to computer system620, or portions thereof, can be stored in remote memory storage devices, such as, system memory and/or mass storage devices associated with remote computer system683and/or remote computer system693. Execution of such modules may be performed in a distributed environment as previously described.