Saturday, September 27, 2014

Oracle SOA Suite 12c New Features Summary

Oracle released SOA Suite 12c (12.1.3) bringing a further integration between components and a bunch of new features. Most of them are quite spectacular, but at the same time all are useful. A release to persuade potential buyers and a lot more to please users of the product.
This blog will go through the most important new features in summary and will reference the blogs that will go through the new features per technology. This blog will list the most game changing feature(s) per technology/tooling; Jdeveloper, SOA Suite (SCA Composites), Service Bus (SB), Enterprise Manager, OEP, Managed File Transfer (MFT), etc.
Disclamer: Screenshots are made in Beta version of SOA Suite 12c, so may differ in final version!

Developer Productivity & Integration

Developer installer with integrated server

To kick-start developing with 12c, ’30 minutes to Hello World’, Oracle created a single download for JDeveloper and Database, Weblogic and  SOA Suite. It’s one single package which include JDeveloper, a integrated Weblogic service with SOA Suite (including Service Bus), JavaDB (for it’s Database) and the Enterprise Manager.

Integration of SOA and SB development

In 11g the development environment of the SB is in OEPE (Eclipse), while the SCA Composite development environment is done in JDeveloper. In 12c both SB and SCA development is done in JDeveloper. For SB the analogy of the SCA environment has been used by renaming a ‘Proxy’ to ‘Proxy Services’ (‘Exposed Services’ in an SCA composite) and a ‘Business Service’ to ‘External References’ (same as in a SCA composite) and visually show them as swim lanes, see figure ‘SB development in JDeveloper’ below.
SB development in JDeveloper
SB development in JDeveloper

New technology adapters for Mobile Enablement, Integrated Caching and Cloud Integration

In this release of SOA Suite a lot of new adapters are added. For Mobile Enablement support is added for REST/JSON, The cache data into or to retrieve data from Coherence a Coherence Adapter is added and for Cloud Integration like Salesforce.com and ReadyNow there are separate cloud adapters available. There is also an adapter to connect to a LDAP service (put, get, list..) and an updated UMS adapter.
12c New Technology Adapters
New Technology Adapters
For a more in-depth list of Developer Productivity and Integration features check this dedicated blog, which also includes a first look at the new Enterprise Manager, integrated debugger and SOA tester.

SOA Suite (SCA Composites)

Kick-start an SCA Composite using templates

In 12c it is easier then ever to re-use at all levels within a SCA composite. Using the build-in template support you can kick-start a SCA Composite or add reusable components. There are three types of templates; SOA Project, Component and Custom Activity template. Templates are fully editable, one you apply them to you SCA Composite or BPEL component it is part of that composite or component. When you create a template all dependencies (partnerlinks) are also part of the template.
SOA Suite SCA Templates
Templates in SCA Composite

Re-use of BPEL code using Sub-processes

Sometimes in BPEL you will do the same thing on multiple places within the same BPEL process. For futher re-use of code this release of SOA Suite 12c introduces BPEL Sub-processes. Sub-processes allow certain business logic to be made reusable.  There are two types; standalone and inline. Inline Sub-processes permits access to data (variables) of the parent process, but with a standalone Sub-process the data needs to be assigned. Sub-processes are here to improve performance (faster rendering of only entity in question) and manageability (modular approach) of BPEL processes.

Updated XSLT mapper and new XQuery support (including own mapper)

The choice for the developer is going to be tough, use XSLT of XQuery. In this release Oracle 100% XQuery 1.0 support with it’s own mapper, but also updated the XSLT mapper with some high requested features. BPEL even has a dedicated activity to use XQuery in your BPEL code for transformations.  The XQuery mapper has support for XPath 2.0 and user defined functions. The mapper is really user friendly and it’s made consistent with the XSLT mapper interface. The mapper also has an integrated Test framework and is build for reuse in both SOA & Service Bus. The update XSLT mapper now has a better support for complex stylesheets with multiple templates, user defined functions (also recursive functions) and you can see the XSLT execution sequence.
12c XQuery Mapper
XQuery Mapper in JDeveloper
For a more in-depth list of SOA Suite (SCA Composite) features check this dedicated blog, which also includes new BPEL activities, Fault Policy editor and Encrypt/Decrypt Personal info.

Service Bus (SB)

Splitting Proxy from Pipeline

