The subject matter described herein relates to systems, techniques, and articles for backend service adaptation.
Frontend service adaptation allows for the combination of fields from different business object nodes so that a resulting adapted business object node can be used for displaying required business data in a user interface. With frontend service adaptation, an adapted business object node is configured to contain fields from different business object nodes along an association path. Such an arrangement can result in a large amount of metadata residing and being processed by a frontend server. In addition, during runtime, all data on an associated path is transferred to the frontend server. Moreover, many association paths may need to be evaluated on the frontend in order to access required business object fields. All of such requirements relating to frontend service adaptation can negatively affect performance, network data volume, memory consumption, and response time for the corresponding user interfaces.
A request originating at a frontend server for data encapsulated in a plurality of business objects stored in a business object layer at the backend server is received. Such a request originates from a user interface layer and is received by a controller layer. Subsequently, a controller object is instantiated in the controller layer at the backend server. The controller object has nodes that are mapped to nodes in the plurality of business objects so that the controller object encapsulates the requested data. Thereafter, transmission of data response to the request encapsulated by the controller object to the frontend server is initiated. At least a portion of the data can be rendered in user interface view in the user interface layer.
A node of the controller object can be mapped to a primary node of a business object. The ID of the primary node can be used to be the ID of the corresponding node of the controller object. Associations of nodes in the controller object can be mapped to associations of the primary node and/or associations of business object nodes associated with the primary node. Attributes of nodes in the controller object can be mapped to attributes of the primary node and/or attributes of business object nodes associated with the primary node. Queries of nodes in the controller object can be mapped to queries of the primary node and/or queries of business object nodes associated with the primary node.
Data displayed together in the user interface can be grouped together into a single controller object. Such data displayed together can be rendered in graphical user interface elements stored within a single graphical user interface container.
A node of the controller object can have an extension field that is mapped to an extension field of a business object node. The extension filed can be visible at the user interface layer.
A mapping object can define mappings between entities of the controller object to corresponding entities in the one or more business objects. The entities can include attributes, actions, queries, and associations of business objects.
In an interrelated aspect, a request originating at a frontend server for data encapsulated in a plurality of business objects is received. The plurality of business objects are stored in a business object layer at the backend server. The request originates from a user interface layer and being received by a controller layer. Thereafter, a plurality of controller objects are instantiated in the controller layer at the backend server. The controller objects each have nodes that are mapped to nodes in the plurality of business objects so that the controller objects as a whole encapsulate the requested data. Transmission of data response to the request encapsulated by the controller objects is then transmitted to the frontend server.
Two or more nodes for different controller objects can be mapped to the same business object node. Two or more nodes for different controller objects can have extension fields that are mapped to an extension field for a single business object node. The controller objects can correspond to disjoint user interface views in the user interface layer. At least one of the controller objects can correspond to two or more user interface views in the user interface layer. At least two of the controller objects can be associated and have a corresponding association path.
In a further interrelated aspect, a system includes a frontend server and a backend server that is remote from the frontend server. The frontend server originates, at a user interface layer, a request transmitted to a controller layer of the backend server for data encapsulated in a plurality of business objects, the plurality of business objects being stored in a business object layer at the backend server, the request originating from a user interface layer and being received by a controller layer. The backend server instantiates a controller object in the controller layer, the controller object having nodes that are mapped to nodes in the plurality of business objects so that the controller object encapsulates the requested data. The backend server further initiates transmission of data response to the request encapsulated by the controller object to the frontend server.
Articles are also described that comprise a tangible machine-readable storage medium embodying instructions that when performed by one or more machines result in operations described herein. Similarly, computer systems are also described that may include a processor and a memory coupled to the processor. The memory may encode one or more programs that cause the processor to perform one or more of the operations described herein.
The subject matter described herein provides many advantages. By shifting service adaptation to the backend, performance, network data volume, memory consumption, and response times can all be improved. These improvements are based, in part, in a reduction of metadata on the frontend, data transferred to the frontend, and fewer roundtrips between the frontend and the backend.
The details of one or more variations of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features and advantages of the subject matter described herein will be apparent from the description and drawings, and from the claims.
Like reference symbols in the various drawings indicate like elements.
Data that is always displayed together in a view in the user interface layer 510 can be grouped together in a single controller object node 525. As an example, if there are several forms arranged in a tab container, all contained data of each tab can be grouped to the same controller object node. Such a controller object can be referred to as a floorplan specific controller object.
In order to implement field extensibility, a backend service adaptation mapping definition can be created for the extension fields which in turn has a pointer to an original definition. The mapping definition can contain information that characterizes which extension field in a proxy structure of the controller object node is mapped to which extension field in a proxy structure of an underlying business object node.
Extensibility can be initiated by starting with a business object node to which one or more fields are to be extended. Thereafter, all controller objects nodes which have the extended business object node as the primary node can be extended. This can result in the extended fields being visible on the user interface. Optionally, the controller object nodes can be extended by associations.
Extensibility can also be initiated by starting with a controller object node to which one or more fields are to be extended. A primary business object node corresponding to the controller object node can first be extended to include the new fields. All other controller object nodes in which the extended business object node is the primary node can also be extended. Optionally, the controller object nodes can be extended by associations.
A mapping object can be used to define mappings between entities of a controller object to corresponding entities in one or more business objects. Entities can include attributes, actions, queries, and associations of business objects. The existence of a mapping object indicates whether a business object node is mapped. As discussed above, the mapping defines a business object node that acts as the primary node of the mapping tree. All entities of the source node are then mapped to objects of the primary node or to nodes that are reachable via associations according a business object model. Due to that fact every entity in the target business object can be described by a path of several subsequent associations. The needed paths for the definition of the mapping can be stored as mapping path objects. In the case of filtered associations, the setting for the filter values can be defined. The definition of an attribute mapping can be given by a source attribute and a target attribute. Every attribute in a business object hierarchy can be given by a path.
The storage of mapping metadata can be organized with a set of ABAP database tables. The content of the tables can be transported via a logical transport object. The following sections describe the metadata tables. The underlined cells in the table definition are the key fields of the corresponding metadata table.
Header Information. This table can store the administrative data of the mapping. It contains the name of the mapped business object, the creation information and the change information. The name of the mapped business object is the key of this table.
BO_NAME
Definition of Primary Node. This table can store the link to the business object node of the business object layer that is used as primary node of the mapping. The link to the node can be given by the name of the business object (PRIMARY_BO_NAME) and the name of the node (PRIMARY_NODE_NAME). In the case of an DO node, the DO_PREFIX field is filled with the name of the prefix of the corresponding HO-DO association.
BO_NAME
BO_NODE_NAME
Mapping Path Definition. The mapping paths that are needed to define the mappings can be defined with table BSA_I_PATH.
BO_NAME
PATH_ID
BSA_PATH_FILTER_MODE
BSA_PATH_MAX_EDIT_MODE
Filtersetting Definition. When the filter setting mode in the mapping path is defined as Filtered by Values (mode=1), the filter settings can be defined as follows.
BO_NAME
PATH_ID
ATTRIBUTE_NAME
Attribute mapping can be provided in a BSA_I_ATTR_MAP table.
BO_NAME
BO_NODE_NAME
ATTR_SEQNR
Action mapping can be provided in a BSA_I_ACTION_MAP table.
BO_NAME
BO_NODE_NAME
ACTION_NAME
Query mapping can be provided in a BSA_I_QUERY_MAP Table.
BO_NAME
BO_NODE_NAME
QUERY_NAME
Association mapping can be provided BSA_I_ASSOC_MAP Table.
BO_NAME
BO_NODE_NAME
ASSOCIATION_NAME
BSA_BO_NODE_LINK_TYPE
Floorplan Configuration. In some implementations, a controller object can be reused for several floorplans. But not all configured elements of a controller object need to be used in a floorplan. Therefore, a configuration table where the elements that are relevant for a floorplan can be stored can be provided. Floorplan configurations can comprise part of the controller object metadata and need not be transported separately in a dedicated object.
The BSA_I_FLOORPLAN Table can be used to define a CHAR30 ABAP name for a VC floorplan.
BO_NAME
FP_NAME
The BSA_I_FP_CONF Table can be used to define which of the defined mappings of a controller object are relevant for a specific floorplan. When all mappings of a controller object are used for a specific floorplan then there will be no entry for this type in the table.
BO_NAME
FP_NAME
BO_NODE_NAME
ELEMENT_SEQNR
BSA_ELEMENT_TYPE defines the type of a business object node element:
Various implementations of the subject matter described herein may be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations may include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and may be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the term “machine-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.
To provide for interaction with a user, the subject matter described herein may be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user may provide input to the computer. Other kinds of devices may be used to provide for interaction with a user as well; for example, feedback provided to the user may be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user may be received in any form, including acoustic, speech, or tactile input.
The subject matter described herein may be implemented in a computing system that includes a back-end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front-end component (e.g., a client computer having a graphical user interface or a Web browser through which a user may interact with an implementation of the subject matter described herein), or any combination of such back-end, middleware, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.
The computing system may include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
Although a few variations have been described in detail above, other modifications are possible. For example, the logic flow depicted in the accompanying figures and described herein do not require the particular order shown, or sequential order, to achieve desirable results. Other embodiments may be within the scope of the following claims.