Task completion through inter-application communication

Among other things, one or more techniques and/or systems for facilitating task completion through inter-application communication and/or for registering a target application for contextually aware task execution are provided. That is, a current application may display content comprising an entity (e.g., a mapping application may display a restaurant entity). One or more actions capable of being performed on the entity may be exposed (e.g., a reserve table action). Responsive to selection of an action, one or more target applications capable of performing the action on the entity may be presented. Responsive to selection of a target application, contextual information for the entity and/or the action may be passed to the target application so that the target application may be launched in a contextually relevant state to facilitate completion of a task. For example, a dinning application may be launched to a table reservation form for the restaurant entity.

BACKGROUND

Many users utilize computing devices, such as mobile phones, tablet devices, and/or personal computers, to perform various types of actions. In one example, a user may input a speech command “what is today's news” into a mobile phone. The mobile phone may provide the user with a list of news website search results through a web browser. In another example, a user may input a search query “order movie tickets” through a search engine accessed through a tablet device. The search engine may provide a list of websites that may be tagged as relating to movie tickets. The user may manually explore a movie website that may provide movie information, such as movie reviews, movie show times, and/or a movie ticket ordering service. After discovering the ticket ordering service, the user may provide information requested by the ticket order service in order to complete an order ticket movie action. Unfortunately, completing the order ticket movie action may require locating a particular movie ticketing app or website, extensive manual input, searching, trial and error, and/or input of redundant information.

SUMMARY

Among other things, one or more systems and/or techniques for facilitating task completion through inter-application communication and/or for registering a target application for contextually aware task execution are provided herein. In some embodiments of facilitating task completion, an entity comprised within content of a current application may be identified. The entity may comprise a person entity, a business entity, a consumer product entity, a time entity, a location entity, an object entity, and/or any other types of entities. For example, a social network application may display a social network post comprising content describing a Sports Car Model (X) for 2013, which may be used to identify a car entity (e.g., the content of the social network post may match a car entity definition comprising one or more entity parameters used to define the car entity and/or describe actions that may be performed on the car entity). One or more actions that may be performed on the entity may be exposed. In an example, the social network application may have a view car reviews action embedded within the social network application. In another example, a car quote action may be dynamically identified based upon the car entity (e.g., the car entity definition may reference a car quote action definition comprising one or more action parameters corresponding to information used to perform a car quote action upon the car entity).

Responsive to a selection of an action, a user intent to accomplish a task may be determined based upon an entity context associated with the entity and/or an action context associated with the action. For example, a user intent to perform a car quote action may be determined based upon the car entity (e.g., the car entity definition and/or contextual information about the car entity provided by the social network application, such as a model name and/or model year) and/or the car quote action (e.g., the car quote definition and/or contextual information about the car quote action provided by the social network application, such as a dealer location, car build options, car trade-in information, etc.). One or more target application (e.g., a car trader application) capable of performing the action on the entity may be presented (e.g., through an operating system user interface, such as a share charm).

Responsive to a selection of the target application, the entity context (e.g., the model name and/or model year) and/or the action context (e.g., dealer location, car build options, car trade-in information, etc.) may be passed to the target application so that the target application in launched according to the entity context and/or the action context to facilitate completion of the task. In an example, the car trader application may be opened in a contextually aware state (e.g., a car quote form) that may comprise at least some information extracted from the entity context and/or the action context (e.g., as opposed to merely opening into a non-contextual home screen). In this way, a user may efficiently perform the car quote action through the car trader application with relatively less user input, searching, trial and error, and/or input of redundant information, for example.

In some embodiments of registering a target application for contextually aware task execution, a registration request to establish a data contract with a target application may be received. The registration request may comprise an entity and/or an action supported by the target application. For example, a car enthusiast application may request to establish a data contract between the car enthusiast application and a task execution component, such as an operating system user interface (e.g., a share charm), based upon the car enthusiast application supporting a car entity, a car quote action, and/or other entities and/or actions. In this way, the data contract may be generated with the target application. The data contract may specify that the target application is capable of performing the action on the entity.