Because a SB project is more like a SCA Composite (same overview) the Proxy is split from the Pipeline. This means that the Proxy and the Pipeline are two individual things. With this concept multiple Proxies can be wired to one Pipeline. Say you have a “Any XML” Pipeline, you can process the data from both Proxies (i.g. File adapter and JMS Queue). It is also possible in the IDE to wire a pipeline to a pipeline directly or create a business service from a proxy.

Create a REST service based on a Pipeline

One of SOA Suite 12c’s pillar is Mobile Enablement. You can expose a Pipeline as a REST service. When doing it creates a REST binding just like in a SCA Composite. In the wizard you can assign specific Resource Paths and Operation for the operations of the Pipeline. Downside is that you can only expose Pipelines that have a WSDL interface.

Kick-start an Service Bus (SB) project using templates

Just like SOA Suite’s SCA Composites the SB also supports the use of templates. But it works a little different. Templates are Pipeline-based, this means that you can select a template when creating a new Pipeline. There are two types of templates; Unlinked, which is a copy of the template, and Linked, Pipeline stays connected to template. In the template you can use Placeholders so permit changes to that part of the Pipeline. If the Pipeline is linked to a template and the template is changed the linked Pipeline will inherent these changes. You create a template pipeline, instead of a normal Pipeline and place it in a centralized project or in the MDS for re-use.
12c SB Templates
SB template with placeholder
For a more in-depth list of SOA Suite (SCA Composite) features check this dedicated blog, which also includes MDS support, XSLT support, new web-based Composer and Native Format Translation.

New and updated product releases

With the release of SOA Suite 12c the usual suspects are also released i.g. BAM and OEP, but can also bring something new.

Brand new: Managed File Transfer (MFT) 12c

The 12c release of Fusion Middleware brings us a brand new product called Managed File Transfer abbreviated as MFT . Last year I already had the pleasure to do a presentation about it at OpenWorld together with productmanager Dave Berry. MFT is its own product in the FMW 12c family and runs on its own managed server. It is intended for receiving and sending large files (through 500GB+) and is a solution for removing binary files from a SOA transaction i.e. the SOAP message does not contain the binary file any more.
There is a growing problem with FTP in the enterprise. FTP can have a lack of control, visibility, security & reliability. Such problems can be the uncontrolled proliferation of FTP servers & clients, no global visibility into exchange of crucial data files (including customer data) and that they’re not integrated with enterprise security standards.
Managed File Transfer is a simple and secure End-to-End Managed File Gateway. The main purpose of MFT is transferring files between a source and one or more targets. The core is based on a “embedded” sFTP/SSH service and is optimized for large files and supports HA cluster, PGP encryption, auditing and monitoring of files. Transfers are easily extensible using the pre/post processing framework.
It integrates with (s)FTP, File, B2B, ODI, Healthcare and SOA, B2B and webservices (support for inline payload, attachment and pass-by-reference). MFT runs as an application on WebLogic 12c and has a lightweight Web based Design Time interface to easily build, edit and deploy end-to-end transfers and a Run Time interface to monitor running / failed transfer instances.
MFT 12c: create a transfer between a source and target
MFT 12c: Create a transfer between a source and target
Some additional characteristics are built-in scheduling, separate installable FTP proxy, ZIP (de)-compression, callouts (archive, delete, custom), JDeveloper MFT binding and support for pausing, resuming & resubmitting transfers.
For more detailed information check out the OOW presentation on MFT: http://slidesha.re/16ZiCa8

Brand new: Enterprise Scheduler Service (ESS) 12c

This release brings another new product to the FMW 12c family. Enterprise Scheduler Service abbreviated as ESS. ESS is part of the SOA Suite license and with it you can schedule jobs (using job metadata modeling). Jobs can be created and scheduled through the EM, but there is also a Java API. Does this replace Quartz? No, SOA Suite still uses it internally (i.g. wait activity in BPEL).
ESS 12c: Schedule jobs using EM
ESS 12c: Schedule jobs using EM
ESS 12c can call Enterprise JavaBeans (EJB), PL/SQL (procedures/functions), Java and WebServices (SCA/SB and Sync/Async with OWSM). ESS keeps track of dependency management, conflict resolution, prioritization, clustering, processor allocation and throttling.
What can it do for SOA? 
ESS support the scheduling of SCA Composites and SB Proxy services. It has prebuild jobs for initiating, activating and deactivating SOA and Service Bus components (i.g. activate DB adapter between specific time frame). ESS can schedule bulk error notifications to the dashboard (in EM) or to other alerting channels and bulk operations for fault management. With this fault recovery management ESS can automatically disable adapters and re-process faults in a controlled way.
ESS is automatically installed as part of SOA Suite, Service Bus and MFT. Deployment is optional in SOA Suite, Service Bus but required in MFT. One thing to take in account ESS only supports weblogic and oracle DB in 12c. ESS can be deployed to SOA/Service Bus cluster or a separate cluster in domain using the domain configuration wizard.

