Value help functionality in distributed cloud environment

A value help library includes a configuration component to store value help configuration data associated with user interface fields of an application, the value help configuration data comprising a data source and a key associated with each of the user interface fields, a data exchange component to receive value help data for a user interface field based on the data source and the key associated with the user interface field, and a value help provider component to receive a request from an application for value help data associated with a user interface field of the application and to provide the requested value help data to the application.

BACKGROUND

Conventional software applications present user interfaces which facilitate interaction therewith. Such user interfaces often include input controls for receiving data to be used by the application. For example, a user interface for creating a data record may include input controls for receiving data corresponding to different fields of the data record.

Generally, value help functionality provides a list of acceptable values which may be entered into an input control. Value help functionality is used to facilitate data entry, and/or to ensure that entered data is valid data (e.g., the data entered for a Supplier field corresponds to an actual known Supplier). In one example, and in response to user entry of a few characters into an input control, value help allows the application to present valid values which conform to the already-entered characters. In another example, the application compares a user-entered value to a list of valid values and rejects the entered value if it is not in the list. In yet another example, the valid values are presented to the user as a list and one or more values may be selected therefrom.

Typically, the valid values are associated with a keyed entry (e.g., Name) of a defined entity (e.g., Supplier). In monolithic (e.g. on-premise) systems, all entities are maintained by the system and the individual values associated with each keyed entry can be easily accessed. In distributed systems, entities are maintained by different system components and extra care is taken to ensure valid referencing of entity entries.

An existing system may integrate cloud applications into its landscape. Such a cloud application is unaware of the identity and structure of value help sources of the existing system at design time. Accordingly, when designing an input control requiring value-help functionality, a cloud application developer is unaware of the value help source key which corresponds to the input control, and is also unaware of how to access the value help source to determine the values associated with the key. Systems are desired to facilitate the provision of value help functionality to cloud applications.

DETAILED DESCRIPTION

The following description is provided to enable any person in the art to make and use the described embodiments. Various modifications, however, will remain readily-apparent to those in the art.

Generally, some embodiments provide value help functionality to cloud applications. Some embodiments facilitate transfer of value help information from a source system (e.g., an on-premise system) to a cloud application. Moreover, some embodiments provide standardized interfaces for accessing value help functionality and for configuring value help fields and sources in a cloud platform.

FIG. 1illustrates system100according to some embodiments. System100includes cloud platform110, client devices120-124, and data sources130. Embodiments are not limited to the components of system100.

Cloud platform110may comprise any combination of cloud-based servers within which applications112may execute. Cloud platform110may provide services, storage and other resources which may be used by applications112. Cloud platform110also provides an execution environment for applications112. According to some non-exhaustive examples, cloud platform110provides a Java backend for executing JavaScript applications. Embodiments may also or alternatively support other programming languages.

Cloud platform110may be implemented by any number of servers, virtual machines or other processing engines. Cloud platform110may provide elasticity by which the number of processing engines and/or storage capacity of cloud platform110may be expanded or contracted as needed (e.g., as needed to execute applications112based on demand). In some embodiments, an operator of cloud platform110charges a customer based on the amount of processing and/or storage used over time.

Cloud platform110provides value help library114according to some embodiments. Value help library114comprises components which may be embedded into the source code of one or more of applications112and compiled into one executable. For example, the components of value help library114may be executed to upload value help information (e.g., key-value pairs) for use by applications112. The components of value help library114may be executed to determine value help values associated with a given input field of an application user interface. Moreover, the components of value help library114may be executed to define such value help fields, to specify value help sources for the value help fields, to provide credentials for accessing the value help sources, to specify value help cache settings, and to persist this configuration information for runtime access.

Data sources130may provide value help information to value help library114according to some embodiments. As non-exhaustive examples, data sources130include cloud server132, stream134, on-premise system136and data file138. According to some embodiments, value help library114includes executable components to acquire value help information from any of data sources130.

