Some embodiments relate to a service-oriented architecture associated with business objects. More specifically, some embodiments provide context dependent personalization of reuse components for user interface (e.g., to support life cycle extensions in connection with a service-oriented architecture).
An enterprise may store and access business information in a number of different ways. For example, an enterprise might store a substantial amount of information about products, sales, human resources, etc. in one or more database structures created by a business service provider (e.g., SAP AG® or SalesForce®). The enterprise might also generate various views of that information as needed (e.g., to create financial reports). In some cases, the enterprise might use pre-defined user interfaces to interact with the database structures. Often, however, an enterprise will want to personalize or customize these user interfaces based on the business needs of the enterprise. For example, an enterprise might change a sales order user interface by adding a “Sub Product Identifier” next to an existing “Product Identifier.”
In some cases, a user interface may be constructed with “reuse” components that are used for many different user interfaces. For example, a “Purchase Order” reuse component might be found on hundreds of different user interfaces. Note that the use of reuse components may be transparent to a user who personalizes and/or changes his or her screen display. That is, the reuse nature of such components might not be visible to the user and personalization of the components may be applied only to the context in which the personalization was done (and not on the reuse component itself). For example, if a user changes a Purchase Order component on one user interface, it may not be changed on other interfaces that use the same component.
Further note that a business service provider may periodically make changes to database structures and user interfaces. For example, the business service provider might release system wide patches or new versions of various database structures and interfaces to improve the efficiency of the system or to add new features. Unfortunately, these changes might conflict with previous customizations made by an enterprise. It can be difficult, therefore, to provide stability for personalizations made to reuse components over several releases (e.g., when the usages and the reuse components may change) especially when a substantial number of reuse components and/or customizations are involved.
Accordingly, a method and mechanism to efficiently allow customizations to a user interface, including reuse components, may be provided by some embodiments herein.
An enterprise might store and access business information in a number of different ways. For example, an enterprise might store a substantial amount of information about products, sales, human resources, etc. in one or more database structures created by a business service provider (e.g., SAP AG® or SalesForce®).
The client 120 may be associated with a Web browser to access services provided by business process platform 110 via HyperText Transport Protocol (HTTP) communication. For example, a user may manipulate a user interface of the client 120 to input an instruction (e.g., “show me a sales report”). The client 120, in response, may transmit a corresponding HTTP service request to the business service provider 110 as illustrated. A service-oriented architecture may conduct any processing required by the request (e.g., generating views and user interfaces) and, after completing the processing, provide a response to client 120. The client 120 might comprise a Personal Computer (PC) or mobile device executing a Web client. Examples of a Web client include, but are not limited to, a Web browser, an execution engine (e.g., JAVA, Flash, Silverlight) to execute associated code in a Web browser, and/or a dedicated standalone application.
Note that
All systems and processes discussed herein may be embodied in program code stored on one or more computer-readable media. Such media may include, for example, a floppy disk, a CD-ROM, a DVD-ROM, a Zip® disk, magnetic tape, and solid state Random Access Memory (RAM) or Read Only Memory (ROM) storage units. Embodiments are therefore not limited to any specific combination of hardware and software.
The business service provider 110 might store client information into and retrieve client information from one or more database structures, such one or more “business objects.” As used herein, the phrase “business object” may refer to a set of entities with common characteristics and common behavior representing a defined business semantic. Note that business data may be stored within physical tables of a database. The database may comprise a relational database such as SAP MaxDB, Oracle, Microsoft SQL Server, IBM DB2, Teradata and the like. Alternatively, the database could be a multi-dimensional database, an eXtendable Markup Language (XML) document, or any other structured data storage system. The physical tables may be distributed among several relational databases, dimensional databases, and/or other data sources.
The structures of and relationships between the physical database tables may be complex, and business objects may be used to shield developers and end-users from these complexities. A business object may comprise, for example, a software model including nodes to encapsulate related data and methods. Moreover, a business object may be associated with a business entity, such as a customer, partner, sales order, product, store, time, etc., represented in the data of a data source. Each instance of a business object may represent a particular instance of the entity represented by the business object. An instance of a sales order business object may, for example, provide a mapping to the underlying tables storing data associated with a particular sales order.
In general terms, the business object model defines business-related concepts for a number of business transactions. The business object model may reflect the decisions and relationships about real world businesses acting in business transactions and may span across different industries and business areas. The business object model may be, for example, defined by business objects and their relationships to each other. Despite being applicable across different business entities and industries, business object model interfaces may be consistent across the different industries and across different business units because they are generated using a single business object model.
The client 120 might use pre-defined user interfaces to interact with the database structures hosted by the business service provider 110. According to some embodiments, a user interface may be defined using an overall “floor plan” and may include one or more reuse components. For example,
For example,
Note that the business service provider 110 may periodically make changes to the database structures such as business objects. For example, the business service provider 110 might release system wide patches or new versions of business objects and/or user interfaces to improve the efficiency of the system or to add new features.
Referring again to
As illustrated in
According to some embodiments, a user (e.g., an end user or key user) may personalize a screen in a “what you see is what you get” fashion. However, the user interface at runtime may not reflect which portions of the interface are associated with embedded reuse components are which portions are not associated with reuse components. When a user changes a component he or she may not expect that change to appear in other portions of the user interface (or even on an entirely different user interface). Thus, the personalization may be stored in connection with the embedded component (instead of the original reuse component).
Thus, some embodiments described herein provide a context-dependent personalization of embedded components. For example,
At S410, a user interface floor plan may be associated with a plurality of reuse components, each reuse component being adapted to be used with a plurality of user interface floor plans, wherein a second reuse component is embedded within a first reuse component. At S420, an end user adaptation to the second reuse component may be received. For example, the end user might have moved an element or otherwise altered information that is displayed within the user interface in connection with the second reuse component.
At S430, a context dependent reference to the second reuse component may be automatically stored within the first reuse component. The reference may include, for example, a component identifier, name and/or file path. According to some embodiments, a reference comprises a stable embedding anchor that includes a reference to a software version number. Moreover, the file path associated with a reference might comprise, according to some embodiments, a chain of file paths associated with a plurality of embedding anchors associated with embedded reuse components.
In this way, a context dependant personalization of embedded components may be provided such that the system stored not only the information about the change (what has been personalized) but also information about the context associated with the component. The context may, for example, hold information about a host embedding chain. In the example 200 of
According to some embodiments, stability for personalizations may be provided using stable “anchors.” These anchors may exist, for example, on a section or a list on the user interface and may help ensure that data is not deleted by the application in a future release. Note, however, that the stability criteria may not be the same as where the personalization takes place. That is, the context (host chain for the embedding) in which the personalization was done may need to be maintained. Therefore, according to some embodiments described herein, a new type of stable anchor may be introduced to identify the usage of an embedded component in the hosting/parent component. This stable anchor might not be changed when an application changes the user interface in a future release. The stable anchor may, according to some embodiments, be moved to other usages of embedded component to help keep the personalization which was done by a user to any new usages.
For example,
According to some embodiments, the context for a usage might not be directly concatenated via a user interface file (associated with the floor plan 510, REUSE1, and REUSE2), and may instead be constructed via the embedding anchors in the files. That is, in the example 500 of
Now consider the example 600 of
If an embedded component within a chain is deleted (instead of being inserted), the parent may fill its context attribute with the context of the deleted one. For example,
Thus, according to some embodiments, an application may exchange a component REUSE1 with a new one, and automatically move the embedding stable anchor where REUSE2 was embedded from REUSE1 to the new embedded component and any personalization that was done by the user will still be applied to REUSE2 in this context. Consider
According to some embodiments, reuse components and/or user customizations might be associated with a repository provided at a business service provider backend system. The repository might, for example, replace a generic (XML based) diff/merge mechanism with a mechanism of explicitly modeled “change records” that are applied to a user interface reuse component by a plugin that understands how to deal with specific kinds of changes. Furthermore, a tool that creates these changes (e.g., user interface runtime authoring or user interface designer) might store and access these changes in the repository. The repository might furthermore realize which changes have to be applied to the base XML (and in what order) and call the appropriate plugin to apply the changes after an upgrade/change to the system.
Furthermore, the repository may provide a mechanism to handle stable and embedding anchors and use these anchors as a reference for change records to help ensure that the system collects all the change records that need to be applied to a user interface component, even when anchors are moved to a new user interface component. Since these mechanisms might not run always at runtime, a load for a user interface component might be created with all of the changes that should be applied for a client. To handle this efficiently, key user adaptations might be stored as a special list of change records that can be applied directly on a client via the user interface runtime. End user personalization change records may also be handled by the repository.
The handling of user interface anchors may be performed in a number of different ways. For example,
As used herein, the term “embedding anchor” may refer to a context-dependent personalization of reuse components. Note that components which are reusable may have a specific addition/change depending on usage (not on the component itself), and these components may themselves have other components that also depend on usage. When these additions/changes to the components are usage specific, and each host of a component can't be kept stable over software releases, an entity that is part of the reference from the host to the reusable component may be introduced. This entity may, for example, be moved to another host by still identifying the usage, but the host could be a new component (because in the new release the host component may have been replaced by a new version). Moreover, the entity which identifies the usage may need to have context information that can be used to identify the chain of usages even when parts of the chain are exchanged in the future.
According to some embodiments, a component name, such as a path of the user interface file will not be critical for the user interface at run time. Instead, the embedding context will be included each time a client requests a user interface model from a business service provider backend system. A repository may also store its files in a load depending on the context. Moreover, a change transaction dispatcher may get the current context from the repository and will distinguish between change transactions to determine whether or not a merge will be performed. A user interface run time model cache and a resource cache may also store user interface files depending on the context. According to some embodiments, the user interface backend cache (load) may also use the context instead of a parent component. Since the context will be part of the change transaction itself, it may need to be stable over releases. As a result, the stable anchor may be used to keep the embedding context stable over different release versions.
According to some embodiments, a context associated with a reuse component may take the form of: “@+repository path of the embedding anchor” (which may be a chain of references). In some cases, the context may be added as an attribute to the repository change transaction file (e.g., as a hash value) and the context might not be changeable once it is created. Note that load regeneration might only be done via a user interface request (and not via a change of the embedded component but instead via a change of the host component).
Consider now
The embedding context may be part of the change transaction and a change transaction with an embedding context may only be merged if the context is equal to the current context of the user interface request. That means the context should remain stable over different software releases, which may be ensured via stable anchors. If any user interface component which is part of this context chain is to be changed, the system may move the embedding anchor to a new target and the context depending personalization of the embedded component may be applied again. With this functionality, it may be possible to exchange for example floor plan ◯ 1010 with a new one and to move the embedding anchor from floor plan ◯ 1010 to the new floor plan. Note that the context of component B 1020 and component A 1030 will remain the same.
Note that in some cases, parts of a context chain may be added or deleted. For this reason, a system may offer an attribute of the stable anchor “embedded context” where the context may be set manually. For example, consider a component A embedded within component B and component B is embedded within component C. Moreover, component B will be deleted and the embedded context of a floor plan will be set to the context “@+(repository path of embedding anchor of component B)+@+(repository path of embedding anchor of floor plan ◯)” which was the original context of component B. This might be done, for example, by a user interface design tool automatically.
As another example, component A may be embedded in a floor plan ◯, and component B is to be inserted between component A and floor plan ◯. In this case, after the insertion component A will be embedded with in component B and component B will be embedded within floor plan ◯. Before the insertion, the context of component A was “@+(repository path of embedding anchor of floor plan ◯).” After the insertion, the context will be “@+(repository path of embedding anchor of floor plan ◯)” which is the same context of floor plan ◯. This may also be done automatically by a user interface design tool.
The processes described herein may be performed by any suitable device or apparatus.
The processor 1110 also communicates with a storage device 1130. The storage device 1130 may comprise any appropriate information storage device, including combinations of magnetic storage devices (e.g., a hard disk drive), optical storage devices, and/or semiconductor memory devices. The storage device 1130 stores a program 1112 and/or user interface floor plan platform 1114 for controlling the processor 1110. The processor 1110 performs instructions of the programs 1112, 1114, and thereby operates in accordance with any of the embodiments described herein. For example, the processor 1110 may associate a user interface floor plan with a plurality of reuse components, each reuse component being adapted to be used with a plurality of user interface floor plans, wherein a second reuse component is embedded within a first reuse component. The processor 1110 may also receive an end user adaptation to the second reuse component and automatically store, within the first reuse component, a context dependent reference to the second reuse component associated with the end user adaptation.
The programs 1112, 1114 may be stored in a compressed, uncompiled and/or encrypted format. The programs 1112, 1114 may furthermore include other program elements, such as an operating system, a database management system, and/or device drivers used by the processor 1110 to interface with peripheral devices. As used herein, information may be “received” by or “transmitted” to, for example: (i) the platform 1100 from another device; or (ii) a software application or module within the platform 1100 from another software application, module, or any other source.
In some embodiments (such as shown in
The embodiments described herein are solely for the purpose of illustration. Those in the art will recognize other embodiments may be practiced with modifications and alterations limited only by the claims.