Build-independent software framework for creating custom adapters

According to some embodiments, methods and systems may be associated with a cloud computing environment having an integration service (e.g., associated with a Software-as-a-Service or a Platform-as-a-Service). The system may include a build automation tool and a build-independent software framework coupled to the build automation tool. The build-independent software framework may access, via an implementation registry, information from the build automation tool that represents a custom adapter for the integration service. The build-independent software framework may then automatically create the custom adapter via a build Application Programming Interface (“API”) and automatically validate the created custom adapter via a validation API. The system can then arrange to deploy a concrete implementation of the custom adapter in the cloud computing environment. According to some embodiments, the software framework is “build-independent” because it does not require that an adapter designer use a particular Integrated Development Environment (“IDE”).

CROSS-REFERENCE TO RELATED APPLICATION

This application is related to, and claims benefit of and priority to, Indian Provisional Patent Application No. 202211004160, filed Jan. 25, 2022, the contents of which are hereby incorporated by reference in their entirety for all purposes.

BACKGROUND

An enterprise may utilize a cloud computing environment to let users perform tasks. For example, the enterprise might let various users execute an application via the cloud computing environment to process purchase orders, adjust human resources information, generate invoices, etc. In a Graphical User Interface (“GUI”) based multi-tenant integration service150, such as SAP® Cloud Platform Integration (“CPI”), an integration developer can drag-and-drop integration components to create integration scenarios or flows including adapters (e.g., at the sender or receiver side of an integration flow). In integration development, a quick and easy way of adding new adapters may be highly desirable. Since not all adapters can be developed by a platform, a framework may be provided to external developers to let them add custom adapters for the platform. Most of the frameworks have a build or Integrated Development Environment (“IDE”) dependency. As used herein, the phrase “IDE” may refer to a software application that provides comprehensive facilities to computer programmers for software development (e.g., a source code editor, build automation tools, a debugger, etc.). For example, a particular Adapter Development Kit (“ADK”) framework might have a dependency on eclipse. This means that a developer will need to learn eclipse IDE constraints. This enforces IDE as a choice for all developers, which may not be productive and may substantially increase the Total Cost of Ownership (“TCO”) for an adapter. Another problem is that the framework owner may need to continually support the latest versions of the IDE in order to remain compatible. This, however, can be a time-consuming and error-prone task—especially when there are a substantial number of integration components, custom adapters, etc.

It would therefore be desirable to provide a quick and easy way of adding new custom adapters for an integration service in a cloud computing environment via a build-independent framework.

SUMMARY

According to some embodiments, methods and systems may be associated with a cloud computing environment having an integration service (e.g., associated with a Software-as-a-Service or a Platform-as-a-Service). The system may include a build automation tool and a build-independent software framework coupled to the build automation tool. The build-independent software framework may access, via an implementation registry, information from the build automation tool that represents a custom adapter for the integration service. The build-independent software framework may then automatically create the custom adapter via a build Application Programming Interface (“API”) and automatically validate the created custom adapter via a validation API. The system can then arrange to deploy a concrete implementation of the custom adapter in the cloud computing environment. According to some embodiments, the software framework is “build-independent” because it does not require that an adapter designer use a particular Integrated Development Environment (“IDE”).

Some embodiments comprise means for accessing, via an implementation registry and a computer processor of a build-independent software framework, information from a build automation tool that represents a custom adapter for the integration service; means for automatically creating the custom adapter via a build Application Programming Interface (“API”); means for automatically validating the created custom adapter via a validation API; and means for arranging to deploy a concrete implementation of the custom adapter in the cloud computing environment.

Some technical advantages of some embodiments disclosed herein are improved systems and methods to provide a quick and easy way of adding new custom adapters for an integration service in a cloud computing environment via a build-independent framework.

DETAILED DESCRIPTION

