Skip to Main Content

Cloud Platform

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Soaring through the Clouds – Part 4: Integration Cloud Service to Connect the Dots

Bob Rhubart-OracleMay 24 2016 — edited Aug 5 2016

Part 4 in the Soaring through the Clouds article series, written by Oracle ACE Director Lucas Jellema, focuses on the role Oracle Integration Cloud Service plays in a sophisticated demo designed to allow users to nominate and vote on music artists they want to perform at a special concert..


By Lucas Jellema ACED.gif

Article Series Table of Contents
  1. Integration Cloud Service to Connect the Dots

To make systems work together, they need to understand each other. A little help is often needed to get the conversation going. In our end-to-end cloud integration flow, we have various interactions to deal with—interactions that we need Oracle Integration Cloud Service (ICS) to mediate.

For example: Oracle IoT Cloud Service (IoTCS) publishes messages in a format we cannot (easily) control to some REST endpoint that we can specify. Oracle Process Cloud Service (PCS) exposes a SOAP Web Service to start a human workflow, expecting a request message format it dictates itself. In order to have a PCS process instantiated based on a finding from IoT CS, we need ICS to receive the message from IoT CS and turn it into a call of PCS’s SOAP interface. This allows communication from IoT CS to PCS, without these two actually knowing about each other.

image001.png

ICS plays a similar role in the connection from PCS to SOA CS, for checking whether a proposal for a specific artist already exists and to have an approved proposal registered in the database. ICS has dozens of built-in adapters that facilitate easy integration with many SaaS applications and popular internet platforms and social media, including Facebook, Gmail, Evernote, LinkedIn and Twitter. This last adapter is leveraged in our integrated cloud demo when a Tweet is published based on a request from SOA CS after registering an enriched, approved proposal. The next figure visualizes this role played by ICS in the cloud demo:

image002.png

Configuring an Integration in ICS

ICS exposes integrations to consumers. In our case, we need integrations for the flows to PCS, to SOA CS and to Twitter. An integration in ICS consists of two connections: the inbound connection that gets exposed to the consumer and the outbound connection that links to the destination. At the heart of an integration is a request mapping—a translation between the inbound message received by ICS to the message routed to the destination—and frequently a response mapping—a similar translation of the message returned to ICS from the destination to the message returned to the original invoker.

In the next figure, we see the integration ProposeNewActForOOW16-SOAP that PCS invokes to submit an approved artist proposal and that routes that proposal to SOA CS. Note that PCS and the developer configuring the process in PCS do not necessarily know anything about SOA CS; they deal only with ICS.

image003.jpg

This integration uses two separate connections that were registered earlier:

  • ProposeAct_SOAP_Inbound: a SOAP interface created with PCS in mind, to which a request message with a new approved artist proposal can easily be sent at the end of the PCS workflow
  • SubmitActProposal_outbound: a connection to the SOAP Web Service exposed from SOA CS that triggers a SOA Composite that will enrich the artist details and record the proposal in the database [as a service instance]

image004.jpg

Because the two interfaces linked together in this integration are already fairly similar, the mappings are pretty straightforward. The next figure shows the mapping for the inbound message (the one we expect PCS to send for an approved proposal) to the format expected by the SOA CS service that this integration invokes. The mapping for the response flow is similar.

image005.jpg

Each element mapping can be a simple copy of the value from a source element to its target counterpart. Additionally, mappings can use expressions and functions to manipulate and concatenate values during the mapping.

Note that the mapping created in this visual mapper is translated by ICS to an XSLT document. In order to apply advanced transformation logic that cannot be created in this visual mapper, the integration can be exported as a zip file. This archive contains the XSLT documents for each of the mappings; they can be extracted and manipulated in a text editor or an IDE such as JDeveloper. An enhanced XSLT file can be imported into ICS by clicking on the mapping icon in the integration flow designer, resulting in an enriched mapping. From that moment on, this mapping can no longer be edited in ICS.

ICS allows us to monitor the traffic that it handles. Each interaction is logged. By specifying an integration’s business identifiers for tracking, we instruct ICS to track meaningful identifiers that provide insight into the nature of each interaction. The next figure shows how three identifiers are configured to record the values of artistName, numberOfVotes and imageURL from the source message that kicks off the integration. Currently, business identifiers in ICS can be extracted only from the raw source message.

image006.jpg

And Ac[tiva]tion

When the definition of the integration is complete, it has to be activated. Activation is similar to deployment; the inbound connection is published and can be accessed by external consumers, such as PCS in our integration flow. To try out the integration, we can also invoke it from other Web Service clients such as SoapUI.

The next screenshot illustrates a test call—with a proposal to have Bruce NewJersey perform—from SoapUI to the ICS integration that routes the proposal to SOA CS.

image007.png

The call to ICS results in a number of things:

  • A response with the assigned identifier (661) from SOA CS
  • A message published on Twitter from within SOA CS (also through ICS)
  • An invocation trace in the ICS Monitor (see below)

The monitoring tab in ICS can be opened to get insight in all recent ICS activity, successful and otherwise. In the screenshot below, we can see two recent interactions. The top one was started first and completed last, initiated by the call from SoapUI with the proposal for Bruce NewJersey. The second tracked message is the trace of the callout to Twitter from within SOA CS that took place before the response to the submission of the proposal was returned from SOA CS.

image008.png

When we drill down on the instance for the ProposeNewActForOOW2016-SOAP integration, we see a visual overview of the progress of the interaction as well as the values for all three business identifiers, as shown in the figure below.