An entity definition for the entity may be maintained. The entity definition may comprise one or more entity parameters defining the entity. An entity parameter may specify that the action is capable of being performed on the entity. For example, a car entity definition may comprise a first entity parameter for car model information, a second entity parameter for model year information, a third entity parameter specifying that the car quote action can be performed on the car entity, and/or other entity parameters. An action definition for an action may be maintained. The action definition may comprise one or more action parameters defining the action. An action parameter may specify information used to perform the action. For example, a car quote action definition may comprise a first action parameter for a dealer location information, a second action parameter for car building options information, and/or other action parameters. In this way, the car entity definition and/or the car quote action definition may be used to facilitate performance of a task by a target application based upon contextual information extracted from a current application.

DETAILED DESCRIPTION

An embodiment of facilitating task completion through inter-application communication is illustrated by an exemplary method100inFIG. 1. At102, the method starts. In an example, a user may be interacting with a current application (e.g., a social network application, an email application, a web browser displaying a website, a mapping application, a video game, a locally installed application, a cloud application, etc.). The current application may display content comprising one or more entities. For example, a social network application may display a social network post by a user referencing a particular restaurant, such as Mexican Cantina, that the user enjoyed. In an example, a restaurant entity may be dynamically identified from the content (e.g., the content may be parsed to identify an entity candidate, which may be matched to an entity definition comprising one or more entity parameters defining the entity, such as a restaurant name, a location, a price range, and one or more actions that may be performed on the restaurant entity, such as a reserve table action, a view menu action, etc.). In another example, the restaurant entity may be predefined by the social network application. In this way, an entity comprised within content of a current application may be identified, at104.

At106, one or more actions capable of being performed on the entity may be exposed. In an example, a restaurant entity definition may specify one or more actions that may be performed on the restaurant entity, such as the reserve table action. A reserve table action definition may comprise one or more action parameters specifying information used to perform the reserve table action, such as a number of seats, a time, a restaurant name, etc. In this way, an action may be dynamically identified based upon the entity, and may be presented. In another example, the action may be embedded within the current application (e.g., a developer of the current application may embed functionality within the current application that may present the action responsive to a user selecting the entity).

At108, responsive to a selection of an action (e.g., the reserve table action), a user intent to accomplish a task (e.g., reserve a table at the Mexican Cantina) may be determined based upon an entity context associated with the entity and/or an action context associated with the action. For example, the entity context may comprise values for one or more entity parameters specified within the restaurant entity definition, such as Mexican Cantina as the restaurant name and Downtown as the location. A value for an entity parameter may be extracted from the content of the current application and/or may be extracted from the entity definition. The action context may comprise values for one or more action parameters specified within the reserve table action definition, such as Mexican Cantina as the restaurant name and 8:00 as the time.

One or more target applications capable of performing the action on the entity may be identified. For example, a food expert application may have a data contract with a task execution component. The data contract may specify that the food expert application supports the restaurant entity and/or the reserve table action. In this way, one or more target applications capable of performing the action on the entity may be presented, at110. In an example, a target application may be presented through the current application. In another example, the target application may be presented through an operating system user interface (e.g., a share charm), which may be displayed relative to the current application (e.g., side-by-side, overlaid, etc.).

Responsive to a selection of a target application (e.g., the food expert application), the entity context and/or the action context may be passed to the target application so that the target application may be launched according to the entity context and/or the action context to facilitate completion of the task, at112. The target application may comprise a web browser displaying a website, a locally install application, a cloud application or service, and/or a marketplace application available for download and/or install (e.g., the user may be prompted to obtain the marketplace application from an application marketplace). For example, the food expert application, which may be locally installed, may be opened into a contextually relevant state that may comprise at least some information associated with the entity context and/or the action context (e.g., the food expert application may be opened to a table reservation form populated with values from one or more entity parameters and/or one or more action parameters). In an example of passing contextual information to the target application, an operating system communication model may be used to pass the entity context and/or the action context to the target application. In an example, the target application may be launched in an immersive view state (e.g., a substantially full screen state). In another example, the target application may be launched side-by-side with the current application. In another example, the target application may be launched within an overlay interface (e.g., an operating system user interface, such as a charm, used to display applications) that may be displayed side-by-side with the current application. In this way, a user may efficiently complete the task without undue searching for appropriate functionality and/or manual input of redundant information. Once launched, various commands may be performed, such as a back command that may transition display of the target application to the current application and/or to a task interface comprising the one or more target applications that may be selected for task completion.