In a cloud computing landscape, stand-alone, individual applications may exchange information via an integration service. For example, in a GUI-based integration service (such as SAP® CPI), an integration developer drags-and-drops integration components to create an integration service. Cloud integration is the act of combining different cloud-based systems into an integral whole, or may refer to the joining of cloud-based systems with on-premises systems. The ultimate goal of cloud integration is to connect the disparate elements of various cloud and local resources into a single, ubiquitious environment that allows administrators to seamlessly access and manage applications, data, services, and systems. A cloud integration platform may synchronize data and applications across an enterprise. Cloud integration may include data integration (sharing or synchronizing data between data stores) and application integration (two or more applications share states, requests, commands, and other mechanisms to implement organization processes).

FIG.1is a high-level block diagram associated with a cloud-based computing system100in accordance with some embodiments. The system100may include a build automation tool110. As used herein, the phrase “build automation tool” may refer to elements that help automate various tasks to develop source code into an end-product. These elements might include, for example, items for downloading dependencies, compiling source code into binary code (e.g., a machine-readable format), packaging binary code, running automated tests, code coverage, static code analysis, creating or updating database schema (migration), packaging the code into an executable format, deploying to production/testing/User Acceptance Testing (“UAT”) environments, generating documentation from source code, etc.

At (A), an adapter developer101access an Integrated Development Environment (“IDE”)120to create one or more custom adapters. As used herein, the phrase “IDE” may refer to, for example, a software application that provides comprehensive facilities to computer programmers for software development. The IDE120might include a source code editor, a debugger, a compiler, an interpreter, etc. The IDE120and build automation tool110may automatically work together at (B) to deploy the custom adapters to an integration platform130at (C). The term “automatically” may refer to a process that requires little or no human intervention. As used herein, the phrase “integration platform” may refer to software that helps integrate different applications and services. The integration platform130may provide an environment for data integration, data management with metadata information, application integration, collaboration between distributed and scattered applications and designers, interoperability between different operating systems and programming languages, implementation of security considerations, etc.

The build automation tool110and/or IDE120may store information into and/or retrieve information from various data stores (e.g., adapter configuration values), which may be locally stored or reside remote from the build automation tool110and/or IDE120. Although a single build automation tool110and IDE120are shown inFIG.1, any number of such devices may be included. Moreover, various devices described herein might be combined according to embodiments of the present invention. For example, in some embodiments, the build automation tool110and IDE120might comprise a single apparatus. The system100functions may be performed by a constellation of networked apparatuses, such as in a distributed processing or cloud-based architecture.

An administrator may access the system100via a remote device (e.g., a Personal Computer (“PC”), tablet, or smartphone) to view information about and/or manage operational information in accordance with any of the embodiments described herein. In some cases, an interactive Graphical User Interface (“GUI”) display may let an operator or administrator define and/or adjust certain parameters via the remote device (e.g., to define how microservices interact) and/or provide or receive automatically generated recommendations or results associated with the system100.

FIG.2is a custom adapter architecture200according to some embodiments. An implementation of a build-independent framework220may retrieve information about one or more custom adapters from a central registry210via an implementation registry230. According to some embodiments, the framework220is “build-independent” because it does not require that an adapter designer use a particular IDE. The information in the implementation registry230may then be used to create concrete implementations250of the adapters.

FIG.3is a custom adapter creation method300that might be performed by some or all of the elements of the systems100,200described with respect toFIGS.1and2. The flow charts described herein do not imply a fixed order to the steps, and embodiments of the present invention may be practiced in any order that is practicable. Note that any of the methods described herein may be performed by hardware, software, or any combination of these approaches. For example, a computer-readable storage medium may store thereon instructions that when executed by a machine result in performance according to any of the embodiments described herein.

At S310, an implementation registry and a computer processor of a build-independent software framework (e.g., does not require a specific IDE such as eclipse) may access information (from a build automation tool) that represents a custom adapter for an integration service. The integration service might be associated with, for example, a Software-as-a-Service or a Platform-as-a-Service. According to some embodiments, the build automation tool further includes build automation tool archetypes or templates. At S320, the system may automatically create the custom adapter via a build Application Programming Interface (“API”). The system may then automatically validate the created custom adapter via a validation API at S330. According to some embodiments, the build automation tool further includes a metadata generator to create metadata for the custom adapter required for User Interface (“UI”) integration. At S340, the system may arrange to deploy a concrete implementation of the custom adapter in the cloud computing environment as appropriate.