For example, value help library114may comprise components for consuming a message received from cloud server132, as well as components for subscribing to and receiving data from stream134. On-premise system136may be associated with a cloud connector which supports push/pull notifications between system136and value help library114. Value help library114may also provide an interface accessible by a native controller of an application112by which the application112may control upload of data file138(e.g., .csv, .json) to cloud platform110. The above-described configuration information for a given value help-enabled field may therefore specify the data source associated with value help information for the field as well as information for accessing the data source. This information may include URLs and credentials as well as access protocols (e.g., on-demand access, cache-based access, cache refresh policies, cache expiration policies).

Client devices120-124may comprise any devices suitable for accessing and presenting user interfaces of applications112. In some examples, each of client devices120-124executes a Web browser to access a URL of a desired application112and to receive Web pages and/or other renderable data therefrom. Cloud platform110may transmit executable client code to such Web browsers for execution therein according to some embodiments. According to some embodiments, client devices120-124present user interfaces including input fields which may be value help-enabled.

FIGS. 2A through 2Cillustrate value help functionality according to some embodiments. Value help functionality is not limited to the examples provided byFIGS. 2A through 2C.

FIG. 2Adepicts user interface200. User interface200may be presented to a user on a display of a client device. According to some embodiments, the user has opened a Web browser and navigated to URL210. It will be assumed that URL210corresponds to an application112executing on cloud platform110. The application112therefore executes to provide user interfaces to the client device and receive input therefrom per Web protocols.

User interface200may comprise a user interface for creating a record associated with the application112. The record corresponds to an organizational entity in the present example. Interface200includes input controls215,220and225for inputting values of various fields of the record. Input field215is associated with a Name field and is not value help-enabled according to the present example. Therefore, the user may input any value into input field215regardless of existing values associated with other related entities. Of course, the application112may apply its own verification logic or requirements to input filed215(e.g., Initial Caps, no special characters).

Input controls220and225are value help-enabled according to the present example. Specifically, the application112allows input control220to specify one of a particular set of Organization Types, and input control225to specify one of a particular set of Regions. As will be described below, the particular sets of Organization Types and Regions may be provided to the application112in an independent, maintainable and efficient manner according to some embodiments.

FIG. 2Billustrates interface200after selection of input control220according to some embodiments. As shown, selection of input control220results in display of window230. Window230presents selectable values associated with input control220. The selectable values comprise value help information associated with input control220according to some embodiments. The user may select one (or more, depending on the UI settings associated with input control220) of the values of window230to ensure entity consistency within the corresponding application112.

According to some embodiments, selection of input control220causes the application112to access components of value help library114to determine whether input control220is value help-enabled and, if so, to determine value help information associated with input control220. The components of value help library114may retrieve the value help information from a cache or from another source and provide the value help information to application112. In some embodiments, the determination of whether input control220is value help-enabled and of the associated value help information occurs prior to providing user interface200to the client device.

FIG. 2Cillustrates another paradigm for providing value help information according to some embodiments. Input control220comprises an input field into which the user has entered the characters “Glo”. Based on the value help information associated with input control220, the application112presents window240including the values of the associated value help information which include the string “Glo”. The user may proceed to select a value (or multiples values) therefrom.

FIG. 3is a detailed block diagram of architecture300for providing value help functionality according to some embodiments. The bold-bordered elements within dashed line302comprise an implementation of components of value help library114according to some embodiments. These elements include configuration component304and its corresponding inbound interface306for use by components of backend application instance303. All inbound interfaces of the value help library may be called by backend application instance303to invoke the value help library. A platform executing backend application instance303may simultaneously execute another instance of a same application including the components of value help library114. Moreover, as illustrated inFIG. 1, a same value help library114may be embedded into source code and compiled into the executable code of more than one other application.

In one example, an application utilizing the value help library provides configuration UI328to maintain value help configuration settings. The application further provides controller330to manage configuration UI328and submit the configuration settings to inbound configuration interface306. Configuration component304in turn calls outbound interface320provided by the application to persist the configuration data in configuration database318of the application's choice. Accordingly, the value help library is not restricted to any particular storage system and may utilize the preferred database technology of the application.