In an example, an entity action log may be maintained (e.g., a database, a log file, an interactive user interface, etc.). The entity action log may comprise one or more entries comprising information related to task completion, such as usage patterns for actions, engagement patterns for actions, a number of times an action is launched, a number of times an application is launched, etc. An option may be provided for a user opt-in or opt-out to have any such information, activity, actions, etc. logged. An entry may, for example, specify that the action was performed on the entity by the target application. The entity action log may be exposed to a third party application (e.g., a developer of a travel application). A data contract between a task completion component and the third party application may be generated (e.g., the developer may send a registration request indicating a desire to generate the data contract). The data contract may specify that the third party application supports performance of the action on the entity. In this way, a third party application may register as a target application for contextually aware task execution. At114, the method ends.

FIG. 2illustrates an example of a system200configured for maintaining an entity definition for an entity, an action definition for an action, and/or a data contract associated with a target application. The system200may comprise a definition component202and/or a contract component208. The definition component202may be configured to generate an entity definition for an entity. For example, the definition component202may maintain a restaurant entity definition204for a restaurant entity. The restaurant entity definition204may comprise one or more entity parameters defining the entity and/or specifying actions that may be performed on the entity. For example, a restaurant name parameter, a restaurant location parameter, a restaurant type parameter, and/or other entity parameters may be specified within the restaurant entity definition204. In an example, an instance of a restaurant entity, such as a Mexican Cantina entity, may be defined based upon populating the restaurant entity definition with values for one or more of the entity parameters (e.g., Mexican Cantina as the restaurant name, Downtown as the restaurant location, etc.). One or more supported actions, such as a reserve table action, a read reviews action, a view menu action, and/or other actions that may be performed on the restaurant entity, may be specified within the restaurant entity definition204. The restaurant entity definition204may be used to generate an entity context for the restaurant entity in order to facilitate task completion (e.g., the entity context may comprise at least some information specified within the restaurant entity definition204, which may be passed to a target application so that the target application may be launched into a contextually relevant state for task completion).

The definition component202may be configured to generate an action definition for an action. For example, the definition component202may maintain a reserve table action definition206for the reserve table action. The reserve table action definition206may comprise one or more action parameters defining the action and/or specifying information used to perform the action. For example, the reserve table action definition206may comprise a restaurant name parameter, a restaurant location parameter, a phone number parameter, a reservation time parameter, a party size parameter, and/or other action parameters used to perform the reserve table action. The reserve table action definition206may be used to generate an action context for the reserve table action in order to facilitate task completion (e.g., the action context may comprise at least some information specified within the reserve table action definition206, which may be passed to a target application so that the target application may be launched into a contextually relevant state for task completion).

The contract component208may be configured to maintain one or more data contracts between a task execution component (e.g., configured to facilitate completion of a task through inter-application communication) and one or more third party applications. For example, the contract component208may generate a data contract210for a travel application. The data contract210may specify that the travel application supports one or more entities (e.g., a restaurant entity, a car rental entity, a hotel entity, etc.) and/or one or more actions (e.g., a reserve table action, a reserve car action, a hotel comparison action, etc.). In this way, the travel application210may be identified as a target application capable of performing an action on an entity in order to facilitate task completion.

FIG. 3Aillustrates an example of a system300configured for facilitating task completion through inter-application communication. The system300may comprise a task execution component308(e.g., a programming module, a web service, application functionality, and/or an operating system user interface, such as a share charm, for example). The task execution component308may be associated with a current application, such as a mapping application302. The mapping application302may provide content to a user (e.g., a local map illustrating a Mexican Cantina304and a Book Store within Downtown). The task execution component308may be configured to identify an entity, such as a Mexican Cantina entity, comprised within the content of the mapping application302. For example, the task execution component308may use contextual information306associated with the content of the mapping application302in order to identify a restaurant entity definition within an entity definition repository312that may be used to define the Mexican Cantina entity. The task execution component308may expose one or more actions capable of being performed on the Mexican Cantina entity. For example, the task execution component308may present318a view menu action322and/or a reserve table action328through a task interface320. In an example, an action may be embedded into the mapping application302(e.g., predefined by a developer). In another example, an action may be dynamically identified based upon an action definition within an action definition repository314(e.g., a view menu action definition, a reserve table action definition, etc.).