Business Activity Monitor (BAM) 12c

BAM 12c is one mayor upgrade and is mostly rebuilt from the ground up.  This version has Multi-browser support including Mobile support, so your dashboard will look and act the same on different devices and browsers. In the near future BAM will get a native App (IOS and Android). BAM implements a more advanced Security model using OPSS (Oracle Platform Security Services) to secure the data it collects.  BAM now support a hybrid integration of CQL and SQL, these both query languages can be used together to collect data from different sources. It uses Coherence for report and metadata cache.  It has better integration with SOA Suite and BPM Suite because both use the same Uniform Start Schema and can export the data during the execution of processes to BI to allow continuous monitoring.  Also a new feature in 12c is that BAM now support a Active-Active High Availability modes so can run on a cluster.
Continuous monitoring can be done in three ways, Real Time, One Time and Scheduled. It can also correlates Business Events that are streamed using OEP. BAM supports a side-by-side analysis between historical BI data ans operation data. There is even a special BAM dashboard that can be embedded into WebCenter Pages. The new dashboards comes more richer out-of-the-box and there is a more extensive catalog with Metrics i.g. SOA/BPM process performance and Human Workflow / Task performance. The new dashboards have updated geomap, tree map, watch list, shatter chart and bubble chart components.
BAM 12c: Analytics in BPEL
BAM 12c: Analytics in BPEL

Oracle Event Processing (OEP) 12c

Just like SB, OEP leaves it previous IDE Eclipse behind and is now fully integrated in JDeveloper. The new version is not just a simple port to JDeveloper, it’s gotten a mayor overhaul. Normally when you opened an OEP project you had to right-click on the project and select “Open EPN Editor”, now every project has a EPN Diagram entry in the project explorer just like the SCA Composite XML and SB Overview XML, just simple double-click to open editor.
The 12c release also adds dialog windows when creating components, these components can be created the old fashion way by right-clicking within the EPN editor, can also be dragged&dropped from the Components palette. Instead of writing the correct XML in source view the Dialog window will create the correct XML fragments. For editing the
OEP 12c: Switches from Eclipse to JDeveloper
OEP 12c: Switches from Eclipse to JDeveloper
Besides the basic components (i.g. Adapter, Event-Bean, Cache, Processor, etc) and adapters (HTTP pub/sub and JMS in-/outbound) this new 12c release adds two new adapter one for CSV (in-/outbound) and EDN (in-/outbound).  But that is not all for OEP 12c, it also add extensions to support Hadoop and Oracle NoSQL for use as a source just like the TABLE component, and for an extension for invoking/receiving Remote Method Invocation (RMI) calls.

Working with SOA Suite 12c Coherence Adapter

Oracle SOA suite has introduced a new adapter called as Coherence adapter. This essentially works in the same principal as of Result caching in Oracle service bus.In this exercise we will try to understand more about coherence adapter and will use the same to do an end to end exercise.



Coherence adapter is installed by default in the integrate server however it is not targetted to the server so the very first thing is to target your coherence server to the default server so that it can be used.



Click on the Coherence adapter and then click on the targets tab.

Here Select the default server and save the changes.



After targetting and saving once you will check it again you will find that the Coherence Adapter is up and running



Next is create a JNDI to be used in the design time.

Again click on the COherence Adapter -->Select Configuration

and then select Outbound Connection pools

Create New



Provide a JNDI name and finish the wizard.



save the deployment plan




Now if you will check any of the other predefined jndi for coherence adapter you might find following type of entry


YOU can find that it is pointing to the Cache config location



I actually went back to the file location and check what exactly the file contains



The cache config file allows us to define multiple cache and define what kind of cache can be configured such as SOAAdapterTransactionalCache ,distributionCache. Based on existing schema we can create our own custom config cache and use it for our demo purpose.

We will create our own cache-config file based on the default one.

Here is how my cache-config will look like



Now go to the configuration of your JNDI and provide the details as shown below.

Here location is the path where i have stored my cache-config file locally.

Mode is custom and SErvice name will be the name specified in the config file.

Again WLSExtendProxy is set to false as we are not using any proxy



