Friday Jun 29, 2012

BAM design pointers

In working recently with a large Oracle customer on SOA and BAM, I discovered that some BAM best practices are not quite well known as I had always assumed ! There is a doc bug out to formally incorporate those learnings but here are a few notes..

 EMS-DO parity

When using EMS (Enterprise Message Source) as a BAM feed, the best practice is to use one EMS to write to one Data Object. There is a possibility of collisions and duplicates when multiple EMS write to the same row of a DO at the same time. This customer had 17 EMS writing to one DO at the same time. Every sensor in their BPEL process writes to one topic but the Topic was read by 1 EMS corresponding to one sensor. They then used XSL within BAM to transform the payload into the BAM DO format. And hence for a given BPEL instance, 17 sensors fired, populated 1 JMS topic, was consumed by 17 EMS which in turn wrote to 1 DataObject.(You can image what would happen for later versions of the application that needs to send more information to BAM !). 

We modified their design to use one Master XSL based on sensorname for all sensors relating to a DO- say Data Object 'Orders' and were able to thus reduce the 17 EMS to 1 with a master XSL.

For those of you wondering about how squeaky clean this design is, you are right ! This is indeed not squeaky clean and that brings us to yet another 'inferred' best practice. (I try very hard not to state the obvious in my blogs with the hope that everytime I blog, it is very useful but this one is an exception.)

Transformations and Calculations

It is optimal to do transformations within an engine like BPEL. Not only does this provide modelling ease with a nice GUI XSL mapper in JDeveloper, the XSL engine in BPEL is quite efficient at runtime as well. And so, doing XSL transformations in BAM is not quite prudent. 

The same is true for any non-trivial calculations as well. It is best to do all transformations,calcuations and sanitize the data in a BPEL or like layer and then send this to BAM (via JMS, WS etc.) This then delegates simply the function of report rendering and mechanics of real-time reporting to the Oracle BAM reporting tool which it is most suited to do.

All nulls are not created equal
Here is yet another possibly known fact but reiterated here.
For an EMS with an Upsert operation:

a) If Empty tags or tags with no value are sent like <Tag1/> or <Tag1></Tag1>, the DO will be overwritten with --null--
b) If Empty tags are suppressed ie not generated at all, the corresponding DO field will NOT be overwritten. The field will have whatever value existed previously. 

For an EMS with an Insert operation, both tags with an empty value and no tags result in –null-- being written to the DO.

Hope this helps ..

Happy 4th!

Thursday May 24, 2012

How to Set JVM Parameters in Oracle SOA 11G

You know you need to tune the JVM and you already know what parameters to set: -Xmx, -verbose:gc ... Plus, there are plenty of WebLogic or Java documentation talking about them. Now you just need to ... set them. But, such a simple task is sometimes confusing.

In your Oracle SOA 11G running within WebLogic, HOW and WHERE to set these parameters? Which files:, or the server-starts in config.xml? And where in the files to set them, as the scripts seem to set and modify the parameter values a lot ...

If you have this question, please see my blog  How to Set JVM Parameters in Oracle SOA 11G

Wednesday May 23, 2012

BPM 11g Deployment & Instance Migration

I have seen a number of request lately asking how to manage deployment of new process versions and how to ensure that instances are migrated from the previous version to the current version.

This blog will present three cases

  1. Where the change to the underlying process is not deemed significant and the process instances are migrated automatically
  2. Where the change to the underlying process is more complex and the process instances need to be migrated manually
  3. Where the change to the underlying process is so complex that the process instance cannot easily be migrated at all 
The blog will guide you step-by-step through runtime version management using BPM Studio but is equally applicable to deployment via other methods (such as via EM).

[Read More]

Thursday May 10, 2012

Using Oracle B2B to send binary documents

Often times in a demonstration or a POC, B2B is asked to transport binary encoded files. This is actually very easy to do, but there are a number of restrictions you should be aware of when considering whether to use B2B for this or not.[Read More]

Monday Apr 30, 2012

Bidirectional Translation Web Services are now available in B2B 11g PS5 Release