The task execution component308may be configured to identify a selection of an action. In an example, a user may select the view menu action322. The task execution component308may be configured to determine a user intent310to accomplish a task based upon an entity context associated with the entity and/or an action context associated with the action. For example, the user intent310may indicate that the user desires to view a menu for the Mexican Cantina304based upon the entity context (e.g., contextual information associated with the Mexican Cantina entity, which may have been derived from the contextual information306associated with the content of the mapping application302and/or derived from the restaurant entity definition from the entity definition repository312) and/or the action context (e.g., contextual information associated with the view menu action, which may have been derived from the contextual information306associated with the content of the mapping application302and/or derived from the view menu action definition from the action definition repository314). One or more target applications, such as a menus r us application324and/or a food expert application326, capable of performing the action on the entity may be presented (e.g., present318through the task interface320, such as a user interface within the mapping application302or an external user interface, such as an operating system user interface). For example, the menus r us application324and/or the food expert application326may have data contracts within a data contract repository316, which may specify that such applications support the Mexican Cantina entity and/or the view menu action324. In another example where the reserve table action328is selected, a travel application330may be presented through the task interface320based upon a data contract between the travel application330and the task execution component308indicating that the Mexican Cantina entity and the reserve table action328are supported by the travel application330. In this way, a user may select a target application, which may be launched in a contextually relevant state for task completion (e.g., as illustrated inFIG. 3B).

FIG. 3Billustrates an example of a system340configured for facilitating task completion through inter-application communication. It may be appreciated that in an example, the system340corresponds to the system300ofFIG. 3A. For example, the system340may comprise a task execution component370. The task execution component370may be associated with a current application, such as a mapping application (e.g.,302ofFIG. 3A). Based upon an entity, such as a Mexican Cantina entity, occurring within content of the mapping application, a task interface (e.g.,320ofFIG. 3A) comprising one or more actions that may be performed on the Mexican Cantina entity and/or one or more applications capable of performing an action on the Mexican Cantina entity may have been presented.

The task execution component370may be configured to receive a selection342of an application, such as a travel application330associated with a reserve table action (e.g.,328ofFIG. 3A) for the Mexican Cantina entity (e.g., a user may have selected the travel application330within the task interface320ofFIG. 3A). The task execution component370may identify a reserve table action context344based upon contextual information (e.g.,306ofFIG. 3A) from the mapping application (e.g.,302ofFIG. 3A) and/or from a reserve table action definition comprising one or more action parameters corresponding to information used to perform the reserve table action (e.g.,328ofFIG. 3A). The reservation table action content344may comprise information used to perform the reserve table action, such as a restaurant name, a restaurant location, a party size, etc. The task execution component370may identify a restaurant entity context346defining the Mexican Cantina entity based upon contextual information (e.g.,306ofFIG. 3A) from the mapping application (e.g.,302ofFIG. 3A) and/or from a restaurant entity definition comprising one or more entity parameters corresponding to information describing the Mexican Cantina entity.

The task execution component370may pass348(e.g., utilizing an operating system communication model) the reserve table action context344and/or the restaurant entity context346to the travel application330so that the travel application330may be launched according to the reserve table action context344and/or the restaurant entity context346. For example, the travel application330may be opened into a table reservation form, which may be populated with at least some information from the reserve table action context344and/or the restaurant entity context346, such as Mexican Cantina as a restaurant name352, Downtown as a restaurant location354, and/or 555-555-5555 as a phone number356. In an example, the travel application330may be launched in an immersive view state (e.g., full screen, etc.). In another example, the travel application330may be launched within an overlay interface (e.g., an operating system user interface, such as a share charm) displayed side-by-side with the current application. In this way, the user may efficiently reserve a table at the Mexican Cantina without undue searching for appropriate functionality and/or manual input of redundant information, for example.

