The subject systems and/or methods are now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the systems and/or methods. It may be evident, however, that the subject systems and/or methods may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing them.
As used herein, the terms “component” and “system” are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
Referring now to
Likewise, certain listening preferences can be learned as well. For example, suppose the user consistently sets the volume no higher than 5 when listening to classical genre music but at least 6 when listening to rock genre music. The profile generation component 120 can distinguish between the genres of music and the listening preferences of the user in order to adjust the volume setting automatically for this type of activity as well as for related types of activities where no preferences have been indicated (e.g. watching video or other streaming content).
Program/application specific preferences can be inferred as well. For example, imagine that historic data collected over time reflects that the user opens his messages from newest to oldest. The profile generation component 120 can analyze this data and infer that they represent user preferences and can add them to the user's profile for this particular program. These preferences can also be extended and applied to other similar activities such as viewing files—files can be automatically re-arranged newest to oldest (in terms of creation or modification date). Thus, the user is not burdened with setting preferences for each and every activity.
Profiles created by the profile generation component 120 are device-independent which means that they can be universally accessed and employed by the user's various devices. More specifically, the user may have created a profile through activity conducted on his laptop, but at least a portion of the user profile data can be used by his PDA and pocket PC phone as well when conducting the same or similar activities. As a result, the user is not tasked with creating multiple profiles at separate times on each device.
Moreover, the different types of profile data (user, group, activity template, device, etc.) can be maintained together in a master profile. As discussed above, the master profile data for each user (or group) follows the respective user-owner and can be universally applied to new or existing activities, devices, and/or applications. This means that when the user obtains a new version of an application or an upgraded device, the existing profile data can be extended to such new objects where feasible as long as the user is involved in some way with the new application or device.
The profile generation component 120 can also construct group profiles. Group profiles are usually for the benefit and convenience of a group of users such as a department or design team, for example. Such users are typically associated by project, purpose, interest, or department and the settings reflect policies and/or preferences of the group rather than individual people in the group. Imagine that a general practice law firm includes departments of users whereby each department is designated to practice a different field of law (e.g., patent, commercial litigation, estate planning and probate, employee benefits, tax, etc.). Each field of law has different forms and filing procedures. In order to comply with such requirements, the profile generation component 120 can create a group profile for each department according to each department's policies and/or preferences. Examples of policies can include court filing rules relating to layout and format of documents (e.g., page limitations, party name nomenclature, case number, specific sections, and content); whereas examples of preferences can include template, font, font size, header/footer content, paper size, and signature line format.
Group profile data can be determined by a group leader who “speaks” for the group and represents its policies and preferences rather than any individual biases. The profile generation component 120 can also analyze the individual profiles belonging to each person in the group, extract any common preferences or policies, and include them in the group profile data. In addition, the profile generation component 120 can ascertain the purpose, intent, or focus of the group and suggest other policies or preferences accordingly. For example, if the group's purpose is recited as “U.S. Patent Law”, the profile generation component 120 can reference rules and regulations regarding patent related documents filed with the U.S. Patent Office and suggest certain policies or preferences to the group.
The profile generation component 120 can also generate device profiles from the data collected via the monitoring module 110. As previously mentioned, a device profile includes policies and preferences that are specific to the device. For instance, a handheld device can dictate the type of templates available to an activity (e.g., application or program) because of storage or screen-size limitations. Thus, if a user attempts to transfer a file from his laptop to his pocket PC phone, the device profile on the pocket PC phone can restrict or block this operation if the activity template does not comply with a policy.
In lieu of generating multiple device profiles for each of the user's devices, the master profile can include the relevant profile data for each device that the user owns. Thus, the device profile data can stay with the user rather than only with the device. When the user acquires a totally new device, a comparison can be made between the configurations of the new and existing devices. Existing profile data from an old device that is applicable in the new device can be applied to the new device to reduce the amount of time and effort required to build a new profile for the new device.
To mitigate privacy concerns, a privacy component 130 can control the sharing of profile data between devices as well as across applications, activity templates, groups, and users. In particular, the user-owner of such profile data can prevent certain profile data from being viewable by other entities unless the user-owner has authorized such access. For example, sensitive profile data for each device can be hidden from public view and accessed only by the authorized device. With the user's permission, the information can be made available and accessible to other devices. In practice, for instance, suppose that a user has a PDA and a laptop that are connected to the same network and the user wants to pass information from one device to the other. The pertinent device profile data can be shared between these two devices at the user's discretion to allow the passage of information. However, other device profile data not necessary for this exchange can be kept hidden.
Conflict between the types of profile data (e.g., user, group, device, etc.) for one user or between the profile data of collaborating users seems almost inevitable. To lessen the occurrence of conflicts, the profile generation component 120 can assign (by way of a prioritization component 140) priority levels to certain types of profile data or to certain policies or preferences included in the profile data. For example, a header/footer content policy set by a group can be given a higher priority than a similar user-made preference. Users or groups can also be prioritized such that any of their profile data can take precedence over that of another. For instance, a manager's profile data can always supersede an employee's profile data.
Turning now to
As previously mentioned, conflict can arise between the different users' profiles when multiple users are involved in the same activity. For example, imagine that Josh, Chris, and Shane are collaborating on the design of a concept car. They may be working remotely from their individual devices or together on the same device (e.g., interactive tabletop computer). Each of their profiles indicates a different font preference: Josh—Bradley Hand; Chris—Verdana; and Shane—script. The system 200 can include a conflict analysis component 240 that analyzes the particular conflict and proposes various ways to resolve it. For example, the conflict analysis component 240 can look at the user's title, position, or level and follow the profile with the highest title, position, or level. Alternatively, the conflict analysis component 240 can look at the purpose or nature of the activity at hand to select one of the three choices or to choose a completely different font that is better suited for the group's purpose, focus, or intent.
Furthermore, these users are using an activity template for car design. The activity template can have its own profile data as well. Thus, the conflict analysis component 240 can determine whether the activity template profile overrides the user profiles. That is, the activity template could have a font policy which would have a higher priority than the user's font preference.
Generally speaking, most users typically have their own user profile and at least one device profile; and as a result, conflict can arise between these profiles as well. The user can prioritize their profiles or specific profile data so that the conflict analysis component 240 understands how to resolve such conflicts. In particular, the user can set one or more of his preferences to take precedence over a device preference. Some device settings cannot be displaced with user preferences though and the user can be notified when such is the case.
The conflict analysis component 240 can also rely on a machine learning component 250 when resolving profile conflicts. The machine learning component 250 can learn from how conflicts are resolved (either by the system or by the user) and then apply these principles when future conflicts arise. In the font example above, the machine learning component can learn that the Josh, Chris, and Shane resolved the conflict without system intervention—by choosing the most readable font of the three: Tahoma. When these users work again with each other and the same conflict arises, the conflict analysis component 240 can recall the previous resolution and apply it accordingly.
Turning now to
Referring now to
The collected data can be used in its raw form to populate various parts of the user or device profile; or the raw data or portions thereof can be analyzed to yield additional data that can be included in the profile(s). For instance, inference schemes can be employed to infer additional preferences or policies based on existing preferences, policies, and/or the raw data.
Moving on to
Turning to
Various methodologies will now be described via a series of acts. It is to be understood and appreciated that the subject system and/or methodology is not limited by the order of acts, as some acts may, in accordance with the subject application, occur in different orders and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with the subject application.
Referring now to
At 730, the profiles for the user, the user's devices, and activity templates used by the user can be generated within a master profile or in separate profiles. Group profile data can be maintained in the master user profile or can be stored elsewhere and accessed as needed according to the groups listed in the user's profile.
Referring now to
In some cases, conflicts between profile data can occur particularly when multiple users, groups, or devices are involved in an activity. The method 800 can detect that a conflict exists at 830 and then can attempt to resolve the conflict at 840 by examining priority information among the users, groups, or devices. That is, the method can look at the hierarchal positions of the users, groups, or devices as appropriate. Alternatively or in addition, the method 800 can request the respective users or groups to resolve the conflict. When user or group intervention is required to resolve the conflict, the method 800 can learn from the user/group response and apply it accordingly when future conflicts arise.
In addition to the type of activity, device, or group, the application of profile data can depend on the present context.
Turning now to
The activity-centric system 1000 can enable users to define and organize their work, operations, and/or actions into units called “activities.” Accordingly, the system 1000 offers a user experience centered on those activities, rather than pivoted based upon the applications and files of traditional systems. The activity-centric system 1000 can also usually include a logging capability, which logs the user's actions for later use.
In accordance with the innovation, an activity typically includes or links to all the resources needed to perform the activity, including tasks, files, applications, web pages, people, email, and appointments. Some of the benefits of the activity-centric system 1000 include easier navigation and management of resources within an activity, easier switching between activities, procedure knowledge capture and reuse, improved management of activities and people, and improved coordination among team members and between teams.
As described herein and illustrated in
The “activity logging” component 1002 can log the user's actions on a device to a local (or remote) data store. By way of example, these actions can include, but are not limited to include, resources opened, files changed, application actions, etc. As well, the activity logging component 1002 can also log current activity and other related information. This data can be transferred to a server that holds the user's aggregated log information from all devices used. The logged data can later be used by the activity system in a variety of ways.
The “activity roaming” component 1004 is responsible for storing each of the user's activities, including related resources and the “state” of open applications, on a server and making them available to the device(s) that the user is currently using. As well, the resources can be made available for use on devices that the user will use in the future or has used in the past. The activity roaming component 1004 can accept activity data updates from devices and synchronize and/or integrate them with the server data.
The “activity boot-strapping” component 1006 can define the schema of an activity. In other words, the activity boot-strapping component 1006 can define the types of items it can contain. As well, the component 1006 can define how activity templates can be manually designed and authored. Further, the component 1006 can support the automatic generation, and tuning of templates and allow users to start new activities using templates. Moreover, the component 1006 is also responsible for template subscriptions, where changes to a template are replicated among all activities using that template.
The “user feedback” component 1008 can use information from the activity log to provide the user with feedback on his activity progress. The feedback can be based upon comparing the user's current progress to a variety of sources, including previous performances of this or similar activities (using past activity log data) as well as to “standard” performance data published within related activity templates.
The “monitoring group activities” component 1010 can use the log data and user profiles from one or more groups of users for a variety of benefits, including, but not limited to, finding experts in specific knowledge areas or activities, finding users that are having problems completing their activities, identifying activity dependencies and associated problems, and enhanced coordination of work among users through increased peer activity awareness.
The “environment management” component 1012 can be responsible for knowing where the user is, the devices that are physically close to the user (and their capabilities), and helping the user select the devices used for the current activity. The component 1012 is also responsible for knowing which remote devices might be appropriate to use with the current activity (e.g., for processing needs or printing).
The “workflow management” component 1014 can be responsible for management and transfer of work items that involve other users or asynchronous services. The assignment/transfer of work items can be ad-hoc, for example, when a user decides to mail a document to another user for review. Alternatively, the assignment/transfer of work items can be structured, for example, where the transfer of work is governed by a set of pre-authored rules. In addition, the workflow manager 1014 can maintain an “activity state” for workflow-capable activities. This state can describe the status of each item in the activity, for example, which it is assigned to, where the latest version of the item is, etc.
The “UI adaptation” component 1016 can support changing the “shape” of the user's desktop and applications according to the current activity, the available devices, and the user's skills, knowledge, preferences, policies, and various other factors. The contents and appearance of the user's desktop, for example, the applications, resources, windows, and gadgets that are shown, can be controlled by associated information within the current activity. Additionally, applications can query the current activity, the current “step” within the activity, and other user and environment factors, to change their shape and expose or hide specific controls, editors, menus, and other interface elements that comprise the application's user experience.
The “activity-centric recognition” component or “activity-centric natural language processing (NLP) component 1018 can expose information about the current activity, as well as user profile and environment information in order to supply context in a standardized format that can help improve the recognition performance of various technologies, including speech recognition, natural language recognition, desktop search, and web search.
Finally, the “application atomization” component 1020 represents tools and runtime to support the designing of new applications that consist of services and gadgets. This enables more fine-grained UI adaptation, in terms of template-defined desktops, and well as adapting applications. The services and gadgets designed by these tools can include optional rich behaviors, which allow them to be accessed by users on thin clients, but deliver richer experiences for users on devices with additional capabilities.
In accordance with the activity-centric environment 1000, once the computer understands the activity, it can adapt to that activity. For example, if the activity is the review of a multi-media presentation, the application can display the information differently as opposed to an activity of the UI employed in creating a multi-media presentation. All in all, the computer can react and tailor functionality and the UI characteristics based upon a current state and/or activity. The system 1000 can understand how to bundle up the work based upon a particular activity. Additionally, the system 1000 can monitor actions and automatically bundle them up into an appropriate activity or group of activities. The computer will also be able to associate a particular user to a particular activity, thereby further personalizing the user experience.
In summary, the activity-centric concept of the subject system 1000 is based upon the notion that users can leverage a computer to complete some real world activity. As described supra, historically, a user would outline and prioritize the steps or actions necessary to complete a particular activity mentally before starting to work on that activity on the computer. In other words, conventional systems do not provide for systems that enable the identification and decomposition of actions necessary to complete an activity.
The subject activity-centric systems enable automating knowledge capture and leveraging the knowledge with respect to previously completed activities. In other words, in one aspect, once an activity is completed, the subject innovation can infer and remember what steps were necessary when completing the activity. Thus, when a similar or related activity is commenced, the activity-centric system can leverage this knowledge by automating some or all of the steps necessary to complete the activity. Similarly, the system could identify the individuals related to an activity, steps necessary to complete an activity, documents necessary to complete, etc. Thus, a context can be established that can help to complete the activity next time it is necessary to complete. As well, the knowledge of the activity that has been captured can be shared with other users that require that knowledge to complete the same or a similar activity.
Historically, the computer has used the desktop metaphor, where there was effectively only one desktop. Moreover, conventional systems stored documents in a filing cabinet where, there was only one filing cabinet. As the complexity of activities rises, and as the similarity of the activities diverges, it can be useful to have many desktops available that can utilize identification of these similarities in order to streamline activities. Each individual desktop can be designed to achieve a particular activity. It is a novel feature of the innovation to build this activity-centric infrastructure into the operating system such that every activity developer and user can benefit from the overall infrastructure.
The activity-centric system proposed herein is made up of a number of components as illustrated in
What has been described above includes examples of the subject system and/or method. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the subject system and/or method, but one of ordinary skill in the art may recognize that many further combinations and permutations of the subject system and/or method are possible. Accordingly, the subject system and/or method are intended to embrace all such alterations, modifications, and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes” is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.
This application is related to U.S. patent application Ser. No. ______ (Attorney Docket Number MS315859.01/MSFTP1290US) filed on Jun. 27, 2006, entitled “LOGGING USER ACTIONS WITHIN ACTIVITY CONTEXT”; Ser. No. ______ (Attorney Docket Number MS315860.01/MSFTP1291US) filed on Jun. 27, 2006, entitled “RESOURCE AVAILABILITY FOR USER ACTIVITIES ACROSS DEVICES”; Ser. No. ______ (Attorney Docket Number MS315861.01/MSFTP1292US) filed on Jun. 27, 2006, entitled “CAPTURE OF PROCESS KNOWLEDGE FOR USER ACTIVITIES”; Ser. No. ______ (Attorney Docket Number MS315862.01/MSFTP1293US) filed on Jun. 27, 2006, entitled “PROVIDING USER INFORMATION TO INTROSPECTION”; Ser. No. ______ (Attorney Docket Number MS315863.01/MSFTP1294US) filed on Jun. 27, 2006, entitled “MONITORING GROUP ACTIVITIES”; Ser. No. ______ (Attorney Docket Number MS315865.01/MSFTP1296US) filed on Jun. 27, 2006, entitled “CREATING AND MANAGING ACTIVITY-CENTRIC WORKFLOW”; Ser. No. ______ (Attorney Docket Number MS315866.01/MSFTP1297US) filed on Jun. 27, 2006, entitled “ACTIVITY-CENTRIC ADAPTIVE USER INTERFACE”; Ser. No. ______ (Attorney Docket Number MS315867.01/MSFTP1298US) filed on Jun. 27, 2006, entitled “ACTIVITY-CENTRIC DOMAIN SCOPING”; and Ser. No. ______ (Attorney Docket Number MS315868.01/MSFTP1299US) filed on Jun. 27, 2006, entitled “ACTIVITY-CENTRIC GRANULAR APPLICATION FUNCTIONALITY”. The entirety of each of the above applications is incorporated herein by reference.