Starting from SOA Suite PS5, bi-directional translation via web service is now available within the base install of B2B 11g. The note here describes the basic usage details.[Read More]

Thursday Apr 12, 2012

BPM API usage: List all BPM Processes for a user


I wrote up this blog on BPMTech on BPM API Usage to list all processes a user is part of.

Posting here as well as an A-Team member..

Happy coding! 

Tuesday Apr 10, 2012

OSB 11g & SAP – Single Channel/Program ID for Multiple IDOCs

This note is a supplement to the blog entry, SOA 11g & SAP – Single Channel/Program ID for Multiple IDOCs by Greg Mally. This note shows how a single channel for the SAP Adapter can be used in an OSB project to receive multiple types of IDOCs.[Read More]

Running Built-In Test Simulator with SOA Suite Healthcare 11g in PS4 and PS5

SOA Suite Healthcare Integration Pack provides a built-in utility to simulate an external endpoint for HL7 messaging flows. This lightweight, ant-based utility can be very useful to quickly simulate an endpoint for setting up round-trip HL7 messaging in a standalone, closed environment.

This note gives an overview about the setup and usage of the simulator utility. It also points out the differences that users have to keep in mind when migrating from PS4 to PS5 release.

[Read More]

Tuning B2B Server Engine Threads in SOA Suite 11g

B2B Server Properties from EM console can be used to tune the thread configuration of the B2B engine to improve overall B2B performance.[Read More]

Monday Apr 09, 2012

Using SAP Adapter with OSB 11g (PS3)

iWay SAP Adapters can be conveniently used within an OSB project to invoke a synchronous BAPI or RFC call on the SAP system.[Read More]

Tuesday Apr 03, 2012

How to deal with transport level security policy with OSB

OSB 11g PS4 consuming a Web service, that is secured by HTTP transport level security policy.[Read More]

Wednesday Mar 14, 2012

Enterprise-class SOA on Exalogic... what, why and how?

Exalogic A-Team member Rupesh Ramachandran has recently blogged about his OpenWorld 2011 talk on enterprise-class SOA systems on Exalogic. He covers some of the basic "what, why, and how" questions about Exalogic. Please follow this link to the A-Team Exalogic blog to read more.

Friday Mar 09, 2012

SOA 11g & SAP – Single Channel/Program ID for Multiple IDOCs

When integrating with SAP using the Oracle 11g Application Adapter, it may be desirable to simplify integrations requiring a large number of IDOCs to leverage a single channel/SAP Program ID for multiple IDOC types.  However, the standard practice for the Application Adapter is to create a separate channel for each inbound service (aka, single channel/SAP Program ID for a single IDOC type).  The following write-up will illustrate a way to allow multiple IDOCs to flow to a single Application Adapter Channel.[Read More]

Using Oracle BPM Activity Guide APIs

We have recently been asked a few times about using Activity Guides in customers' custom UIs.

I am linking my blog on usage of the Oracle BPM 11g PS4FP Activity Guide APIs.

Hope this helps. 

Tuesday Feb 14, 2012

BPM 11g Task Execution Data - Rejection Notification Pattern

I recently received a requirement from a customer who wanted to notify all previous participants in the process that the process had been rejected for whatever business reason. This was further complicated since the “business process” was split between a generic controlling process and many independent processes called as services. This led me to try and understand what data is recorded after each human task and how it is possible to get access to it.

This blog details the task execution data and outlines a design for a “Rejection Notification” pattern.... 

[Read More]

This is the blog for the Oracle FMW Architects team fondly known as the A-Team. The A-Team is the central, technical, outbound team as part of the FMW Development organization working with Oracle's largest and most important customers. We support Oracle Sales, Consulting and Support when deep technical and architectural help is needed from Oracle Development.
Primarily this blog is tailored for SOA issues (BPEL, OSB, BPM, Adapters, CEP, B2B, JCAP)that are encountered by our team. Expect real solutions to customer problems, encountered during customer engagements.
We will highlight best practices, workarounds, architectural discussions, and discuss topics that are relevant in the SOA technical space today.


« June 2016