In an example, the system340may comprise an analysis component358. The analysis component358may be configured to maintain an entity action log360. The analysis component358may generate an entry within the entity action log360based upon the launch of the travel application330. For example, the entry may specify that the action was performed on the entity by the target application in order to complete the task (e.g., the travel application330performed the reserve table action on the Mexican Cantina entity). The entity action log360may comprise a variety of information and/or metrics, such as a number of times an action is selected, a number of times an application is launched to perform the action, etc. The entity action log360may be exposed to a third party application (e.g., a developer of the third party application), which may register with the task execution component370to create a data contract that may allow the third party application to be used as a target application for contextually aware task completion.

FIG. 4Aillustrates an example of a system400configured for facilitating task completion through inter-application communication. The system400may comprise a task execution component408(e.g., a programming module, web service, application functionality, and/or an operating system user interface, such as a share charm). The task execution component408may be associated with a current application, such as a social network application402. The social network application402may present content to a user (e.g., a social network post by a user about a Sports Car Model (X) for 2013). The task execution component408may be configured to identify an entity, such as a Sports Car Model (X) entity, comprised within the content of the social network application402. For example, the task execution component408may use contextual information406associated with the content of the social network application402in order to identify a car entity definition within an entity definition repository412that may be used to define the Sports Car Model (X) entity. The task execution component408may expose one or more actions capable of being performed on the Sports Car Model (X) entity. For example, the task execution component408may present418a car quote action422and/or a build car action428through a task interface420. In an example, an action may be embedded into the social network application402(e.g., predefined by a developer). In another example, an action may be dynamically identified based upon an action definition within an action definition repository414(e.g., a car quote action definition, a build car action definition, etc.).

The task execution component408may be configured to identify a selection of an action. In an example, a user may select the car quote action422. The task execution component408may be configured to determine a user intent410to accomplish a task based upon an entity context associated with the entity and/or an action context associated with the action. For example, the user intent410may indicate that the user desires obtain a car quote for the Sports Car Model (X) entity based upon the entity context (e.g., contextual information associated with the Sports Car Model (X) entity, which may have been derived from the contextual information406associated with the content of the social network application402and/or derived from the car entity definition from the entity definition repository412) and/or the action context (e.g., contextual information associated with the car quote action422, which may have been derived from the contextual information406associated with the content of the social network application402and/or derived from the car quote action definition from the action definition repository414). One or more target applications, such as a car trader application424and/or a auto dealer application426, capable of performing the action on the entity may be presented (e.g., present418through the task interface420, such as a user interface within the social network application402or an external user interface, such as an operating system user interface). For example, the car trader application424and/or the auto dealer application426may have data contracts within a data contract repository416, which may specify that such applications support the Sports Car Model (X) entity and/or the car quote action422. In another example where the build car action428is selected, a car manufacturer application430may be presented through the task interface420based upon a data contract between the car manufacturer application430and the task execution component408indicating that the Sports Car Model (X) entity and the build car action428are supported by the car manufacturer application430. In this way, a user may select a target application, which may be launched in a contextually relevant state for task completion (e.g., as illustrated inFIG. 4B).

FIG. 4Billustrates an example of a system440configured for facilitating task completion through inter-application communication. It may be appreciated that in an example, the system440corresponds to the system400ofFIG. 4A. For example, the system440may comprise a task execution component470. The task execution component470may be associated with a current application, such as a social network application (e.g.,402ofFIG. 4A). Based upon an entity, such as a Sports Car Model (X) entity, occurring within content of the social network application (e.g.,402ofFIG. 4A), a task interface (e.g.,420ofFIG. 4A) comprising one or more actions that may be performed on the Sports Car Model (X) entity and/or one or more applications capable of performing an action on the Sports Car Model (X) entity, may have been presented.