Once the changes are made, save the changes and update your deployment plan

Now your JNDI is configured and you are now ready to use it for the demo project purpose.We will see in next exercise as to how we can create a sample BPEL process and test the functionality of the coherence in SOA 12c

Testing the Coherence Adapter in SOA 12c


 In this exercise we will see how we can create a sample process to test the functionality of coherence adapter.

The functionality we are going to use here is that we will use a DB adapter and based on a unique employeeID we will try to get the employee name from database. The coherence will come into the picture when we will need to retrieve the employee name for employee id which we have already retrieved. Since we are using coherence cache, the second time if we make a call to our web service to retrieve employee name for the same employeeId it should not make a db call instead it should get the result from cache, thus it will save a lot of time for the end user. Again a point to be noted is that coherence is good for those data which are historical and are not supposed to be changed, if the data is supposed to changed frequently then coherence might not provide the best solution as the assumption here is that once we have retrieved a data it will stored in cache that is we are assuming that the data will not further change. So it is important to get the business clarification on the data then only one should go ahead with coherence.

the process we are going to define will look something like this



and the composite will look something like this



Lets start designing this process and test the functionality,

First of all drag and drop a BPEL process in the composite, make it a synchronous process.

give it some logical name and let the other things be default



Next is drag and drop a db adapter and try to pull data from employee table based on the employee id information



I am using the HR Schema and trying to pull data from employees table



Again i am using a parameter so that we can pass the input from web service and retrieve the data based on this parameter from the employees table. Check out the query getting generated 



Link your DB Adapter to the BPEL process and then drag and drop a coherence adapter in the External reference pane. We will be using two coherence adapter one to put the data in to the coherence and the other one to retrive it from the Cache.



provide the jndi that you have created in the last exercise(previous post)



select operation as put



in the next step specify the name of the Cache which you have defined in the last exercise(previous post).

Further deselect the option of auto generate key as we are going to pass it on run time as a header variable from soa process 



Select the schema of the bpel process and then select the response document as shown below



Similarly put another Coherence adapter for retrieving the data from the cache



use the same jndi however choose get as operation this time



Again use the cache type as XML , provide the cache name and Make key type as string, left the key field blank we will pass it on run time from soa header



Again select the schema of BPEL process and select the response type the same one we have selected in the previous coherence adapter.Link both the adapter to the BPEL process

Now drag and drop an invoke activity and call the GetCacheData.Create an input and output variable for the adapter. This is done immediately after the receive activity as we will have a check on the output result from the cache.If the data is available in cache we will use the same as output otherwise we will call the db adapter and then store the result in the cache



Now go to the properties tab of the adapter and assign the input variable of the BPEL process to the header variable jca.coherence.key as shown below



Now put an assign activity this activity will just assign the input variable of the BPEL to the input of DB adapter. AFter the assign activity put an if condition. This is the place where we will check if there is data in the cache.The If condition will have the following entry. As can be seen it is checking if the output from calling coherence adapter is null or not.If it is null then call the db adapter and store the data in cache.If it is not null then simply pass the same output to the output variable of BPEL



Now we will first configure the else block



First of all we will call the db adapter to get the response from the database based on the employeeID.

Next is we will use an assign activity.

In this assign activity we will first assing the output from Database to the output variable and then we will assign this output variable to the input variable of CahceStore adapter.



Immediately we will use a cache adapater to insert the result that we have received in the previous step to be stored in cache.

We will again pass the key as a header variable as we have passed earlier

Now in the if block we will assing the output data from the GetCacheData to the output of the BPEL



NOw the process is complete,Deploy the process to the integrated server and test it.




The flow will take the else block since this is a first time invocation. It will call the db and get the result and at the same time it will store the result in cache.

The flow in this case will be as shown



Expanding the process you will find that the data is getting stored in the cache with a unique key value



Now once the process is invoked lets again call the same process with same input and you will find that the response is same however the flow is now different



Now if you will go to the flow of the second process you will find that it is actually retrieving the data from the cache 

SOA 12c Installation steps

Download the SOA 12c from the following link


http://www.oracle.com/technetwork/middleware/soasuite/downloads/index.html

The best part here is that you need not separately install Jdeveloper as the SOA 12c comes with Jdeveloper. A lot of other features have been also added in the new 12c such as now you dont need Eclipse for OSB development, you can develop your code in Jdeveloper itself

Once you have downloaded your code.

Extract the code and run it using jar as shown below