This present disclosure relates to data structures and related user interfaces, and more particularly to interactive form fields associated with virtual data attributes of a data object.
Typical data object attributes are fixed at design time to be at least one of a user-defined attribute or computer-calculated virtual attribute in that the value of the attribute is either defined and controlled by the human user or by the computer. In some instances, as the data attribute and underlying data object are deployed and consumed by software services, the design choice to fix the attribute value as user-controlled or computer-calculated may change, based on varying factors, including user feedback, availability of better attribute calculation algorithms and data, new use cases, and other considerations. In typical systems, changing the way a data attribute's value is defined can require re-designing, or even replacing the original data attribute so that the attribute's value is defined according to the designer's preference. Some traditional systems provide a computer-defined default value that can be overwritten by a user's entry, for example, using a user interface component associated with the data attribute. Overwriting a computer-defined default value can permanently replace and delete the default value. Similarly, attempts to restore an original default value, typically overwrites and delete user-entered attribute values, creating conflict between the default values and user's attempts to at least temporarily define alternate attribute values different from the default value.
This disclosure provides various embodiments for using a dual value data attribute. A variable computer-generated value can be provided, at a first instance, for a dual value data attribute, the variable computer-generated field value having a first value at the first instant. A user-specified value can be received for the dual value data attribute. The user-specified value for the first dual value data attribute can be stored in memory. A field flag value corresponding to the dual value data attribute can be identified as set to specify that the stored user-specified value is to be used for the dual value data attribute by software consuming the first dual value data attribute. The stored user-specified value can be provided for use by at least one software application consuming the first dual value data attribute based on the field flag value being set to the first flag state. At a second instant in time, subsequent to the first instant, the value of the field flag value can be changed from the first flag state to an alternative second flag state indicating that the computer-generated value is to be used by software consuming the first dual value data attribute. At a third instant in time subsequent to the second instant, the variable computer-generated field value can be provided for use by at least one software application consuming the particular data, wherein the variable computer-generated field value has a second value at the second instant, the second value different from the first value.
While generally described as computer implemented software that processes and transforms the respective data, some or all of the aspects may be computer implemented methods or further included in respective systems or other devices for performing this described functionality. The details of these and other aspects and embodiments of the present disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims.
Like reference symbols in the various drawings indicate like elements.
Changing the way a data object attribute's value is defined can require re-designing, or even replacing, the original data attribute (or even the entire data object containing the attribute) so that the attribute's value is defined according to the designer's latest preference. Such redesigns can be cost prohibitive however, particularly in object-oriented systems employing large numbers of data objects and data attribute values in connection with one or more software services. While some systems attempt to avoid the hard choice between user-defined and virtual attributes by providing a computer-defined default value that can be overwritten at the option of the end user, this solution can be limited in that overwriting default values can permanently delete the default value. Further attempts to reapply the computer-generated default value to the data attribute can, on the other hand, permanently overwrite and delete the user-defined attribute value.
In some use cases, it can be advantageous to have a data attribute that maintains co-existing and alternative user-controlled and computer-defined dual attribute values. For instance, a sales module may maintain a product object with a price attribute defining the price of the object. The value of the price attribute may be advantageously calculated, dynamically by a computing device, to reflect an ideal or standard price for the product. However, in some instances, it may be desirable to provide for leeway in setting the product price, such as in instances where a promotional, customized, or other user-defined price is desired. Further, a dual data attribute can provide a two state attribute maintaining alternate user-controlled and computer-defined attribute values. Additionally, the use of such a dual data attribute, as will be described in more detail below, can allow designers to avoid the need to choose between a data attribute that is computer- or user-defined. For instance, a dual data attribute can be easily toggled between its user-defined data attribute value state and computer-defined data attribute value state, allowing the functionality and character of the data attribute to be conveniently toggled and changed from one state to the next without requiring re-engineering of the original data attribute or associated data object.
Turning to the example implementation of
In the example implementation illustrated in
Data objects 120, 121, 123 are data entities including one or more defined or inherited attributes and values that can be operated upon by software functions, operations, applications, modules, and other software entities, such as software application and services. In some instances, attributes can be implemented as object metadata. Further, each object attribute can have associated data defining the values of the corresponding object attribute. As but one example, an object intended for business use can define a customer identity and include attributes such as customer ID, customer name, address, etc. with respective attribute values, or data, of ID=X123, name=James Bond, address=13 West Cliff Boulevard, etc. Attributes can map to or include dual data attribute structures 125, 126, 127, such as those described in more detail below. Further, in some instances, one or more data objects 120, 121, 122 can be implemented as business objects.
Each business object is thus a capsule with an internal hierarchical structure, behavior offered by its operations, and integrity constraints. Business objects are generally semantically disjointed, i.e., the same business information is represented once. In some embodiments, the business objects are arranged in an ordering framework such that they can be arranged according to their existence dependency to each other. For example, in a modeling environment, the customizing elements might be arranged on the left side of the business object model, the strategic elements might be arranged in the center of the business object model, and the operative elements might be arranged on the right side of the business object model. Similarly, the business objects can be arranged in this model from the top to the bottom based on defined order of the business areas, e.g., finance could be arranged at the top of the business object model with customer relationship management (CRM) below finance and supplier relationship management (SRM) below CRM. To help ensure the consistency of interfaces, the business object model may be built using standardized data types as well as packages to group related elements together, and package templates and entity templates to specify the arrangement of packages and entities within the structure.
A business object may be defined such that it contains multiple layers, such as in the example business object 205 of
Returning to the example of
Each processor 145, 146 can execute instructions and manipulate data to perform the operations of an associated server or system (e.g., 105, 106) and may comprise, for example, a central processing unit (CPU), a blade, an application specific integrated circuit (ASIC), or a field-programmable gate array (FPGA), among other suitable options. Although each processor 145, 146 is illustrated as a single processor, multiple processors may be used according to the particular needs of the associated server. References to a single processor 145, 146 are meant to include multiple processors where applicable. The operations that each processor 145, 146 executes are determined by the purpose and operations of its associated server. Generally, the processor 145, 146 executes instructions and manipulates data to perform the operations of its respective server and, specifically, the software systems, services, and applications hosted by the servers 105, 106.
At a high level, each “server” (e.g., 105, 106) includes one or more electronic computing devices operable to receive, transmit, process, store, or manage data and information associated with the environment 100. Specifically, a server is responsible for receiving requests from one or more clients and sending the appropriate response to the requesting client. In addition to requests from external clients, requests may also be sent from internal users, external or third-party customers, other automated applications, as well as any other appropriate entities, individuals, systems, or computers. For example, although
In the case of servers hosting, serving, or otherwise providing software services or products, a processor (e.g., 145, 146) can execute the functionality required to receive and respond to requests from clients, as well as client applications interfacing with the server's hosted application (e.g., 130, 131). It will be understood that the term “application server” (e.g., 105, 106) can include any suitable software component or module, or computing device(s) capable of hosting and/or serving a software application, including distributed, enterprise, or cloud-based software applications. Regardless of the particular implementation, “software” may include computer-readable instructions, firmware, wired or programmed hardware, or any combination thereof on a tangible medium operable when executed to perform at least the processes and operations described herein. Indeed, each software component may be fully or partially written or described in any appropriate computer language including C, C++, Java, Visual Basic, assembler, Perl, any suitable version of 4GL, as well as others. Applications can be implemented as individual modules that implement the various features and functionality through various objects, methods, or other processes, or may instead include a number of sub-modules, third party services, components, libraries, and such, as appropriate. Conversely, the features and functionality of various components can be combined into single components as appropriate.
At a high level, each of the one or more hosted applications and services (e.g., 130, 131) illustrated in the environment 100 can include any application, program, module, process, or other software that may execute, change, delete, generate, or otherwise manage information according to the present disclosure, particularly in response to and in connection with one or more requests received from the illustrated clients 102, 103, 104, as well as other applications. In certain cases, only one hosted application may be located at a particular server. In others, a plurality of related and/or unrelated hosted applications may be stored at a single server, or located across a plurality of other servers, as well. In certain cases, environment 100 may implement a composite hosted application. For example, portions of the composite application may be implemented as Enterprise Java Beans (EJBs) or design-time components may have the ability to generate run-time implementations into different platforms, such as J2EE (Java 2 Platform, Enterprise Edition), ABAP (Advanced Business Application Programming) objects, or Microsoft's .NET, among others. Additionally, applications may represent web-based applications accessed and executed via the network 110 (e.g., through the Internet). Further, one or more processes associated with a particular hosted application or service may be stored, referenced, or executed remotely. For example, a portion of a particular hosted application or service may be a web service associated with the application that is remotely called, while another portion of the hosted application may be an interface object or agent bundled for processing at a remote client (e.g., 102, 103, 104). Moreover, any or all of the hosted applications and software service may be a child or sub-module of another software module or enterprise application (not illustrated) without departing from the scope of this disclosure. Still further, portions of a hosted application can be executed by a user working directly at a server hosting the application, as well as remotely at a client.
Each of the example servers 105, 106 can also include a memory (150, 151 respectively). Further repositories 115, 116 and computing devices (e.g., 102, 103, 104) can also each include at least one memory device. Each memory may include any memory or database module and may take the form of volatile or non-volatile memory including, without limitation, non-transitory memory elements, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), removable media, or any other suitable local or remote memory component. Each memory may store various objects or data, including classes, frameworks, applications, backup data, business objects, jobs, web pages, web page templates, database tables, content repositories storing business or other dynamic information, or other information including any parameters, variables, algorithms, instructions, rules, constraints, or references thereto relevant to the purposes of the particular server. Each memory may also include any other appropriate data, such as VPN applications, firmware logs and policies, firewall policies, a security or access log, print or other reporting files, as well as others. Again, the particular data and instructions stored in each memory (e.g., 115, 116, 150, 151) will be described in detail below in connection with the illustrated implementations of the software environment 100 and components thereof.
Generally, the network 110 facilitates wireless or wireline communications between the components of the software environment 100 (e.g., between the application servers 105, 106, and one or more clients (e.g., 102, 103, 104), as well as between other components as appropriate), as well as with any other local or remote computer, such as those associated with one or more applications or external data sources. The network 110 can be implemented as one or more distinct networks. In any implementation, the network 110 may be a continuous or discontinuous network without departing from the scope of this disclosure, so long as at least a portion of the network 110 may facilitate communications between senders and recipients. The network 110 may be all or a portion of an enterprise or secured network. As an example, in
The illustrated implementation of
The GUI 160, 161, 162 comprises a graphical user interface operable to allow the user to interface with at least a portion of environment 100 for any suitable purpose, including allowing a user to interact with one or more software applications and services (e.g., 130, 131). Generally, the GUI 160, 161, 162 provides users with an efficient and user-friendly presentation of data provided by or communicated within the system, such as an interactive analytics presentation provided through web service security cockpit framework 130. The term “graphical user interface,” or GUI, may be used in the singular or in the plural to describe one or more graphical user interfaces and each of the displays of a particular graphical user interface. Therefore, the GUI 160, 161, 162 can be any graphical user interface, such as a web browser, touch screen, or command line interface (CLI) that processes information in the environment 100 and efficiently presents the results to the user. In general, the GUI 160, 161, 162 may include a plurality of user interface (UI) elements such as interactive fields, pull-down lists, media players, tables, graphics, virtual machine interfaces, buttons, etc. operable by the user at the client. These UI elements may be related to the functions of one or more applications or services (e.g., 130, 131), including applications hosted locally at the client.
While
Interface IF_FTA_UI in diagram 300 can include a base interface IF_ENTRY_UI (310) with an “InputValue” module 315 configured to enable a user interface (UI) component, such as an entry form in an electronic form, to pass user-defined values of the attribute A to, for example, a run time instance of business object 307. Another module ProvideValue (335) can enable a UI component to retrieve the current value of A, for instance, in connection with a data consumer's consumption of attribute A. Another base interface of the dual data attribute IF_DISP_UI (330) can be configured to enable a user interface component that displays the current attribute value without, however, offering the user the ability to change values of one or more values of the dual attribute. IF_DISP_UI (330) can, in some instances, be contained in IF_ENTRY_UI (320). While IF_DISP_UI(330) can be configured to open a read-only module and channel (e.g., ProvideValue (335)), an interface IF_ENTRY_UI (320) can facilitate write module InputValue (315). IF_ENTRY_CALC_UI (320) can formally be an extension of IF_ENTRY_UI (320). The method CalculateValue (325) (i.e., IF_ENTRY_CALC_UI→CalculateValue) can be associated with and call a module CL_MODULE_A 367 (shown in
As shown in class diagram 300 of an example flexible dual data attribute A, at least two alternative values for the attribute can be maintained. First, a user-controlled value can be maintained associated with the IF_ENTRY_UI interface 310, and second, a computer-generated attribute value can also be maintained associated with the IF_ENTRY_CALC_UI interface 320. A SwitchF module or method 340 can be provided to control which of the user-controlled value and computer-generated value is presented as the attribute's value at runtime (e.g., during access of the attribute by a software entity accessing the business object 307 containing the attribute). For instance, a flag can be set to a value indicating which of the at least two alternate attribute values is to be used. The “SwitchF” method allows the flag value to be toggled between the computer-generated, or virtual, value and the user-controlled state value. Accordingly, a UI component can use a “GetFSU” method 345 to access any one of the at least three sub-attributes of the flexible dual data attribute, namely the flag value F, system calculated value S, or user-controlled value U. One or more sub-attributes F, S, and/or U can be provided for use through interface IF_FTA_UI (350).
Interface IF_FTA_UI 306 and its sub-partitions (e.g., 310, 320, 330) can be reserved for use in connection with UI components accessed by users. Non-human consumers of the data attribute A can access and modify the attribute via an alternative interface, IF_PROVIDER (370), shown in
A user request can be received 382 through the GUI 372 to toggle the value of the field flag value F from “0” to “1” to indicate that virtual, system-calculated values are to be provided as the value of the dual data attribute. The toggled field flag value F can be presented 381b to the user via GUI 372. Additionally, a SwitchF method 383 can be called, via interface 376, to update 384 the value of F at the object 378.
A “Calculate” command can be initiated by a user, for example, via a “Calculate” button 386 provided through GUI 372. A user can push 385 the button 386 to force the recalculation of the system-calculated value of S. In this example, a CalculateValue method 387 is called, through interface 376, which, in turn, issues a CalcValue request 388 to a calculation module IF_CALC 399 adapted to perform the corresponding calculations for the particular dual data attribute. The calculation module 399 can return 389 the result of the calculation (in this case S″), thereby updating 390 the value stored in the object 378 to S=S″. Further, the updated, recalculated value of S can be reflected in the GUI displayed 391 to the user 371 (at 381c).
In this example, although the field flag value F has been set to the system-calculated attribute value, user entries can still be received to update the value U of the dual data attribute. For instance, a user 371 can specify 392 that the user-defined value is to be redefined as U=U″. In response, an InputValue method 393 can be called to update 394 the value U stored at corresponding business object 378 to U=U″. Updating the value of U can also be reflected 381d through the GUI 372 displayed to the user 371.
In the example of
The following are additional details of example implementations of the class methods outlined in connection with
The result of this method is the value calculated by the calculation module. The context is provided in this example by the implementation of the module. As a result, an importing parameter is not needed.
The result R_A of the IF_PROVIDER→GetValue method is the only value business logic can rely on when consuming the dual data attribute. The IF_PROVIDER→GetValue method can be the general access method for use by all non-UI data consumers of the dual data attribute.
The semantic of IF_DISP_UI→ProvideValue approximates that of IF_PROVIDER→GetValue. Therefore the call to IF_DISP_UI→ProvideValue can be internally delegated to the calculator interface. The use of interface IF_DISP_UI can further be used to identify, to the attribute instance, that the UI is the caller of the provide value request.
The task of this method is to set the value of A to the importing parameter I_U. The importing parameter I_U can be assumed to be a valid value, or checked to ensure that a valid value has been entered. The method can throw the exception “invalid_value” in response to the detection of an invalid value, causing the value of attribute A to remain unchanged. When the flag sub-attribute F value indicates that the computer-generated value is to be used, InputValue can have no further impact on the business process utilizing the attribute A, even though the new entered value I_U is valid and could be accepted . The returning parameter value R_R can indicate whether the InputValue method result will be used by business logic calling the attribute's data object, given the status of the flag sub-attribute. In some instances, even when the flag value is set to indicate that the computer-generated value is to be used, InputValue can be used to internally change the value of the user-controlled value U. Further, in some instances, the caller of IF_ENTRY_UI does not know the internal structure of the attribute instance (e.g., the flag value F). For instance, IF_ENTRY_UI can, in some examples, be introduced as a reduced view of a flexible dual data attribute by UI elements including a single read- and a single write-channel to the attribute value (e.g., a typical entry field in an electronic form), with no view of the flag value F. Consequently, in such examples, a user cannot take into account the internal state of F. Accordingly, the semantic of R_R can be defined by two call sequences:
Sequence 1:
ProvideResult R_A→A
InputValue (I_U=B) R_R→1
ProvideResult R_A→* (calculated anew)
Sequence 2:
ProvideResult R_A→A
InputValue (I_U=B) R_R→0
ProvideResult R_A→B
The semantics of IF_ENTRY_CALC_UI→CalculateValue approximates that of method IF_CALCULATOR→CalculateValue. Therefore the call to IF_ENTRY_CALC_UI→CalculateValue can be internally delegated to the calculator interface. The use of interface IF_ENTRY_CALC_UI can further be used to identify, to the attribute instance, that the UI is the caller of the calculation request.
The task of this method can be limited to toggling the flag sub-attribute from user-controlled value to computer-generated value and vice versa.
The task of this method can be used to obtain the current internal status of the dual data attribute's sub-attribute values A→F, A→S, A→U.
Turning now to the flowchart 400 of
With the field flag value F of the dual data attribute changed 512 to F=1 (at 502b), requests (e.g., 514) from service consumers 506 that involve the use of attribute 502 will be answered (e.g, 518) by service 504 using the current computer-generated attribute value S. In some instances, the computer-generated attribute value S can vary with time, as the value of S is dynamically calculated in the background by a calculation module adapted to calculate the value of S for the particular dual data attribute 502. For example, from a first instant in time corresponding with dual data attribute value 502a to a second instant in time corresponding to dual data attribute value 502c, the value of computer-generated attribute value S has changed from “25” to “26.” Accordingly, when service 504 gets, or consumes, the value of dual data attribute 502 in response to consumer request 514, the value that is returned and used by service 504 is S=26. The service consumed 518 by service consumer 506 can be influenced by the value of dual data attribute 502 used by service 504. Further, in the example of
Continuing with the examples of
Turning to the example 500b of
In some examples, a user interface presenting forms and information to an end user (e.g., 507) related to sub-attributes of the dual data attribute 503, can display information identifying both the computer-generated value as well as the user-controlled value. This can be useful, in some instances, so as to allow a user to compare the user-controlled value with the computer-generated value, for example, to guide whether the computer-generated value is generally more ideal than user-entered values (e.g., prompting toggling of the field flag value back to F=“1”), to guide the end user's entry of values for the attribute, or to provide feedback to the end user regarding the end user's entered values (e.g., in connection with a testing or learning software service where a “correct” computer-generated value can be compared against a user-entered value). Accordingly, in the example of
In some instances, a single data object, such as a business object, can include multiple data attributes of which two or more are dual data attributes. Indeed, in some examples, data objects can be developed where each and every attribute is a dual data attribute. In cases where a single data object is associated with multiple dual data attributes, the field flag values of the multiple dual data attributes of a single data object can be controlled individually and independent of the other dual data attributes of the object or, alternatively, as a batch. For instance, an administrator or user can request that all dual data attributes of a particular data object have field flag values set to the same state. Alternatively, the administrator or user can conveniently opt to set each dual data attribute field flag value to a particular state. Indeed, in some examples, particular attributes of a data object may be more amenable to user or computer control at a given instant in time. Through the use of dual data attributes, however, the designer need not be wedded to the original selection of a user- or computer-controlled attribute value, with the dual data attribute providing the designer with the ability to conveniently toggle between user- and computer-controlled attribute states.
Returning to
As shown in
While
Although this disclosure has been described in terms of certain implementations and generally associated methods, alterations and permutations of these implementations and methods will be apparent to those skilled in the art. For example, the actions described herein can be performed in a different order than as described and still achieve the desirable results. As one example, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve the desired results. In certain implementations, multitasking and parallel processing may be advantageous. Additionally, other user interface layouts and functionality can be supported. Other variations are within the scope of the following claims.