The task execution component470may be configured to receive a selection442of an application, such as an auto dealer application426associated with a car quote action (e.g.,422ofFIG. 4A) for the Sports Car Model (X) entity (e.g., a user may have selected the auto dealer application426within the task interface420ofFIG. 4A). The task execution component470may identify a car quote action context444based upon contextual information (e.g.,406ofFIG. 4A) from the social network application (e.g.,402ofFIG. 4A) and/or from a car quote action definition comprising one or more action parameters corresponding to information used to perform the car quote action (e.g.,422ofFIG. 4A). The car quote action content444may comprise information used to perform the car quote action, such as a car model, a model year, a location, trade-in information, car options, etc. The task execution component470may identify a car entity context446defining the Sports Car Model (X) entity based upon contextual information (e.g.,406ofFIG. 4A) from the social network application (e.g.,402ofFIG. 4A) and/or from a car entity definition comprising one or more entity parameters corresponding to information describing the Sports Car Model (X) entity.

The task execution component470may pass448(e.g., utilizing an operating system communication model) the car quote action context444and/or the car entity context446to the auto dealer application426so that the auto dealer application426may be launched according to the car quote action context444and/or the car entity context446. For example, the auto dealer application426may be opened into a car quote form, which may be populated with at least some information from the car quote action context444and/or the car entity context446, such as Sports Car Model (X) as a car model452, 2013 as a model year454, and/or a current user location as a location456(e.g., supplemental data associated with a user device hosting the auto dealer application, such as a current (e.g., GPS) location of the user device, may be used as a value to populate the car quote form). In an example, the auto dealer application426may be launched in an immersive view state (e.g., full screen, etc.). In another example, the auto dealer application426may be launched within an overlay interface (e.g., an operating system user interface, such as a share charm) displayed side-by-side with the current application. In this way, the user may efficiently obtain a car quote for the Sports Car Model (X) without undue searching for appropriate functionality and/or manual input of redundant information, for example.

In an example, the system440may comprise an analysis component458. The analysis component458may be configured to maintain an entity action log460. The analysis component458may generate an entry within the entity action log460based upon the launch of the auto dealer application426. For example, the entry may specify that the action was performed on the entity by the target application in order to complete the task (e.g., the auto dealer application426performed the car quote action for the Sports Car Model (X) entity). The entity action log460may comprise a variety of information and/or metrics, such as a number of times an action is selected, a number of times an application is launched to perform the action, etc. The entity action log460may be exposed to a third party application (e.g., a developer of the third party application), which may register with the task execution component470to create a data contract that may allow the third party application to be used as a target application for contextually aware task completion.

An embodiment of registering a target application for contextually aware task execution is illustrated by an exemplary method500inFIG. 5. At502, the method starts. At504, a registration request to establish a data contract with a target application may be received (e.g., a data contract between the target application and a task execution component that is configured to launch target applications into contextually relevant states in order to facilitate task completion). The registration request may comprise an entity and/or an action supported by the target application (e.g., an action that may be performed on the entity by a dining application). At506, the data contract with the target application is generated. The data contract may specify that the target application is capable of performing the action on the entity.

At508, an entity definition for the entity may be maintained. The entity definition may comprise one or more entity parameters defining the entity (e.g., a restaurant entity definition may comprise a restaurant name parameter, a location parameter, a price rating parameter, etc.). For example, an entity parameter may specify that an action is capable of being performed on the entity (e.g., a reserve table action may be performed on a restaurant entity). At510, an action definition for the action may be maintained. The action definition may comprise one or more action parameters defining the action. For example, an action parameter may specify information used to perform the action (e.g., a restaurant location for the table reservation action). In this way, the data contract, the entity definition, and/or the action definition may be used to identify the entity, the action that may be performed on the entity, and/or the target application capable of performing the action on the entity.

In an example, the entity, such as the restaurant entity, may be identified within content of a current application, such as a mapping application. Values for at least one entity parameter within the entity definition may be specified based upon contextual information of the entity derived from the current application to generate an entity context. For example, Mexican Cantina (e.g., extracted from the content of the mapping application) may be specified as a value for a restaurant name entity parameter within the restaurant entity definition. The action, such as the reserve table action, capable of being performed on the entity may be exposed. Responsive to selection of the action, values for at least one action parameter within the action definition may be specified based upon contextual information derived from the current application to generate an action context. For example, Downtown (e.g., derived from a current location displayed within the mapping application) may be specified as a value for a location action parameter within the reserve table action definition. The target application, such as the dinning application, capable of performing the action on the entity may be presented. Responsive to selection of the target application, the entity context and/or the action context may be passed to the target application so that the target application may be launched according to the entity context and/or the action context to complete a task (e.g., the dinning application may be launched into a contextually relevant reservation form). At512, the method ends. It may be appreciated that variations to the disclosed subject matter are envisioned. For example,508and/or510orFIG. 5may be optional in some embodiments.