Configuration settings may include but are not limited to the identification of value help-enabled fields of the application and a corresponding key (e.g., table column) for each field. Configuration may include cache settings indicating that the latest value help value list must be acquired each time value help functionality is executed (i.e., no caching), and periodic update of the value help list (i.e., caching). The update period may be configurable as well. Configuration settings may also specify the data source associated with each value help-enabled field as well as information for accessing the data source.

Some embodiments also or alternatively provide a configuration Application Programming Interface (API) for uploading of JSON-based configuration settings to configuration component304.

At application start time (i.e., upon loading the JavaScript code of UI332), the code requires the configuration settings of value help-enabled fields, the value help information (e.g., key+context data) associated with the value help-enabled fields, and rendering information. Application controller334exposes value help library API310for loading all required metadata. API310is implemented by metadata component308for reading all necessary information from configuration component304. JavaScript code is only one example according to some embodiments. Embodiments may employ any other suitable UI technologies.

During runtime, when an end-user invokes value help functionality on UI332as described above, the backend is called to fetch the value help information. To do so, the application uses value help API314supporting value fetching, which is implemented by value help provider component312.

Value help provider component312is invoked at runtime in response to an end-user request for value help. In order to determine its proper runtime behavior, value help provider component312reads all necessary information (e.g., value help fields or cache settings) from configuration component304. If caching is off, value help provider component312directly accesses data exchange component314for live data source connection. If caching is on, value help provider component312either fetches the value help information from cache database322via outbound interface326provided by the application or, if not located therein, from data exchange component314. If fetched from data exchange component314, component314stores the value help information in cache database322for future use via application-provided outbound interface324.

Data exchange component314handles all data source connection types of the value help library. Component314uses the stored configuration data to access data source systems such as systems350,360,370and380and stores fetched data in cache database322via outbound interface324. Data exchange component314also provides inbound interface316against which the application maps an exposed API for direct upload of value help information. The uploaded values may, for example, conform to JSON format. A customer may determine to perform the upload manually and/or in an automated fashion at a desired frequency. If caching is enabled, data exchange component314stores the uploaded values in cache database322using outbound interface324.

Data exchange component314may directly connect against destination systems350and360via cloud connector355in pull mode. Destination systems are logical systems wrapping URL and credentials needed to connect to data sources. Improved decoupling may be achieved by broadcasting changes made to an entity (e.g., any Create, Read, Update, or Delete operations) via messages (e.g.385), events or streams (e.g.,375). Data exchange component314may therefore act as a subscriber to the messages and feeds, and to store such received data in cache database322.

FIG. 4comprises a flow diagram of process400to provide value help to a cloud-based application according to some embodiments. In some embodiments, various hardware elements execute program code to perform process400. Process400and all other processes mentioned herein may be embodied in computer-executable program code read from one or more of non-transitory computer-readable media, such as a non-volatile random-access memory, a hard disk, a DVD-ROM, a Flash drive, and a magnetic tape, and then stored in a compressed, uncompiled and/or encrypted format. In some embodiments, hard-wired circuitry may be used in place of, or in combination with, program code for implementation of processes according to some embodiments. Embodiments are therefore not limited to any specific combination of hardware and software.

Prior to process400, value-help fields of a cloud application are configured. Configuration may comprise user interaction with configuration UI328to specify fields of a cloud application as “value help-enabled” and, for each specified field, to specify a data source for value help information and a corresponding key of the data source. Configuration may also include determination of caching preferences as described above. As mentioned above, controller330may submit the configuration information to configuration component304via interface306. Configuration component304may then use interface320to store the configuration information in configuration database318. According to some embodiments, configuration of the value-help fields comprises upload of a configuration file to an API provided by controller330.

The cloud application is executed at S410. For a new UI session, execution of the application includes loading of the code of the application, the configuration settings of value help-enabled fields, the value help information (e.g., key+context data) associated with the value help-enabled fields, and rendering information. Application value help controller334may receive this value help-related information at S410from metadata component308via interface310.

