SOA Suite Tips and Tricks

Installing:

Installing 12c Compact Domain  NOTE: Compact domain is file based, SOA Composer will not edit –> See: Convert QS Domain File-Based MDS to DB-based (Warning: Unverified and unsupported)

Configuring a 12c Standalone Domain (then, search for: 2.5.2 Configuring a Standalone Domain)
NOTE: for 12.2.1 – Documentation is wrong:
qs_config is under ORACLE_HOME/oraclecommon/common/bin and 
QS_TEMPLATES=”$ORACLE_HOME/soa/common/templates/wls/oracle.soa_template_12.1.3.jar,$ORACLE_HOME/osb/common/templates/wls/oracle.osb_template_12.1.3.jar” – Remove version:

Linux: export QS_TEMPLATES="$ORACLE_HOME/soa/common/templates/wls/oracle.soa_template.jar, $ORACLE_HOME/osb/common/templates/wls/oracle.osb_template.jar"

Windows: set QS_TEMPLATES=%ORACLE_HOME%\soa\common\templates\wls\oracle.soa_template.jar, %ORACLE_HOME%\osb\common\templates\wls\oracle.osb_template.jar
See MOS Support Note: 1958724.1  for more comprehensive list of steps and issues.

As compared to the 10g-to-11g upgrade, more of the 11g-to 12c upgrade is done “in-place” https://docs.oracle.com/middleware/1213/core/FUPSS/upg_prepare.htm#FUPSS309

JSON, JavaScript in BPEL:
JSON Vars in BPEL:

using Javascript Activity?

Assuming  “strJsonResponse” is a bpel string type and you could assign value to it, you can use the following javascript code in a javascript actity to assign it to outputVar.

process.outputVar = JSON.parse(process.strJsonResponse);

audit.log(“Output:”+process.outputVar);

Security:
See SOAP Message in its entiretyDocs. Use oracle/log policy.

Slow or hangs during domain creation?

Fix is here: https://blogs.oracle.com/reynolds/entry/installing_an_11g_soa_cluster

After installing the JDK I edited the jre/lib/security/java.security file and changed the reference to /dev/urandom to be /dev/./urandom.

Debugger will not initiate:

   a. The “Listen Address” in the “Create Default Domain” is pointing to the “All Available Addresses.”
                        b. JDeveloper => Tools => Preferences => Web Browser and Proxy is configured with the proxy information according to your environment.
c. Configure /etc/hosts file with the host and ip-address. Restart JDeveloper.

 
BPEL:

Convert BPEL 1.1 to 2.0

Fault Handling in BPEL:The code sample below (StockFaultSynch.zip) is a simple way to demonstrate Synchronous Fault handling in BPEL.
The TestStockFaultSync.zip is a test harness to see what and how faults and fault info is returned.
NOTE: You will need to reconnect the WSDL for the StockFaultSynch Service within the TestStockFaultSync to it, once StockFaultSynch is deployed.
 

BPEL processing in a cluster: It does not matter which managed server receives the callback, because that server will wake up the process instance and try to deliver the message to that instance. All nodes are the same. There is no partitioning in a SOA cluster that limits processes to execute only on a subset of the nodes. All nodes serve all processes in all partitions of the SOA domain. If for some reason that instance is still being worked on by another managed server, there is a locking mechanism with a retry schedule in place to make sure that the message is not delivered while another node is also working on it.

Enterprise Scheduling Service:

Using ESS Web Service (+Async calls)
This blog post shows how to launch an ESS Job from the ESS Web Service interface.  So you can pas sit any payload you want.
This blog calls the ESS Web Service from SOAP UI.
This blog shows one example of using tokens in the input that can be substituted later.
ESS Docs: Note the JAVA API and WLST commands
Automatic Oracle Enterprise Scheduler substitution is available for process job command lines and environment properties, as well as for some request properties used by EJB and web service jobs.
The SYS_EXT_invokeMessage property contains the XML message (SOAP body payload) for invocation. This can either be an XML template or full XML.

Deleting a File: use a FileAdapter to delete  (using FileIOInteractionSpec) the file or a Java exec within BPEL to delete it.

 
Transactions:
SOA: How to Configure Transaction Timeout for BPEL on SOA 11g (Doc ID 880313.1)
BPM: How to Configure Transaction Timeout for BPMN EJBs (Doc ID 1475462.1).

Tracing and Auditing:

Events and EDN:
Create SOA Cluster + Proxy Load Balancer: SOA Cluster and Load Balancer Proxy
(NOTE: SOA Cluster does not need JOC and Coherence -Dtangersol settings are WRONG. Use settings from EDG
Specifically:
Enter the following for WLS_SOA1 and WLS_SOA2 into the Arguments field.

For WLS_SOA1, enter the following:

-Dtangosol.coherence.wka1=SOAHOST1VHN1 
-Dtangosol.coherence.wka2=SOAHOST2VHN1
-Dtangosol.coherence.localhost=SOAHOST2VHN1

For WLS_SOA2, enter the following:

-Dtangosol.coherence.wka1=SOAHOST1VHN1 
-Dtangosol.coherence.wka2=SOAHOST2VHN1
-Dtangosol.coherence.localhost=SOAHOST2VHN1
Configuring the DyeInjection Monitor to Manage Diagnostic Contexts – helps monitor and track composites, ECID, etc.
Deployment:
Architectural and Design Patterns:

The Parking Lot Pattern (Sync to Async is problematic when a receive is used in the sync composite.  This is a pattern which has been used successfully for sync to async.)

Canonical Modeling:
Entity Relationship Modeling, by Richard Barker – Still the best overall data modeling book I know – works for database, class models, and XML schemas
Data Modeling Patterns, by David Hay – Excellent, more advanced, modeling book

EM Roles