Still another embodiment involves a computer-readable medium comprising processor-executable instructions configured to implement one or more of the techniques presented herein. An exemplary computer-readable medium that may be devised in these ways is illustrated inFIG. 6, wherein the implementation600comprises a computer-readable medium616(e.g., a CD-R, DVD-R, or a platter of a hard disk drive), on which is encoded computer-readable data614. This computer-readable data614in turn comprises a set of computer instructions612configured to operate according to one or more of the principles set forth herein. In one such embodiment600, the processor-executable computer instructions612may be configured to perform a method610, such as at least some of the exemplary method100ofFIG. 1and/or at least some of the exemplary method500ofFIG. 5, for example. In another such embodiment, the processor-executable instructions612may be configured to implement a system, such as at least some of the exemplary system200ofFIG. 2, at least some of the exemplary system300ofFIG. 3A, at least some of the exemplary system340ofFIG. 3B, at least some of the exemplary system400ofFIG. 4A, and/or at least some of the exemplary system440ofFIG. 4B, for example. Many such computer-readable media may be devised by those of ordinary skill in the art that are configured to operate in accordance with the techniques presented herein.

FIG. 7illustrates an example of a system710comprising a computing device712configured to implement one or more embodiments provided herein. In one configuration, computing device712includes at least one processing unit716and memory718. Depending on the exact configuration and type of computing device, memory718may be volatile (such as RAM, for example), non-volatile (such as ROM, flash memory, etc., for example) or some combination of the two. This configuration is illustrated inFIG. 7by dashed line714.

In other embodiments, device712may include additional features and/or functionality. For example, device712may also include additional storage (e.g., removable and/or non-removable) including, but not limited to, magnetic storage, optical storage, and the like. Such additional storage is illustrated inFIG. 7by storage720. In an embodiment, computer readable instructions to implement one or more embodiments provided herein may be in storage720. Storage720may also store other computer readable instructions to implement an operating system, an application program, and the like. Computer readable instructions may be loaded in memory718for execution by processing unit716, for example.

Device712may also include communication connection(s)726that allows device712to communicate with other devices. Communication connection(s)726may include, but is not limited to, a modem, a Network Interface Card (NIC), an integrated network interface, a radio frequency transmitter/receiver, an infrared port, a USB connection, or other interfaces for connecting computing device712to other computing devices. Communication connection(s)726may include a wired connection or a wireless connection. Communication connection(s)726may transmit and/or receive communication media.

Device712may include input device(s)724such as keyboard, mouse, pen, voice input device, touch input device, infrared cameras, video input devices, and/or any other input device. Output device(s)722such as one or more displays, speakers, printers, and/or any other output device may also be included in device712. Input device(s)724and output device(s)722may be connected to device712via a wired connection, wireless connection, or any combination thereof. In an embodiment, an input device or an output device from another computing device may be used as input device(s)724or output device(s)722for computing device712.

Components of computing device712may be connected by various interconnects, such as a bus. Such interconnects may include a Peripheral Component Interconnect (PCI), such as PCI Express, a Universal Serial Bus (USB), firewire (IEEE 1394), an optical bus structure, and the like. In another embodiment, components of computing device712may be interconnected by a network. For example, memory718may be comprised of multiple physical memory units located in different physical locations interconnected by a network.

Those skilled in the art will realize that storage devices utilized to store computer readable instructions may be distributed across a network. For example, a computing device730accessible via a network728may store computer readable instructions to implement one or more embodiments provided herein. Computing device712may access computing device730and download a part or all of the computer readable instructions for execution. Alternatively, computing device712may download pieces of the computer readable instructions, as needed, or some instructions may be executed at computing device712and some at computing device730.