This disclosure relates to unifying programming models in connectivity framework and, more particularly, using point-to-point communications in connectivity framework.
In many instances, a communication framework is used to connect applications to partners using one or more communication protocols. The protocols are related to various programming models. The programming models associated with various protocols have different features, for example, such as sequencing, routing, session handling, custom headers, update task handling, and others.
This disclosure describes systems, methods, apparatus, and computer-readable media for using point-to-point communication in a communication framework to unify programming models. In many instances, a communication framework allows applications to communicate with partners using various protocols, for example, web service (WS) protocol, exchange infrastructure (XI) protocol, and others. These protocols can have different features and require particular support from the communication framework. Conventionally, the communication framework supports multi-protocol communication using a process integration platform, which operates as an intermediate hub. The hub can be configured according to the local programming model or protocol and use a neutral format for adapting different protocols. The involved conversion and adaptation process can be replaced and improved using a unified programming model for WS protocol, XI protocol and other protocols communication. The unified programming model can enable partners and applications to communicate without reliance on a protocol switch
In one general aspect, a method for unifying programing models in connectivity framework can include receiving a message in a first protocol at a first computing system in the distributed computing environment. The message is associated with a connection request received from a second computing system in the distributed computing environment. In a communication framework of the first computing system, the first protocol is transformed into a second protocol of the message using a point-to-point communication of the communication framework. The message can then be output in the second protocol.
These and other embodiments can each optionally include one or more of the following features. In some embodiments, a connection request from an application can be received and process using a web service proxy at runtime. The message can be dispatched in the second protocol to a number of connectors. The first message can be outputted in the second protocol to an external partner via the number of connectors. In some embodiments, a connection request from an external partner with a number of connectors is received. The number of connectors can be adapted to various protocols. The connection request is processed using a web service proxy at runtime. The message can be received at one of the connectors in the first protocol. The message is associated with the connection request. The message can be outputted in the second protocol to an application.
Some other features may include the first protocol including a web service protocol and the second protocol including one of an exchange infrastructure protocol, an HTTP protocol, a JMS protocol, an SMTP protocol, a TCP protocol, or an RFC protocol. In some implementations, the first protocol can be an XI protocol and the second protocol can be one of a WS protocol, an HTTP protocol, a JMS protocol, an SMTP protocol, a TCP protocol, or an RFC protocol.
Various embodiments of a unified programming model according to the present disclosure may have one or more of the following features. For example, the unified programming model can use point-to-point (P2P) communication via various protocols (e.g., WS, XI, etc.). In some embodiments, a communication partner can be an exchange infrastructure platform, so that the communication is, from the backend perspective, a P2P communication, and is a mediated communication from an end-to-end perspective. The unified programming model can perform communication connection in a synchronous or asynchronous manner, provide different service qualities (e.g., best effort, exactly once, exactly once in order), and support transactional behavior. In some specific aspects, the unified programming model can support endpoint compatibility, for example, service endpoint path for XI connectivity.
These general and specific aspects may be implemented using a device, system or method, or any combinations of devices, systems, or methods. For example, a system of one or more computers can be configured to perform particular actions by virtue of having software, firmware, hardware, or a combination of them installed on the system that in operation causes or cause the system to perform the actions. One or more computer programs can be configured to perform particular actions by virtue of including instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions. The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.
This specification describes systems, methods, apparatus, and computer-readable media for using point-to-point communication in a communication framework to unify programming models. In many instances, a communication framework allows applications to communicate with partners using various protocols, for example, web service (WS) protocol, exchange infrastructure (XI) protocol, and others. These protocols can have different features and require particular support from the communication framework. Conventionally, the communication framework supports multi-protocol communication using a process integration platform, which operates as an intermediate hub. The hub can be configured according to the local programming model or protocol and use a neutral format for adapting different protocols. The involved conversion and adaptation process can be replaced and improved using a unified programming model for WS protocol, XI protocol and other protocols communication. The unified programming model can enable partners and applications to communicate without reliance on a protocol switch.
At a high level, the application system 103 can receive inbound communication from the partner 175 or send outbound communication to the partner 175 via the network 148. The inbound and outbound communication can include content of various protocols, such as WS protocol, XI protocol, and others. The application system 103 includes an application 127 and a unified programming model framework 130. The application 127 can use the unified programming model framework 130 to communicate with the partner 175 in various protocols, without conversion to a neutral format (e.g., at a hub where a neutral format for different protocols can be used). The unified programming model framework 130 can offer compatible communication using point-to-point (P2P) communication in various protocols (e.g., XI 3.0 protocol). Referring first to the partner 175, the partner 175 includes a memory 187, a processor 181, a partner application 184, and an interface 178.
The memory 187 of the partner 175 stores data and program instructions, rules associated with inbound and/or outbound communication. The memory 187 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. The memory 187 may store various objects, object models, and data, including classes, frameworks, applications, backup data, business objects, jobs, web pages, web page templates, database tables, process contexts, repositories storing services local to the partner 175, and any other appropriate information including any parameters, variables, algorithms, instructions, rules, constraints, or references thereto associated with the partner 175 and its functionality. In some implementations, including a cloud-based system, some or all of the memory 187 may be stored remote from the partner 175, and communicably coupled to the partner 175 for usage. Some or all of the elements may be stored external to the memory 187, for example, over an internet storage.
The processor 181 performs analysis and data extraction related to the partner application 184. Although illustrated as a single processor 181 in the partner 175, two or more processors may be used in the partner 175 according to particular needs, desires, or particular embodiments of environment 100. The processor 181 may be a central processing unit (CPU), a blade, an application specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or another suitable component. Generally, the processor 181 executes instructions and manipulates data to perform the operations of the partner 175 and, specifically, the functionality associated with the partner application 184.
The GUI 190 associated with the partner 175 includes a graphical user interface operable to, for example, allow the partner 175 to interface with at least a portion of the partner application 184, and/or the associated operations and functionality. Generally, the GUI 190 provides the particular user with an efficient and user-friendly presentation of business data provided by or communicated within the system. The GUI 190 may include a plurality of customizable frames or views having interactive fields, pull-down lists, and buttons operated by the user. For example, the GUI 190 may provide interactive elements that allow a user to interact with a particular component within and/or external to environment 100. Different portions of the corresponding component's functionality may be presented and accessible to the user through the GUI 190, such as through the partner application 184 (e.g., a web browser).
Generally, the GUI 190 may also provide general interactive elements that allow a user to access and utilize various services and functions of a particular component. In some instances, the partner application 184 may be used to access various portions of the application system 103. In some instances, the partner application 184 may be an agent or client-side version of the application 127 or other suitable component of the application system 103. The GUI 190 may present the information of the partner application 184 for viewing and interaction. In general, the GUI 190 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 190 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.
Turning now to the application system 103, in general, the application system 103 is any server or system that stores, manages, and executes functionality associated with the application 127 and the unified programming model framework 130. Additionally, the application system 103 may execute one or more applications 127. For example, each application system 103 may be a Java® 2 Platform, Enterprise Edition (J2EE)-compliant application server that includes Java® technologies such as Enterprise JavaBeans® (EJB), J2EE Connector Architecture (JCA), Java® Messaging Service (JMS), Java® Naming and Directory Interface (JNDI), and Java® Database Connectivity (JDBC). In some instances, each application system 103 may store a plurality of various applications; while in other instances, the application system 103 may be a dedicated server meant to store and execute the unified programming model framework 130 for a particular platform or application and its related functionality. In some instances, the application system 103 may include a web server or be communicably coupled with a web server, where one or more of the applications 127 associated with the application system 103 represent web-based (or web-accessible) applications accessed and executed through requests and interactions received on the partner 175, executing a partner application 184 operable to interact with the programmed tasks or one or more applications 127.
At a high level, the application system 103 includes an electronic computing device operable to receive, transmit, process, store, or manage data and information associated with the environment 100. The application system 103 illustrated in
As used in this present disclosure, the term “computer” is intended to encompass any suitable processing device. For example, although
In the illustrated implementation of
The interface 106, similar to the interface 178, is used by the application system 103 to communicate with other systems in a client-server or other distributed environment (including within environment 100) connected to the network 148 (e.g., one of the partners 175, as well as other systems communicably coupled to the network 148). The interface 106 generally includes logic encoded in software and/or hardware in a suitable combination and operable to communicate with the network 148. More specifically, the interface 106 may include software supporting one or more communication protocols associated with communications such that the network 148 or the interface's hardware is operable to communicate physical signals within and outside of the illustrated environment 100.
Generally, the application system 103 may be communicably coupled with the network 148 that facilitates wireless or wireline communications between the components of the environment 100 (i.e., between the application system 103 and one or more partners 175), as well as with any other local or remote computer, such as additional clients, servers, or other devices communicably coupled to the network 148, including those not illustrated in
The network 148 may be all or a portion of an enterprise or secured network, while in another instance, at least a portion of the network 148 may represent a connection to the Internet. In the illustrated example, at least a portion of the network 148 includes a portion of a cellular or mobile data network or other network capable of relaying SMS messages. In some instances, a portion of the network 148 may be a virtual private network (VPN). Further, all or a portion of the network 148 can include either a wireline or wireless link. Example wireless links may include 802.11/b/g/n, 802.20, WiMax®, and/or any other appropriate wireless link. In other words, the network 148 encompasses any internal or external network, networks, sub-network, or combination thereof operable to facilitate communications between various computing components inside and outside the illustrated environment 100. The network 148 may communicate, for example, Internet Protocol (IP) packets, Frame Relay frames, Asynchronous Transfer Mode (ATM) cells, voice, video, data, and other suitable information between network addresses. The network 148 may also include one or more local area networks (LANs), radio access networks (RANs), metropolitan area networks (MANs), wide area networks (WANs), all or a portion of the Internet, and/or any other communication system or systems at one or more locations.
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 and non-transitory 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 application 127 is any application, program, module, process, or other software that may execute, change, delete, generate, or otherwise manage information associated with a particular application system 103. In particular, business processes communicate with other users, applications, systems, and components to send, receive, and process events. In some instances, a particular application 127 may operate in response to and in connection with one or more requests received from an associated partner 175 or other remote client. Additionally, a particular application 127 may operate in response to and/or in connection with one or more requests received from other application applications 127 external to the application system 103. In some instances, the application 127 may request additional processing or information from an external system or application. In some instances, one of more of the application applications 127 may represent a web-based application accessed and be executed by remote partners 175 via the network 148 (e.g., through the Internet, or via one or more cloud-based services associated with the application 127). Further, while illustrated as internal to the application system 103, one or more processes associated with a particular application 127 may be stored, referenced, or executed remotely. For example, a portion of a particular application 127 may be a web service that is remotely called, while another portion of the application 127 may be an interface object or agent bundled for processing at a remote system (not illustrated), a particular partner 175 (e.g., the partner application 184). Moreover, any or all of a particular application 127 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 particular application 127 may be executed or accessed by a user working directly at the application system 103, as well as remotely at a corresponding partner 175.
The proxy runtime 129 can be a proxy or a proxy server using certain protocols (e.g., WS, XI, HTTP, etc.) to relay request from clients (e.g., the partner 175) seeking resources from the application system 103 or other servers. In some implementations, the proxy runtime 129 can perform a role similar to a network switch in linking the partner 175 with the application system 103. The proxy runtime 129 may filter traffic by IP address or protocol at runtime. For example, the proxy runtime 129 can be configured to allow only certain protocol communication to pass through. If a request can be validated by the filter, the proxy runtime 129 can provide the requested resource by connecting to the application system 103 and requesting the service on behalf of the partner 175. In some implementations, the proxy runtime 129 can serve as an intermediate caching to accelerate service requests by retrieving content saved from a previous request made by the partner 175 or other clients.
The unified programming model framework 130 includes a dispatcher 132, a web service runtime connector 133, an XI protocol connector 136, and other protocol connectors 142. The unified programming model framework 130 can enable point-to-point communication between the partner 175 and the application 127. In some implementations, the unified programming model framework 130 can be a simple object access protocol (SOAP) connectivity framework. The SOAP connectivity framework can enable extensibility for security and WS-routing among extensions under development. The SOAP connectivity framework can be used over various transport protocols such as WS, XI, HTTP, SMTP, TCP, and others, for neutrality. In addition, the SOAP can allow for various programming models and therefore be used to unify different programming models in the connectivity framework. In a general aspect, the SOAP architecture can include layers of specifications, such as for message format, message exchange patterns, underlying transport protocol bindings, message processing models, and protocol extensibility.
The dispatcher 132 is included in the unified programming model framework 130 for dispatching programming models to specific protocol connectors. For example, the dispatcher 132 can dispatch inbound or outbound communications with WS connectors, XI connectors, and other protocol connectors such as HTTP, SMTP, JMS, or TCP. Two example embodiments are illustrated in
The web service runtime connector 133 connects WS protocol messages with the dispatcher 132 for communication. The web service may use Extensible Markup Language (XML) messages that follow the SOAP standard. In such implementations, there can be a machine-readable description of the operations offered by the service written in the Web Services Description Language (WSDL). The latter may not be a requirement of a SOAP endpoint, but it can be a prerequisite for automated client-side code generation in many Java and .NET SOAP frameworks (frameworks such as Apache Axis2, Apache CXF, and Spring being notable exceptions). Some industry organizations, such as the WS-I, mandate both SOAP and WSDL in their definition of a Web service. The web service runtime connector 133 can provide point-to-point protocol for programming models.
The XI protocol connector 136 connects XI protocol messages with the dispatcher 132 for communication. The XI protocol connector 136 can include a point-to-point connection 139 to enable point-to-point communication. In some implementations, the application system 103 can include an exchange infrastructure to support the XI protocol connector 136. The exchange infrastructure can include an integration server, a local integration engine, an integration builder repository and directory, a runtime workbench, a system landscape directory, an adapter engine and framework, a proxy runtime and a web start. The XI protocol connector 136 can receive outbound communication from the dispatcher 132 and send out messages in XI protocol, or receive inbound messages in XI protocol and send the communication to the dispatcher 132. The other protocol connector 142 can connect messages of various protocols, (e.g., HTTP, JMS, SMTP, TCP, among others) with the dispatcher 132 for communication.
The unified programming model framework 130 can provide compatibility to the application system 103 according to certain criteria. For example, the criteria can be quality of service, which can be measured using best effort, exactly once, exactly once in order, and other aspects. The criteria can also include synchronous and asynchronous communication, as well as transactional behavior. End point compatibility can also be included. For example, service endpoint path for XI connectivity can be kept stable compared with other process integration methods.
The memory 112 of the illustrated application system 103 stores the application database 125, and other data and program instructions, as well as metadata associated with unified programming model framework 130. The memory 112 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. The memory 112 may store various objects, object models, and data, including classes, frameworks, applications, backup data, business objects, jobs, web pages, web page templates, database tables, process contexts, repositories storing services local to the application system 103, and any other appropriate information including any parameters, variables, algorithms, instructions, rules, constraints, or references thereto associated with the purposes of the application system 103 and its functionality. In some implementations, including a cloud-based system, some or all of the memory 112 may be stored remote from the application system 103, and communicably coupled to the application system 103 for usage. Specifically, memory 112 can store unified programming model framework 130. Some or all of the elements illustrated within memory 112 may be stored external to the memory 112. These items are made accessible to the unified programming model framework 130.
Returning to the partner 175 illustrated in
As used in this disclosure, each partner 175 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 partner 175 may include 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 one or more partner applications 184, and/or the partner 175 itself, including digital data, visual information, or the GUI 190. 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 partner 175 through the display, namely, the GUI 190. The client's processor 181, interfaces 178, and memory 187 may be similar to or different from those described in connection with the other components illustrated in
The web service proxy 220 can instantiate a proxy, for example, to obtain certain add-on objects for certain server features. The proxy may be associated with the protocol carried with the request or message sent from the application 210. In some implementations, the carried protocol can be a WS protocol, XI protocol, among others. In some implementations, HTTP protocols or other transport protocol may be used on a lower level, for example, binding for transport means of the WS protocol and the XI protocol. After the proxy is called at the web service proxy 220, the request or message is sent to the connectivity framework 230, which includes a dispatcher 240 and a number of connectors 235a, 235b, and 235c. The dispatcher 240 can switch the request or message from the original protocol to other protocols. In some implementations, the dispatcher 240 uses point-to-point communications for the switching operation. For example, the dispatcher 240 can switch WS protocol with XI protocol and send the information to the WS outbound connector 235a and/or to the XI P2P outbound connector 235b. In some other instances, the dispatcher 240 can switch other protocols with WS protocol or XI protocol and send the information to the other protocol connector 235c. The connectors 235a, 235b, or 235c then can connect with external partners through connectors 245a, 245b, and 245c, respectively.
The communications from the WS inbound proxy is then received by the API 280 for unifying WS communication. The API 280 can be the same as or similar to the API 215. The Inbound communication can then reach the application 285 in a standard form. The API 280 can be a source code-based specification intended to be used as an interface by software components to communicate with each other. The API 280 may include specifications for routines, data structures, object classes, and variables. The API 280 may take various forms, including POSIX, Windows API, libraries of a programing language, or others. The request or message may describe communication interface, for example, operation to be called, exchange message type, metadata description, among others.
At 440, the message sent from the application is dispatched to outbound connectors in the switched protocol. For example, the protocol may be switched from a WS protocol to a XI P2P protocol, or to other protocols such as HTTP, TCP, SMTP, JMS, RFC, REST-based communication, among others. The switching process is performed within a dispatcher module of the connectivity framework, and does not require a central hub that uses a neutral format for conversion. The connectivity framework offers point-to-point communication to improve the efficiency of the connection operation. At 450, the communication is output to an external partner in a protocol conforming to the external partner's requirement. The connectivity framework can be compatible with existing external partner systems that have connectors for communications using various protocols.
A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made. For example, other methods described herein besides or in addition to that illustrated in