The corresponding tweet was published on Twitter through the account configured through the ICS Cloud Adapter for Twitter.

image010.png

Conclusion

Integration Cloud Service is the ultimate decoupler. In our demo scenario, ICS is the linking pin between the worlds of Things (IoT CS) and Humans (PCS) and orchestration (SOA CS) and SaaS/Social Media (Twitter). Each of these worlds does not necessarily talk to the others very smoothly; and thanks to ICS, they do not really have to. Each world’s inbound interface is represented in ICS by a Connection and each route from one world to another is realized through an Integration. Mappings are configured declaratively in ICS to translate from one world’s language to another’s. The dozens of out-of-the-box cloud adapters in ICS speed up the creation of otherwise potentially complex integrations. The business identifiers make it easy to track the integration traffic in the monitor and act in case of errors.

ICS is not perfectly suited for complex transformations or integrations that involve asynchronous interactions, enrichments and orchestrations. Currently, even when a connection is configured to not enforce security constraints, calls to ICS inconveniently have to carry authentication headers for a valid ICS account. To overcome some of the connection limitations in the ICS instance we could employ for the demo, we also used a small proxy component, running in a node.js application container. We expect use of this proxy to shortly become redundant.

Continue to Part 5:

About the Author

Oracle ACE Director Lucas Jellema is solution architect and CTO at AMIS, based in the Netherlands. An Oracle, Java, and SOA specialist, he works as a consultant, architect, and instructor in diverse areas such as Database & SQL, Java/Java EE, SOA/BPM and PaaS and SaaS Cloud Solutions. The running theme through most of his activities is the transfer of knowledge and enthusiasm (and live demos). Lucas is a well-known speaker at Oracle OpenWorld, JavaOne and various Oracle User Group conferences around the world. His articles have appeared in OTN, OTech and the AMIS Technology Weblog, and he is the author of Oracle SOA Suite 11g Handbook (2014, McGraw Hill) and the Oracle SOA Suite 12c Handbook (2015, McGraw Hill).


This article represents the expertise, findings, and opinion of the author. It has been published by Oracle in this space as part of a larger effort to encourage the exchange of such information within this Community, and to promote evaluation and commentary by peers. This article has not been reviewed by the relevant Oracle product team for compliance with Oracle's standards and practices, and its publication should not be interpreted as an endorsement by Oracle of the statements expressed therein.


Comments

Glen Conway

Presumably the Query Results tab in 3.2 did not have a problem when you originally installed it. Possibly the loss of highlighting and context menu is due to corruption of user settings.  And if you migrated any corrupt settings to newer versions, that could be the problem with whatever 18.x version you have.  Otherwise you might suspect a mismatch between the versions of SQL Developer, Java, and some native driver on the OS.

Assuming Windows, exit and restart SQL Developer after renaming the system<yourSqlDevVersion> folder to something else in C:\Users\<yourUserID>\AppData\Roaming\SQL Developer.  That will create a fresh user settings folder, either with default values or values migrated from some earlier version, depending on your choice.

Final advice:  don't use extremely old versions of software unless you have a really good reason.

Cheers

User_EKWC5

Thanks Glen for the reply

I was using the version 3.2.09  earlier, and faced issue their, so upgraded to Version 18.4.0.376, Build 376.1900 which resolved the issue for few months. But again suddenly started facing the same problem V18 as well.

So uninstalled V18 and was trying to check if V3 has the issue or not by reinstalling V3.

I am using Windows. I tried to rename the directory as suggested by you, and started SQL Developer, but no luck.

I have already tried uninstalling V3 and reinstalling SQL developer V18 and renaming the directories in AppData\Roaming\SQL Developer but no luck.

Currently i have V18 installed on my machine.

Any other option you think?

Glen Conway
Answer

It is not clear to me whether your efforts at reinstalling V3 / V18 included migrating settings from a prior version or using fresh default settings.

Whenever there are issues with a new version with migrated settings, I always Export Connections from the prior version's Connections navigator tree, delete the user settings folder for the new version, then start up the new version, avoid migrating settings, and Import Connections from the prior version.

If that's not what you've already done, then try that, or even get the latest 19.4 and avoid migrating settings.

Another possibility could be (from the SQL Developer main toolbar) using Window > Reset WIndows To Factory Setting.

Good luck

Marked as Answer by User_EKWC5 · Sep 27 2020
User_EKWC5

Hey Glen,

I have tried to uninstall V18, removing AppData\Raoming\SQL Developer .. files and with both options i.e. importing the settings from previous version and using fresh default settings, but no luck .

Also i already tried the Factory reset option in past and also today i tried it but that also does not work.

I am trying with V1.5 now as thats the version where i can see the query results pane is accessible and i can copy something from there.

Thanks,

Glen Conway

Wow, V1.5, that really is a piece of history! The suggestion to use fresh, default user settings really should have worked. Just out of curiosity, what is your OS and OS version?

User_EKWC5

I installed V19 as you suggested, i did not import the settings from previous installations and that resolved the problem. Thanks.

By the way i am using Windows 10, 64 bit OS.

Glen Conway

Wonderful!  Really glad to know you are not mysteriously being blocked from using the latest / greatest SQL Developer.

Edit:  If the problem eventually comes back, that may suggest you have a pattern of use that leads to corruption of the user settings.  But hopefully not.

User_EKWC5

How can i mark this thread as Answered?

Glen Conway

You cannot do it from the Inbox, you actually have to open the thread:  See:

1 - 9

Post Details

Added on May 24 2016
0 comments
1,110 views