FIG.4is a more detailed block diagram associated with a cloud-based computing system400according to some embodiments. This example is associated with the APACHE MAVEN™ SOFTWARE build automation tool (e.g., for projects written in Java, C #, Ruby, etc.). Note, however, that embodiments might be associated with other build automation tools, such as Jenkins, Gradle, etc. The MAVEN™ build automation tool addresses how software is built and its dependencies and uses conventions for the build procedure (only exceptions need to be specified). An XML file describes the software project being built, its dependencies on other external modules and components, the build order, directories, required plug-ins, etc. The MAVEN™ build automation tool dynamically downloads Java libraries and MAVEN™ plug-ins from one or more repositories such as a MAVEN™ central410repository. The MAVEN™ central410may include MAVEN™ archetypes412to create different types of adapters. Developers can create either an adapter using an existing APACHE CAMEL™ SOFTWARE component, or they can create a new component from scratch. A metadata generator414may help create metadata for the adapter. The metadata is an integral part of a custom adapter which is required for User Interface (“UI”) configuration. An adapter validator416may validate the asterisks of the adapter project (and also the metadata) to find any errors. A builder418may build the final deployable subsystem bundle.

In this way, an adapter developer401may create adapters422,424in an IDE420(using the MAVEN™ central410) and, according to some embodiments, deploy adapters432,434in an integration platform430. The integration platform430may, for example, include an integration bus436to let business information flow between disparate applications across multiple hardware and software platforms.

FIG.5is a more detailed custom adapter architecture500in accordance with some embodiments. The system500includes an IDE-less framework520with a create-project API522, a build API524, a validate component526, and a deploy API528. An implementation registry530of the framework520may receive data from a central registry510(e.g., the MAVEN™ central410ofFIG.4). A concrete implementation using the MAVEN™ archetype550also accesses the implementation registry530and may include a MAVEN™ archetype plug-in service560, a create ADK project552, a build ADK project554, a validate ADK project556, and a deploy ADK project558.

Generally, an ADK framework may implement a method600as illustrated inFIG.6according to some embodiments. The flow charts described herein do not imply a fixed order to the steps, and embodiments of the present invention may be practiced in any order that is practicable. Note that any of the methods described herein may be performed by hardware, software, an automated script of commands, or any combination of these approaches. For example, a computer-readable storage medium may store thereon instructions that when executed by a machine result in performance according to any of the embodiments described herein.

At S610, the system may offer project template creation to an adapter developer. At S620, the framework may call for the validation of the project template. The system may then automatically generate metadata at Sf630. The validated project can then be built by the framework at S640. At S650, the system may optionally deploy the project to complete the method600(as illustrated by dashed lines inFIG.6).

In this way, embodiments may utilize the proposed framework to offer generic API usage by the framework owner. If they implement these APIs, the framework work will take care of creating IDE-independent modules. For example, embodiments may use a MAVEN™ archetype as the underlying construct to create an ADK project as appropriate. As a result, custom adapter development may be offered in an IDE-independent environment.

FIG.7is a custom adapter creation software framework display700according to some embodiments. The display700includes a graphical representation710or dashboard that might be used to manage a build-independent software framework (e.g., for a multi-tenant cloud computing environment). In particular, selection of an element (e.g., via a touchscreen or computer mouse pointer790) might result in the display of a popup window that contains more detailed data. The display700may also include a user selectable “Save” icon720to store custom adapter configurations and/or system mappings (e.g., to MAVEN™ central and/or an integration platform) and an “Update” icon722to adjust those values as appropriate.

Note that the embodiments described herein may be implemented using any number of different hardware configurations. For example,FIG.8is a block diagram of an apparatus or platform800that may be, for example, associated with the systems100,200,400, and500ofFIGS.1,2,4, and5, respectively (and/or any other system described herein). The platform800comprises a processor810, such as one or more commercially available Central Processing Units (“CPUs”) in the form of one-chip microprocessors, coupled to a communication device860configured to communicate via a communication network (not shown inFIG.8). The communication device860may be used to communicate, for example, with one or more developers824(e.g., via a communication network822), system administrators, etc. The platform800further includes an input device840(e.g., a computer mouse and/or keyboard to input, create and/or manage custom adapter information) and/or output device850(e.g., a computer monitor to render a display, transmit recommendations, and/or create reports about custom adapters, archetype templates, adapter designers, etc.). According to some embodiments, a mobile device and/or PC may be used to exchange information with the platform800.

The processor810also communicates with a storage device830. The storage device830may comprise any appropriate information storage device, including combinations of magnetic storage devices (e.g., a hard disk drive), optical storage devices, mobile telephones, and/or semiconductor memory devices. The storage device830stores a program812and/or build-independent framework engine814for controlling the processor810. The processor810performs instructions of the programs812,814, and thereby operates in accordance with any of the embodiments described herein. For example, the processor810may be associated with a cloud computing environment having an integration service (e.g., associated with a Software-as-a-Service or a Platform-as-a-Service). The processor810may include a build automation tool and a build-independent software framework coupled to the build automation tool. The build-independent software framework may access, via an implementation registry, information from the build automation tool that represents a custom adapter for the integration service. The processor810may then automatically create the custom adapter via a build API and automatically validate the created custom adapter via a validation API. The processor810can then arrange to deploy a concrete implementation of the custom adapter in the cloud computing environment. According to some embodiments, the software framework is “build-independent” because it does not require that an adapter designer use a particular IDE.

The programs812,814may be stored in a compressed, uncompiled and/or encrypted format. The programs812,814may furthermore include other program elements, such as an operating system, clipboard application, a database management system, and/or device drivers used by the processor810to interface with peripheral devices.

As used herein, information may be “received” by or “transmitted” to, for example: (i) the platform800from another device; or (ii) a software application or module within the platform800from another software application, module, or any other source.

In some embodiments (such as the one shown inFIG.8), the storage device830further stores a custom adapter data store900. An example of a database that may be used in connection with the platform800will now be described in detail with respect toFIG.9. Note that the database described herein is only one example, and additional and/or different information may be stored therein. Moreover, various databases might be split or combined in accordance with any of the embodiments described herein.

Referring toFIG.9, a table is shown that represents the custom adapter data store900that may be stored at the platform800according to some embodiments. The table may include, for example, entries identifying custom adapters that have be created for a cloud computing environment. The table may also define fields902,904,906,908,910for each of the entries. The fields902,904,906,908,910may, according to some embodiments, specify a custom adapter identifier902, a MAVEN™ archetype904, configuration values906, metadata908, and a status910. The custom adapter data store900may be created and updated, for example, when new integration adapters or scenarios are developed or updated, etc.

The custom adapter identifier902might be a unique alphanumeric label that is associated with the custom adapter for which configuration values have been defined for an integration scenario. The MAVEN™ archetype904might be associated with a template that was used to help create the custom adapter. The configuration values906define the integration component (custom adapter), and the metadata might include information about the custom adapter. The status910might indicate, for example, that a custom adapter has been deployed, is in the process of being developed, has been validated (or if any errors were detected during validation), etc.

Although specific hardware and data configurations have been described herein, note that any number of other configurations may be provided in accordance with some embodiments of the present invention (e.g., some of the information associated with the databases described herein may be combined or stored in external systems). Moreover, although some embodiments are focused on particular types of adapters, integration services, IDEs, build automation tools, etc., any of the embodiments described herein could be applied to other types of applications. Moreover, the displays shown herein are provided only as examples, and any other type of user interface could be implemented. For example,FIG.10illustrates a tablet computer1000providing a build-independent software framework display1010. The display1010might be used, for example, to create a custom adapter for a cloud computing environment. Moreover, the display1010might be used to update and/or create a concrete version of the adaptor via a “deploy” icon1020to provide a quick and easy way of adding new custom adapters for an integration service using a build (or IDE) independent framework.