Source: http://www.google.com/patents/US7603381?dq=6,424,354
Timestamp: 2015-02-28 17:57:44
Document Index: 398691969

Matched Legal Cases: ['art 1400', 'art 1400', 'art 1400', 'art 1400', 'art 1400', 'Application No. 200510089361', 'Application No. 05', 'Application No. 05105042']

Patent US7603381 - Contextual action publishing - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inAdvanced Patent SearchPatentsA computing system for the publication of actions associated with the current context of an entity, such as a business object is provided. The computing system has a component that stores entities, a component that stores the actions associated with the entities, and a software component that provides...http://www.google.com/patents/US7603381?utm_source=gb-gplus-sharePatent US7603381 - Contextual action publishingAdvanced Patent SearchPublication numberUS7603381 B2Publication typeGrantApplication numberUS 10/955,945Publication dateOct 13, 2009Filing dateSep 30, 2004Priority dateSep 30, 2004Fee statusPaidAlso published asCN1755683A, CN1755683B, EP1643424A2, EP1643424A3, US20060069666Publication number10955945, 955945, US 7603381 B2, US 7603381B2, US-B2-7603381, US7603381 B2, US7603381B2InventorsJonah Sarbin Burke, Howard Morrison Crow, III, Targo TennisbergOriginal AssigneeMicrosoft CorporationExport CitationBiBTeX, EndNote, RefManPatent Citations (20), Non-Patent Citations (4), Referenced by (3), Classifications (33), Legal Events (3) External Links: USPTO, USPTO Assignment, EspacenetContextual action publishing
Different actions may be associated with a business object in different contexts. For example, the role of a user who is using a business object affects what actions the user may perform on the business object. For a business object such as �customer,� if the user of the �customer� business object is an administrator, the actions associated with the �customer� business object may include �Edit actions,� and/or �Add actions.� These two actions give the administrator the ability to modify existing actions associated with a business object and to associate new actions with the business object. On the other hand, if a user of the �customer� business object is someone other than the administrator, the user may not be able to edit or add actions associated with the �customer� business object. Since different actions may be associated with a business object in different contexts, it is desirable to be able to inform users about the actions associated with the business object in the current context. This amounts to contextual publication of actions associated with a business object.
In accordance with another aspect of the invention, the software component may further include multiple context resolvers. Each of the context resolvers corresponds to a context. A context resolver translates a context into a keyword that identifies the context. Upon receiving a request for actions associated with an entity in a certain context or contexts, the action provider module passes the context information to the multiple context resolvers, which return a set of keywords corresponding to the contexts. The action provider module constructs a query including the keywords and sends the query to the action metadata store. The action metadata store annotates the actions with one or more keywords. Preferably, each action has a field called CombinationMode. If the CombinationMode field of an action is set to be �ALL,� the action will be returned upon a receipt of query that includes all of the keywords annotating the action. If the CombinationMode field is set to be �ANY,� the action will be retrieved upon receipt of a query that includes at least one of the keywords annotating the action.
The present invention will primarily be described in the context of a single computing system. However, aspects of the present invention can also be implemented in a distributed computing environment. For example, business objects and their associated actions may be stored separately and remotely in different database servers. Client applications using the business objects and their associated actions may run on different client systems, separated from the system that runs the software component that provides information about the current context of the business object and the actions associated with the business object in this context. Further, although the present invention will primarily be described in connection with the managing and accessing actions associated with business objects, those skilled in the relevant art and others will appreciate that the present invention is also applicable to other data objects, such as programming objects, user interface objects, etc. For this reason, hereinafter the term �entity� is used in lieu of �business object.�
The computing system 200 further contains a software component 214. The software component 214 informs a client application 120 using an entity about what actions are associated with the entity in its current context. In the present invention, a context is a piece of information that captures data about the environment in which an entity is used. An entity may have one or more contexts. For example, an entity may have a context for capturing information about the client application 120. The entity may also have a context that captures information about the role of the user that is using the entity. The entity may further have a context that captures information about the entity itself. For example, a �customer� entity may simultaneously have three contexts: an entity context that captures the information about the �customer� entity itself, providing information such as customer ID; a role context that provides the identity of the user; and an application context that identifies the client application 120 that is using the entity.
As illustrated by FIG. 5, the software component 214 further contains an action framework 500. In the exemplary embodiment of the invention described herein, actions are metadata objects that encapsulate information about a certain activity and how the activity should be presented to the user. Such an activity can be, for example, creating a �customer� entity in a data management system, such as SAP. An action metadata object usually stores two main pieces of data. One is a display method that presents the action to a user. This display method can return a string such as �added in SAP� or do something more elaborate such as constructing a complex hyperlink. The other piece of data contained by an action is an execution method that actually performs the action. For example, the execution method can set up a new customer for a �customer� entity.
Certain actions are retrieved when a user of the entity is in several contexts at once. For example, a user of the �customer� entity who acts as an administrator may be simultaneously in both the �customer� entity context and the �administrator� role context. Thus, the GetActions( ) method may query the action metadata store 210 to retrieve actions that are annotated with both the �customer� keyword and the �administrator� keyword. In embodiments of the invention, an action would be returned only if it is annotated by both the �customer� keyword and the �administrator� keyword, and not by any other keywords. On the other hand, certain actions are retrieved if they are associated with one of the installed contexts. For example, a client application 120 may request actions associated with the �customer� entity context. Thus, the GetActions method queries the action metadata store 210 to retrieve actions that are annotated with the �customer� keyword. An action may be returned as long as it is annotated with the �customer� keyword, though it may be annotated by other keywords. In the illustrated exemplary embodiment of the present invention, to determine whether an action to be retrieved should be associated with one context or multiple contexts, the action metadata store 210 has a CombinationMode field. If this field is set to ALL, this action is only returned upon a query if the keywords annotating this action include all the keywords in the query sent by the GetActions( ) method. If the CombinationMode field is set to be ANY, an action is retrieved if it is annotated with at least one of the keywords in the query sent by the GetActions( ) method.
In the illustrated exemplary embodiment of the present invention, the query done by the GetActions( ) method is done in two phases. First, the method gets all actions whose CombinationMode is set to �ALL� and for which the keywords in the query provided by the GetActions( ) method are all the keywords annotating the action. Secondly, the GetActions( ) method gets all actions whose CombinationMode is set to �ANY� and for which the keywords in the query provided by the GetActions( ) method have at least one of the keywords annotating the action. The GetActions( ) method then combines the results of the two phases and returns the resultant list of actions.
The action framework 500 also contains an Action class 504. In embodiments of the present invention, the Action class 504 is the managed code representation of the action metadata. The Action class 504 contains a GetDisplayMethod( ). This method returns the method that displays the action. This method is expected to return a string, such as �Edit Customer in SAP,� or do something more elaborate, such as constructing a hyperlink. The Action class 504 also contains a GetExecuteMethod( ), which returns the method for actually performing the action. If the GetDisplayMethod( ) returns a hyperlink, the action might not have an execution method at all; in this case, GetExecuteMethod( ) returns null. The Action class 504 may also contain a GetActionTemplate( ), which returns the action template of the action.
FIG. 6B illustrates one exemplary implementation of the process 604 for providing installed contexts associated with an entity. The process 604 first tries to obtain information about the installed contexts associated with the entity. See block 606. In one embodiment of the invention, the process 604 opens a configuration file that contains information about the installed contexts. For example, if the installed contexts are the entity context and the role context, this configuration file would contain class information for the entity context and the role context. The process 604 then walks through the list of installed contexts in the configuration and creates object instances of these installed contexts. See block 608. For example, the process 604 may call EntityContext.Create( ) and RoleContext.Create( ) to create an EntityContext object instance and a RoleContext object instance. The EntityContext class may parse the URL it receives and find that it is supposed to create an instance of a �customer� class, with a customer ID of 255. The EntityContext class calls Class.GetClass (�customer�) to get a handle to the customer class. The EntityContext class then calls the Class.Instantiate(255) to create the correct �customer� object instance. The EntityContext class then returns the EntityContext object instance. Meanwhile, the RoleContext class checks the current user's identity and finds that the user is an administrator. The RoleContext class stores the role (administrator) information and retains a RoleContext object instance. The process 604 then creates a ContextHash object and puts the created object instance of installed contexts into this ContextHash object. See block 610. For example, the process 604 can put the EntityContext and RoleContext object instances created above into the ContextHash object. The process 604 then returns the resultant ContextHash object. See block 612.
FIG. 6C illustrates one exemplary implementation of the process 622 for retrieving actions associated with the entity in the installed context. The process 622 walks through the ContextHash object created by process 604 and calls the proper context resolver 220 for each of the installed contexts. See block 624. For example, the process 622 may get back an EntityContextResolver and a RoleContextResolver, if the EntityContext and the RoleContext object instances are what the ContextHash object contains. The context resolvers 220 return keywords reflecting these installed contexts. See block 626. For example, an EntityContextResolver returns a keyword �customer� if the entity is a �customer.� A RoleContextResolver returns a keyword �administrator� if the role of the user is an administrator. The process 622 then constructs a query containing these keywords against the action metadata store 210 to retrieve actions that are annotated with these keywords. See block 628. For example, the process 622 may construct a query containing the keywords �customer� and �administrator.� The process 622 then retrieves a list of actions and returns it from the action metadata store 210. See block 630.
As shown in FIG. 7, in the illustrated exemplary embodiment of the invention, the user interface 700 identifies the actions 702, if any, associated with an entity. The user interface 700 further identifies the action name 704. For example, FIG. 7 illustrates three actions 702 associated with a customer entity: an �edit customer� action 708, a �new customer� action 710, and a �view profile� action 712. The user interface 700 also identifies the action type of each action. The action type of an action indicates what will happen if the action is selected. For example, in FIG. 7, the user interface 700 displays the action type 706 associated with each of these three actions: go to a Web page 714, go to a Web page (advanced) 716, and execute a customer action 718, respectively. The user interface 700 illustrated by FIG. 7 also indicates which one of the actions displayed is a default action 720. For example, FIG. 7 shows that the default action for the �customer� entity is the �edit customer� action 708.
As illustrated by FIG. 7, in the user interface 700, an administrator may edit an action by clicking on the action name 704. An administrator may also add an action by clicking on the �add action� link 722. An administrator may also manage the actions Menu associated with this entity by clicking on the �manage actions Menu� link 724.
FIGS. 8A-10 are a continuation of the user interface 700 illustrated in FIG. 7. More specifically, FIGS. 8A-8C illustrate how the user interface 700 allows an administrator to add actions of different action types to a �customer� entity. For example, FIG. 8A illustrates how an administrator may add an action of action type �go to a Web page� 714. In one embodiment of the invention, actions of the type �go to a Web page� simply take a user to a URL, optionally passing entity data as query string parameters or post data. These actions are suitable for Web pages with URLs such as http://abc/def/def.asp?valueid=100. The user interface 700 first requests the administrator to specify the name of the action 704. The user interface 700 then asks the administrator to specify the action type 706 of the action. For example, in FIG. 8A, the administrator selects that the action type 706 of the action 704 is �go to a Web page� 714. The administrator also specifies that this action is a default action 720 for the entity.
The user interface 700 further asks an administrator to specify the location 802 of the Web page that a user will be taken to when the user actuates this action. The user interface 700 also asks the administrator to specify the name 804 and the value 806 of each parameter being passed to the Web page. The user interface 700 permits the administrator to pass multiple parameters to the Web page by using the �add parameter� link 808. The user interface 700 also allows the administrator to specify whether to launch the Web page in a new browser window by selecting a �Yes� or �No� button (see 810). For example, in the user interface 700 illustrated by FIG. 8A, the administrator selects to launch the Web page in a new browser window.
The user interface 700 may further request the administrator to specify whether to request the Web page using the �Get� or the �Post� HTTP method (see 812). For example, in the user interface 700 illustrated in FIG. 8A, the administrator selects to use the �Get� HTTP method to request the Web page. As those skilled in the relevant art and others will know, the �Get� HTTP method retrieves HTML documents from a Web server. Information from a form using the �Get� HTTP method is appended to the end of the action URL being requested. In general, the �Get� HTTP method should probably be used when URL access will not change the state of a database, for example, by adding or deleting information. On the other hand, if the URL access will cause a change in the database of the Web server, the �Post� HTTP method should be used. The �Post� HTTP method immediately transmits all input in the form off to the URL. The major advantage in using the �Post� HTTP method over the �Get� HTTP method is that the data is not open to prying eyes. Also, via the �Get� HTTP method, one can transfer only a limited amount of data, while the �Post� HTTP method exerts no such limitations.
FIG. 8B illustrates the user interface 700 when an administrator selects to add an action of the action type �go to a Web page (advanced) 716.� An action of this action type allows an administrator to insert parameters in the URL and to format them with the flexibility of Microsoft� .NET format strings. These actions work for Web pages like http://bugcheck/bugs/sps/100.asp. The user interface 700 illustrated by FIG. 8B is very similar to the user interface 700 for configuring an action of action type �go to a Web page 714� as illustrated in FIG. 8A. The major difference is that, after the administrator specifies a location 802 of the Web page, instead of specifying the name 804 and the value 806 of a parameter, as illustrated by FIG. 8A, the administrator specifies the format index 820 and value 822 for the format strings in the URL.
Embodiments of the invention may also allow custom actions provided by a third party. In some embodiments of the invention, custom actions execute code in a class that implements an interface such as IActionEventHandler. FIG. 8C illustrates the user interface 700 when the administrator chooses to add an action of the action type �execute a custom action 718.� The user interface 700 asks the administrator to input information for the action event handler 830 associated with this action. In some embodiments of the invention, the administrator may need to provide the fully qualified assembly name 832 and the class name 834 for the action event handler.
In some embodiments of the invention, the user interface 700 may also allow an administrator to specify the locale associated with the action when adding an action. For example, the administrator may specify to associate the locale of �English (United States)� with the action of �view customer profile.�
FIG. 9 illustrates one embodiment of the user interface 700 when an administrator clicks the name 704 of an action to edit the action, as indicated in FIG. 7. When editing an action, the administrator may change the name 704 of the action and/or the action type 706 of the action. The administrator may also specify whether this action is a default action 720. For example, in FIG. 9, the administrator modifies the action name 704 to be �edit new customer.� The administrator also specifies the action type 706 of the action to be �go to a Web page 714.� The administrator further specifies that this �edit new customer� action is to be the default action 720 when the �customer� entity associated with this action is actuated.
FIG. 10 illustrates the user interface 700 when an administrator actuates the �manage actions Menu� link 724 illustrated in FIG. 7. The manage actions Menu screen allows an administrator to control what actions show up in the actions Menu and in what order they appear. As illustrated in FIG. 10, an administrator may control what actions show up in the actions Menu by marking or clearing the display check box 1002 located next to the action. For example, in FIG. 10, the administrator selects to display all the three actions�edit customer, new customer, view profile�by marking all three display boxes located next to these actions. An administrator may also specify the order of these actions to be displayed in the actions Menu by selecting a number in the �position from top� box 1004. For example, in FIG. 10, the administrator selects to display the actions in the order of �edit customer,� �new customer,� and �view profile� by specifying their values in the �position from top� boxes 1004 to be 1, 2, and 3, respectively.
FIG. 11B illustrates one exemplary embodiment of the process 1108 for adding actions according to input. The process 1108 starts by defining the name of the action according to received input. See block 1120. The process 1108 then proceeds to check the action type of the action according to the received input. If the action type is of �go to a Web page� 714 (see decision block 1122), the process 1108 proceeds to specify the Web page URL and parameters according to received input. See block 1124. If the action type is of �go to a Web page (advanced)� 716 (see decision block 1126), the process 1108 proceeds to specify the Web page URL, parameters, and format strings according to received input. See block 1128. In the case that the action type is of �execute a custom action� 718 (see decision block 1130), the process 1108 proceeds to specify an assembly name and class name of an action event handler according to received input. See block 1132. The process 1108 then returns.
Embodiments of the invention may also represent the actions associated with an entity in an actions Web Part. The actions Web Part displays a list of actions associated with the entity in various styles. It can connect to other entity Web Parts via Web Part connections to show, for example, the actions for a �customer� entity selected in a connected entity list. A Web Part is a modular unit of information that has a single purpose and that forms the basic building block of a Web Part Page. Each instance of a specific Web Part may be similar or different in appearance and behavior, but it is based on the same Web Part assembly file installed on the Web site server. A Web Part Page is a special type of Web Page that consolidates data such as lists and charts, and Web content such as text and images, into a dynamic information portal built around a common task or special interest. Each Web Part Page contains one or more Web Part zones, which in turn contain one or more Web Parts.
FIG. 14 illustrates one exemplary embodiment of an actions Web Part 1400 displaying the actions associated with an entity. For example, the actions Web Part 1400 illustrated by FIG. 14 lists three actions associated with a �customer� entity: new customer 1402, edit customer 1404, and view profile 1406. The actions Web Part 1400 also provides an edit mode 1408 that allows a user to edit the properties of the actions Web Part.
In some embodiments of the invention, a user interface is provided to enable a user to edit the properties associated with the actions Web Part 1400. FIG. 15 illustrates one exemplary user interface 1500 that allows a user to modify the properties associated with an actions Web Part 1400. The user interface 1500 allows a user to define the type of the entity 1502. For example, as illustrated by FIG. 15, the current entity �customer� is of type SAP. A user may click on the icon 1504 to change the entity type.
The user interface 1500 also allows a user to specify the order in which the actions will be displayed. For example, in FIG. 15, the three actions associated with the �customer� entity are displayed in the order of: new customer 1402, edit customer 1404, and view profile 1406. The user interface 1500 provides the �move up� icon 1508 and the �move down� icon 1510 for a user to adjust the order of the actions.
The user interface 1500 also allows a user to specify the entity that the actions should be applied to. For example, the user interface 1500 illustrated by FIG. 15 gives a user the option to specify the entity as one of �supplied by a Web Part connection� 1514, �specified in the page URL� 1516, or �specified by the user� 1518. The option of specifying the entity by the user 1518 is further supplemented by the user selecting the �choose� icon 1520 to specify the entity that the actions should be applied to.
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS6106569 *Mar 11, 1998Aug 22, 2000International Business Machines CorporationMethod of developing a software system using object oriented technologyUS6442748 *Aug 31, 1999Aug 27, 2002Accenture LlpSystem, method and article of manufacture for a persistent state and persistent object separator in an information services patterns environmentUS6574636 *May 4, 1999Jun 3, 2003Accenture LlpMethod and article of manufacture for isolating data within a computer programUS6922695 *Sep 5, 2002Jul 26, 2005Initiate Systems, Inc.System and method for dynamically securing dynamic-multi-sourced persisted EJBSUS6978423 *Sep 27, 2001Dec 20, 2005International Business Machines CorporationContext based view design to support client side multi-threadingUS6985912 *Jul 22, 2003Jan 10, 2006Thought, Inc.Dynamic object-driven database manipulation and mapping system having a simple global interface and an optional multiple user need only caching system with disable and notify featuresUS6985922 *Dec 21, 2001Jan 10, 2006S.J. Bashen, Inc.Method, apparatus and system for processing compliance actions over a wide area networkUS7310653 *Mar 28, 2002Dec 18, 2007Siebel Systems, Inc.Method, system, and product for maintaining software objects during database upgradeUS20030028540 *Jan 31, 2001Feb 6, 2003Henrik LindbergWeb-based architectureUS20030088536 *Apr 9, 2001May 8, 2003Afshin BehniaPlatform within an organization for providing knowledge management and decision support servicesUS20040019586 *Jul 18, 2003Jan 29, 2004Harter Steven V.Property and object validation in a database systemUS20040122826 *Dec 20, 2002Jun 24, 2004Kevin MackieData model and applicationsUS20040177028 *Mar 17, 2004Sep 9, 2004American Management Systems, Inc.Distributed, object oriented global trade finance system with imbedded imaging and work flow and reference dataUS20040181539 *Feb 18, 2004Sep 16, 2004Microsoft CorporationShared business constituent modelUS20040249823 *Jun 4, 2003Dec 9, 2004Raghuvir Yuvaraj AthurSystem and method for object navigation grammar completionUS20050021557 *Dec 23, 2003Jan 27, 2005Rainer BrendleMeta model for an enterprise service architectureUS20050154744 *Jan 13, 2005Jul 14, 2005Morinville Paul V.Systems and methods for rule inheritanceUS20050182789 *Dec 13, 2004Aug 18, 2005Konnersman Paul M.Computer based system for supporting a work process in which some tasks require participation of multiple persons in differentiated rolesUS20060026178 *Aug 27, 2004Feb 2, 2006Wolf Werner GMethod and apparatus for adapting an email application program user interface to interface with a business management systemUS20060031237 *Jul 7, 2005Feb 9, 2006Deanna RobertSystem for development, management and operation of distributed clients and servers* Cited by examinerNon-Patent CitationsReference1Chinese Office Action dated Sep. 5, 2008 cited in Application No. 200510089361.9.2European Patent Communication dated Jan. 16, 2009 (Application No. 05 105 042.5-2221).3European Search Report dated Dec. 11, 2007 cited in Application No. 05105042.5-2221.4XP002456252, "Statement in Accordance with the Notice from the European Patent Office dated Oct. 1, 2007 concerning business methods," Official Journal of the European Patent Office, Nov. 2007, p. 592-593.Referenced byCiting PatentFiling datePublication dateApplicantTitleUS8832583Aug 31, 2012Sep 9, 2014Sap SeVisualizing entries in a calendar using the third dimensionUS20120311585 *Sep 30, 2011Dec 6, 2012Apple Inc.Organizing task items that represent tasks to performUS20140075390 *Sep 10, 2012Mar 13, 2014Sap AgDynamic chart control that triggers dynamic contextual actions* Cited by examinerClassifications U.S. Classification705/7.12, 705/7.11, 707/999.103, 705/28, 705/500, 717/116, 707/999.102, 707/999.107, 717/108, 707/999.101, 705/348, 717/165, 707/999.104International ClassificationG06F17/00Cooperative ClassificationG06Q10/10, G06Q10/0631, G06Q99/00, Y10S707/99945, G06Q10/063, G06Q10/087, Y10S707/99948, G06Q30/06, Y10S707/99942, Y10S707/99944, Y10S707/99943, G06Q10/067European ClassificationG06Q30/06, G06Q10/10, G06Q10/087, G06Q10/0631, G06Q99/00, G06Q10/063, G06Q10/067Legal EventsDateCodeEventDescriptionMar 18, 2013FPAYFee paymentYear of fee payment: 4Feb 1, 2011CCCertificate of correctionJan 7, 2005ASAssignmentOwner name: MICROSOFT CORPORATION, WASHINGTONFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BURKE, JONAH S.;CROW, III, HOWARD M.;TENNISBERG, TARGO;REEL/FRAME:015539/0648Effective date: 20050104RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services