Flow pauses at S415until a request for value help is received from the application. For example, the application may execute to provide user interfaces to an end-user and receive input therefrom. The application may perform any suitable operations based on the received input, including but not limited to manipulating database records. At some point during operation, the application may need to determine acceptable values for an input field. For example, with reference toFIG. 2A, the end-user may select input control220in order to enter information into input control220. The application may then determine that the selection requires value help information, at which point the determination at S415is affirmative and flow proceeds to S420.

At S420, it is determined whether input control220requires value help functionality specific to the application or whether external value functionality (i.e., supported by a value help library) is required. The determination at S420may be based on the value help configuration information loaded at the start of the UI session. If the field is not specified as an external value help-enabled field, flow proceeds to S425to execute an application-specific value help process without use of the value help library. Flow then returns to S415to await another request of value help.

If the subject field is associated with external value help via the value help library, flow proceeds to S430to determine whether data caching is enabled for the value help-enabled field. If data caching is not enabled, the value help data associated with the value help-enabled field is acquired from a corresponding data source at S435. The configuration information may specify the data source corresponding to the value help-enabled field, credentials for accessing the data source, a key for acquiring values corresponding to the field from the data source, and any other information needed to acquire the value help data. Next, at S440, the value help data is provided to the application for presentation to the end-user in a manner dictated by the application.

If it is determined at S430that data caching is enabled, it is then determined at S445whether the required value help data is located in the cache. If so, the data is retrieved from the cache (e.g., by value help provider component312via interface326) and provided to the application at S440. If the required value help data is not located in the cache, the value help data is acquired at S450as described with respect to S435, and then stored in the cache at S455(e.g., by data exchange component314via interface316). This data is then provided to the application at S440.

FIG. 5depicts user interface500for uploading value help data according to some embodiments. With reference to architecture300, user interface500may comprise an upload UI provided by an application for communicating with value upload controller336. User interface500includes control510for specifying one of the value help-enabled fields, and input box520for identifying a data file including value help data for the specified value help-enabled field.

FIG. 6is a tabular representation of value help data file600according to some embodiments. Value help data file600includes a key corresponding to a value help-enabled field, and a value help value associated with each key. The values may be used as described above to provide value help functionality. File600may be uploaded to cache322using an upload UI such as interface500.

FIG. 7is a block diagram of apparatus700according to some embodiments. Apparatus700may comprise a general-purpose computing apparatus and may execute program code to perform any of the functions described herein. Apparatus700may comprise an implementation of architecture300in some embodiments. Apparatus700may include other unshown elements according to some embodiments.

Apparatus700includes processor(s)710operatively coupled to communication device720, data storage device730, one or more input devices740, one or more output devices750and memory760. Communication device720may facilitate communication with external devices, such as a reporting client, or a data storage device. Input device(s)740may comprise, for example, a keyboard, a keypad, a mouse or other pointing device, a microphone, knob or a switch, an infra-red (IR) port, a docking station, and/or a touch screen. Input device(s)740may be used, for example, to enter information into apparatus700. Output device(s)750may comprise, for example, a display (e.g., a display screen), a speaker, and/or a printer.

Data storage device730may comprise any appropriate persistent storage device, including combinations of magnetic storage devices (e.g., magnetic tape, hard disk drives and flash memory), optical storage devices, Read Only Memory (ROM) devices, etc., while memory760may comprise Random Access Memory (RAM), Storage Class Memory (SCM) or any other fast-access memory.

Cloud applications732may comprise executable program code for execution on a cloud platform. One or more of cloud applications732may access components of value help library734as described herein to provide value help functionality to end-users as described herein. The components of value help library734are executed as described above to store and retrieve value help information in and from value help cache736. Embodiments are not limited to execution of these processes by a single apparatus. Data storage device730may also store data and other program code for providing additional functionality and/or which are necessary for operation of apparatus700, such as other application services, device drivers, operating system files, etc.

All systems and processes discussed herein may be embodied in program code stored on one or more non-transitory computer-readable media. Such media may include, for example, a hard disk, a DVD-ROM, a Flash drive, 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.