The present disclosure relates to software, computer systems, and computer implemented methods for providing a context service for sharing data objects among different components.
Computer applications frequently process data provided by systems from different domains, with the different systems providing data in different formats or protocols. In some instances, the complexity of the data exchanged between different systems, the large amounts of data, incompatibilities among different formats, and other factors may result in inefficiencies when applications receive, process, and transmit data to and from different sources across a network. Some solutions, including a variety of programming paradigms such as Service-Oriented Architecture (SOA) systems, are designed for handling large amounts of data shared among multiple systems. Even in SOA systems, the data may be copied from one system to another system by passing the data as messages. The data messages may, in some instances, contain extraneous, irrelevant, or generic data. Further, some of the data messages may be transferred across multiple systems a number of times via point to point communications. As the amount of data messages transported across networks increases over time, the performance of networks and applications may be negatively affected. Systems that share or exchange data, including systems that provide or receive on-demand services through a cloud network, may require efficient solutions for providing large amounts of data to different applications.
Further, applications or systems may be associated with a common business process or objective. Applications from different domains may need to collaborate with respect to a particular business objective or need to access common data objects. The data objects may need to be transmitted between applications each time a particular data object is updated and processed during collaboration, resulting in inefficient allocation of resources. Allowing applications to access a common storage for processing of shared data objects may compromise the security measures implemented in the common storage. The security concerns inherent in systems providing shared data objects may hinder the accessibility of the shared data objects.
The present disclosure describes techniques for providing a context service for sharing data objects among different components. A computer program product is encoded on a tangible storage medium, where the product comprises computer readable instructions for causing one or more processors to perform operations. These operations can include receiving a data object for inclusion in a hosted context storage and determining user information associated with a client with access to the data object. After the data object and the user information are stored in the hosted context storage, a request for the data object is received from the client. The data object is provided to the client based on an authentication status of the client.
While generally described as computer implemented software embodied on tangible media 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.
This disclosure generally describes computer systems, software, and computer implemented methods for providing a context service for sharing data objects among different components. Large amounts of data may be exchanged across a network between different systems. Different applications or components may access common data objects, but in some instances, the data objects used by multiple applications may need to be transmitted between the applications. Although the data objects may be transmitted across a network as data messages, the exchange of large amounts of messages between servers may impact the performance of the servers or network. A general context solution may hold data objects for applications that are distributed among many systems, allowing various applications from different domains to access a common data object in an efficient manner and collaborate in the processing of the common data object. In some instances, the general context solution may be provided to systems through a cloud network or on the premises of a particular client.
In some implementations, the context service includes a storage of data provided for applications that may need to retrieve or access the data for certain tasks before the data is passed to other applications, including applications of different types or applications in different domains. The context service may be implemented as an on-premise solution as well as made accessible to on-demand applications through a network such as a cloud network. Access to the context may be restricted for certain applications for security reasons. In certain implementations, only invited users or tenants have access to the data. Accordingly, the context may consist of a combination of stored data as well as user information identifying or verifying the users that have access to the data object. The context solution can be beneficial for providing accessibility to shared data in on-demand solutions or other implementations involving integration of cloud-based services with on-premise systems.
One potential benefit of the context service for sharing data objects of the present disclosure is that data objects may be shared with a plurality of components or applications in an efficient manner. The data objects may not need to be transmitted directly between applications, which requires communication resources that may be insufficient due to the size or complexity of the data objects. Further, the data objects may need to be accessed by applications from different domains, and the applications may operate in collaboration to update and process the data objects. Thus, an easily accessible service or storage for retrieving shared data objects may facilitate collaboration among applications from different domains for processing shared data objects. Providing the context service in a cloud network implementation also increases flexibility and efficiency when allowing applications from different locations and domains to access the data objects within a particular context storage.
Turning to the illustrated example,
In general, server 102 is any server that stores one or more hosted applications 122, where at least a portion of the hosted applications 122 are executed via requests and responses sent to users or clients within and communicably coupled to the illustrated environment 100 of
At a high level, the server 102 comprises an electronic computing device operable to receive, transmit, process, store, or manage data and information associated with the environment 100. The server 102 illustrated in
As used in the present disclosure, the term “computer” is intended to encompass any suitable processing device. For example, although
In the present implementation, and as shown in
The server 102 may also include a user interface, such as a graphical user interface (GUI) 160a. The GUI 160a comprises a graphical user interface operable to, for example, allow the user of the server 102 to interface with at least a portion of the platform for any suitable purpose, such as creating, preparing, requesting, or analyzing data, as well as viewing and accessing source documents associated with business transactions. Generally, the GUI 160a provides the particular user with an efficient and user-friendly presentation of business data provided by or communicated within the system. The GUI 160a may comprise a plurality of customizable frames or views having interactive fields, pull-down lists, and buttons operated by the user. For example, GUI 160a may provide interactive elements that allow a user to select from a list of suggested entries for input into a data field displayed in GUI 160a. More generally, GUI 160a may also provide general interactive elements that allow a user to access and utilize various services and functions of application 122. The GUI 160a is often configurable, supports a combination of tables and graphs (bar, line, pie, status dials, etc.), and is able to build real-time portals, where tabs are delineated by key characteristics (e.g. site or micro-site). Therefore, the GUI 160a contemplates any suitable graphical user interface, such as a combination of a generic web browser, intelligent engine, and command line interface (CLI) that processes information in the platform and efficiently presents the results to the user visually.
Generally, example server 102 may be communicably coupled with a network 112 that facilitates wireless or wireline communications between the components of the environment 100 (i.e., between the server 102 and client 135, between servers 140 and 102, as well as between mobile device 138 and server 102 or client 135), as well as with any other local or remote computer, such as additional clients, servers, or other devices communicably coupled to network 112 but not illustrated in
Clients 135a-c may have access to resources such as servers 140a-b and 102 within network 112. In certain implementations, the servers 140 within the network 112, including server 102 in some instances, may comprise a cloud computing platform for providing cloud-based services. The terms “cloud,” “cloud computing,” and “cloud-based”may be used interchangeably as appropriate without departing from the scope of this disclosure. Cloud-based services can be hosted services that are provided by servers and delivered across a network to a client platform to enhance, supplement, or replace applications executed locally on a client computer. Clients 135 can use cloud-based services to quickly receive software upgrades, applications, and other resources that would otherwise require a lengthy period of time before the resources can be delivered to the client 135. Servers 140 within the network 112 may also utilize the on-demand functionality of cloud-based services such as sharing data in a context provided at a server such as server 102. Additionally, mobile device 138 may also have access to cloud-based services, such as on-demand services provided by servers accessible through network 112.
As described in the present disclosure, on-demand services can include multiple types of services such as products, actionable analytics, enterprise portals, managed web content, composite applications, or capabilities for creating, integrating, and presenting business applications. For example, a cloud-based implementation can allow clients 135 to transparently upgrade from an older user interface platform to newer releases of the platform without loss of functionality. In certain implementations, a context service can provide a storage of shared data objects as an on-demand service to various components such as servers 140a-b and clients 135a-c. Using the context service, the servers 140a-b and clients 135a-c may each access shared data objects through the cloud network for processing without requiring direct point-to-point communications between individual servers or clients. The data objects may be efficiently shared among distributed systems from different domains. For example, different applications may collaboratively update a shared data object provided by the context without having to directly transfer the shared data object among the participating applications. The shared data object may further be associated with a business process executed at clients 135a-c or servers 140a-b, and the shared data object may be accessed at each step of the business process by different applications. The context service may also associate the shared data object with particular applications that are granted access to the data object.
As illustrated in
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. It will be understood that while portions of the software illustrated in
At a high level, each of the one or more hosted applications 122 is 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 135 and their associated client applications 144 or from other servers or components through a network 112. In certain cases, only one hosted application 122 may be located at a particular server 102. In others, a plurality of related and/or unrelated hosted applications 122 may be stored at a single server 102, or located across a plurality of other servers 102, as well. In certain cases, environment 100 may implement a composite hosted application 122. 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, the hosted applications 122 may represent web-based applications accessed and executed by remote clients 135 or client applications 144 via the network 112 (e.g., through the Internet). Further, while illustrated as internal to server 102, one or more processes associated with a particular hosted application 122 may be stored, referenced, or executed remotely. For example, a portion of a particular hosted application 122 may be a web service associated with the application that is remotely called, while another portion of the hosted application 122 may be an interface object or agent bundled for processing at a remote client 135. Moreover, any or all of the hosted applications 122 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 the hosted application 122 may be executed by a user working directly at server 102, as well as remotely at client 135.
As illustrated, processor 118 can also execute a context module 104 that provides services for applications such as hosted application 122, client application 144, or servers 140 within network 112. In some implementations, the context module 104 can be executed by a different processor or server external to server 102, such as by a server communicably coupled to server 102 through network 112. For example, the context module 104 may be provided as an on-demand service through a cloud computing network, as a web service accessible via network 112, or as a service provided on a dedicated server. The context module 104 can provide interfaces, modules, services, or metadata definitions that enable hosted application 122 to provide accessibility to data objects stored in a context storage 124 within memory 120 at server 102. The context module 104 can also include functionality to associate data objects within context 124 with particular clients 135 or servers 140 that may need to access the data objects in context 124. In other words, the context module 104 may limit the accessibility of certain data objects within context 124 to approved users. The approved users that are allowed access to data objects in context 124 may be users that are collaborating with respect to certain data objects in connection with a shared business objective, for example. As used in the present disclosure, the context module 104 can be provided as a context service, which may include providing access to data objects stored within a memory 120. The data objects and any user information associated with the data objects that may be used to identify or verify users granted to the data objects may be stored in a data structure such as context 124 within memory 120. Accordingly, as used in the present disclosure, the terms “context,” “context storage,” and “context service” may be used interchangeably without departing from the scope of the present disclosure.
The context module 104 may be separate from hosted application 122, while in other instances, the context module 104 may be embedded within or part of a particular one or more hosted applications. In some instances, hosted application 122 may be communicably coupled to the context module 104, allowing hosted application 122 to access and take advantage of the functionality provided by the context module 104. One example of an implementation of the context module 104 is described in detail below in connection with
In general, the server 102 also includes memory 120 for storing data and program instructions. Memory 120 may include any memory or database module and may take the form of volatile or non-volatile memory including, without limitation, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), removable media, or any other suitable local or remote memory component. Memory 120 may store various objects or data, including classes, frameworks, applications, backup data, business objects, jobs, web pages, web page templates, database tables, repositories storing business and/or dynamic information, and any other appropriate information including any parameters, variables, algorithms, instructions, rules, constraints, or references thereto associated with the purposes of the server 102 and its one or more hosted applications 122.
Memory 120 may also store data objects such as data objects in a context 124 accessible to different components through a cloud network and provided by a context on-demand service. The context on-demand service provides accessibility to a plurality of entities such as applications, frameworks, devices, or other components that may need to process a shared data object. The components may need to process the shared data objects in collaboration with each other based on an associated business process or a shared objective. Accordingly, the context 124 may include additional functionality in addition to a storage for shared data objects. For example, to facilitate collaboration by the various components on a shared data object, the context 124 in memory 120 may also store user or tenant information associated with each component. Based on the stored user/tenant information, only portions of a particular application or only invited users may access the context 124, for example. Thus, the user/tenant information may be used to ensure secure communications with the context 124 by various components. Still further, memory 120 may include any other appropriate data, such as VPN applications, firmware logs and policies, HTML files, data classes or object interfaces, unillustrated software applications or sub-systems, firewall policies, a security or access log, print or other reporting files, as well as others.
As described above, context 124 stores appropriate data suitable for facilitating collaboration on shared content for users from different domains. Thus, context 124 may include both the data objects as well as user information associated with the users who are provided access to the content of context 124.
Further, as illustrated in another logical representation 200b of a context in
Alternatively, as depicted in
The illustrated environment of
The GUI 160b associated with client 135a comprises a graphical user interface operable to, for example, allow the user of client 135a to interface with at least a portion of the platform for any suitable purpose, such as creating, preparing, requesting, or analyzing data, as well as viewing and accessing source documents associated with business transactions. Generally, the GUI 160b provides the particular user with an efficient and user-friendly presentation of business data provided by or communicated within the system. The GUI 160b may comprise a plurality of customizable frames or views having interactive fields, pull-down lists, and buttons operated by the user. More generally, GUI 160b may also provide general interactive elements that allow a user to access and utilize various services and functions of application 144. The GUI 160b is often configurable, supports a combination of tables and graphs (bar, line, pie, status dials, etc.), and is able to build real-time portals, where tabs are delineated by key characteristics (e.g. site or micro-site). Therefore, the GUI 160b contemplates any suitable graphical user interface, such as a combination of a generic web browser, intelligent engine, and command line interface (CLI) that processes information in the platform and efficiently presents the results to the user visually.
As used in this disclosure, client 135 is intended to encompass a personal computer, touch screen terminal, workstation, network computer, kiosk, wireless data port, smart phone, personal data assistant (PDA), one or more processors within these or other devices, or any other suitable processing device. For example, each client 135 may comprise a computer that includes an input device, such as a keypad, touch screen, mouse, or other device that can accept user information, and an output device that conveys information associated with the operation of the server 102 (and hosted application 122) or the client 135 itself, including digital data, visual information, the client application 144, or the GUI 160b. Both the input and output device may include fixed or removable storage media such as a magnetic storage media, CD-ROM, or other suitable media to both receive input from and provide output to users of client 135 through the display, namely, the GUI 160b.
While
After the data object 320 has been generated and included in the context 124, a process framework 304 may retrieve the data object 320 from the context 124 for further processing and development. The process framework 304 may then return the data object 320 to the context 124 once the data object 320 has been updated by the process framework 304. A UI framework 306 may also retrieve the data object 320 from the context 124 for particular tasks such as generation of user interface elements. As seen in
In some implementations, the context 124 is an additional capability of a system. Different frameworks may use the context 124 for sharing data objects, but the frameworks are not necessarily directly dependent on the context 124. In other words, the frameworks associated with the context 124 may not always use the context 124 to share data objects, and a particular application associated with a framework may decide whether to reference the context 124. Further, the context 124 may support a number of different data objects. For example, data objects ranging from complete business objects to simple Java objects may be included in the context 124.
The on-demand context service illustrated in
After the data object 420 has been stored in the context 124, other applications or frameworks may have access to the data object 420 through the on-demand context service, as depicted in
Further, based on a business objective or business process associated with particular data objects within the context 124, the context 124 may provide only limited access to certain applications that need to access the context 124. In some implementations, the context service may utilize an authentication procedure to restrict access to the context 124. For example, an identity management system may be employed in connection with the context 124 to manage the security credentials of various tenants, users, or applications that are given access to the context 124. A particular context identification may be required to gain access to the context 124 or a subset of the data objects in the context 124. A public/private key encryption system may also be implemented to determine the applications or users that are allowed to retrieve data objects from the context 124. The authentication procedure may be used in connection with or as an alternative to a tenant implementation in which users associated with a particular tenant are given predefined access privileges to the context 124 without requiring additional authentication.
The applications that are given access to the context 124 may be any type of device, framework, or application capable of accessing the context 124 in the cloud network for data objects stored in the context 124. For example, a mobile device application 404 may have an on-device service that needs access to the data object 420 in the context 124 for processing. The mobile device application 404 may retrieve the data object 420 from the context 124 for manipulation before pushing the data object 420 onto the context 124 again for other applications. Further, as seen in
Various components may submit requests to the context 124 for access to data objects stored in the context 124. Requests to the context for accessing of data objects can be implemented in conformity with Representational State Transfer (REST) type formats, which may maximize the use of pre-existing, predefined interfaces and other built-in capabilities provided by a chosen network protocol, such as HTTP, and minimize the addition of new application-specific features on top of the network protocol. Further, requests to the context 124 may also be secured using encryption methods such as MD5 or private/public key encryption, for example. In some implementations, the context 124 may be defined such that only portions of a particular application have access to the context 124 or only invited users or tenants have access to the data. Accordingly, the context 124 may include a combination of data and user information.
In some implementations, a limited number of clients may be given access to the data object in context 124, depending on the situation. For example, the client that generated the data object may invite other clients or users to access the data object in context 124 in accordance with a shared business objective. Thus, the originating client may provide the necessary user information to the context module 104, indicating the clients that have permission to access the data object. As described below in connection with
Returning to the process 500 illustrated in
The preceding figures and accompanying description illustrate example processes and computer implementable techniques. But environment 100 (or its software or other components) contemplates using, implementing, or executing any suitable technique for performing these and other tasks. It will be understood that these processes are for illustration purposes only and that the described or similar techniques may be performed at any appropriate time, including concurrently, individually, or in combination. In addition, many of the steps in these processes may take place simultaneously and/or in different orders than as shown. Moreover, environment 100 may use processes with additional steps, fewer steps, and/or different steps, so long as the methods remain appropriate.
In other words, although this disclosure has been described in terms of certain embodiments and generally associated methods, alterations and permutations of these embodiments and methods will be apparent to those skilled in the art. Accordingly, the above description of example embodiments does not define or constrain this disclosure. Other changes, substitutions, and alterations are also possible without departing from the spirit and scope of this disclosure.