Wednesday Feb 01, 2012

Retrieve BPEL payload from the database

Given an instance id, how to get the payload used to invoke the BPEL, from the dehydration database (called SOA infrastructure database in 11G)?

You have two options, each with its pros and cons ...

Please read my blog at BlogSpot for more details ...[Read More]

Oracle SOA 10G Tricks: Optimize calling path between ESB and BPEL

In SOA 10G, it is a good practice to have BPEL and ESB co-located at the same JVM. Doing so will not only improves performance but also allows JTA global transaction propagates between the two. However, these advantages will not be fully materialized, or even will totally disappear, if wrong protocols was chosen when these two components call each other.

Please read my blog at  Oracle SOA 10G Tricks: Optimize calling path between ESB and BPEL
  on what it takes to optimize the calling patch between OESB and BPEL.[Read More]

Tuesday Jan 17, 2012

How should I generate an external reference to a composite instance?

If you have a requirement to generate an external reference to an instance within SOA suite, how should one go about it? Which one of the values should you use?[Read More]

Tuesday Jan 10, 2012

Event Delivery Network (EDN) - A practical example

Details of how Oracle Event Delivery Network is used may be found here

A lower level description of EDN can be found here.

[Read More]

Tuesday Nov 29, 2011

Using the TaskQueryService from .Net

This post demonstrates how to use the Human Workflow Services web services (specifically the TaskQueryService) from a C# .Net application.

READ MORE >>

List of all states from COMPOSITE_INSTANCE, CUBE_INSTANCE, DLV_MESSAGE tables

In many of my engagements I get asked repeatedly about the states of the composites in 11g and how to decipher them, especially when we are troubleshooting issues around purging. I have compiled a list of all the states from the COMPOSITE_INSTANCE, CUBE_INSTANCE, and DLV_MESSAGE tables. These are the primary tables that are used when using BPEL composites and how they are used with the ECID. 

Composite State Values


COMPOSITE_INSTANCE States

State Description
0 Running
1 Completed
2 Running with faults
3 Completed with faults
4 Running with recovery required
5 Completed with recovery required
6 Running with faults and recovery required
7 Completed with faults and recovery required
8 Running with suspended
9 Completed with suspended
10 Running with faults and suspended
11 Completed with faults and suspended
12 Running with recovery required and suspended
13 Completed with recovery required and suspended
14 Running with faults, recovery required, and suspended
15 Completed with faults, recovery required, and suspended
16 Running with terminated
17 Completed with terminated
18 Running with faults and terminated
19 Completed with faults and terminated
20 Running with recovery required and terminated
21 Completed with recovery required and terminated
22 Running with faults, recovery required, and terminated
23 Completed with faults, recovery required, and terminated
24 Running with suspended and terminated
25 Completed with suspended and terminated
26 Running with faulted, suspended, and terminated
27 Completed with faulted, suspended, and terminated
28 Running with recovery required, suspended, and terminated
29 Completed with recovery required, suspended, and terminated
30 Running with faulted, recovery required, suspended, and terminated
31 Completed with faulted, recovery required, suspended, and terminated
32 Unknown
64 -




CUBE_INSTANCE States

State Description
0 STATE_INITIATED
1 STATE_OPEN_RUNNING
2 STATE_OPEN_SUSPENDED
3 STATE_OPEN_FAULTED
4 STATE_CLOSED_PENDING_CANCEL
5 STATE_CLOSED_COMPLETED
6 STATE_CLOSED_FAULTED
7 STATE_CLOSED_CANCELLED
8 STATE_CLOSED_ABORTED
9 STATE_CLOSED_STALE
10 STATE_CLOSED_ROLLED_BACK


DLV_MESSAGE States

State Description
0 STATE_UNRESOLVED
1 STATE_RESOLVED
2 STATE_HANDLED
3 STATE_CANCELLED
4 STATE_MAX_RECOVERED

Since now in 11g the Invoke_Messages table is not there so to distinguish between a new message (Invoke) and callback (DLV) and there is DLV_TYPE column that defines the type of message:

DLV_TYPE States


State Description
1 Invoke Message
2 DLV Message

MEDIATOR_INSTANCE

STATE Description
 0  No faults but there still might be running instances
 1  At least one case is aborted by user
 2  At least one case is faulted (non-recoverable)
 3  At least one case is faulted and one case is aborted
 4  At least one case is in recovery required state
 5 At least one case is in recovery required state and at least one is aborted
 6 At least one case is in recovery required state and at least one is faulted
 7 At least one case is in recovery required state, one faulted and one aborted
 >=8 and < 16
 Running
>= 16 
 Stale

In my next blog posting I will walk through the lifecycle of a BPEL process using the above states for the following use cases:

- New BPEL process - initial Receive activity

- Callback BPEL process - mid-level Receive activity

As always comments and questions welcome!

Deepak

Wednesday Nov 02, 2011

Continuous Integration for SOA/BPM

 

We are hearing from a lot of customers that they are interested in applying Continuous Integration techniques to their Fusion Middleware environments.  The link below will take you to a series of posts about how to use Subversion, Maven and Hudson to create a CI environment for SOA/BPM, OSB and ADF projects.  

READ MORE >>

Tuesday Nov 01, 2011

Using the Database as a Policy Store for SOA 11g

 

As more and more customers of SOA 11g move to production, we have been asked often about the recommendations for a PolicyStore for SOA 11g in production. This post addresses the various policy store options, helps evaluate the pros and cons of each of these options and describes the configuration steps required for using the database as a policy store in SOA 11g. 

READ MORE >>


Monday Aug 22, 2011

Fault Management Framework by Example

The following is not intended to replace the official documentation for the 11g SOA Fault Management Framework, but rather to act as a supplement with additional information and a working example. Please review the product documentation in conjunction with this writeup. We will review the high-level capabilities of the framework, identify some simple “gotchas”, and review a working example that can be imported into JDeveloper/deployed to your running SOA server.

[Read More]

Thursday Aug 11, 2011

Coherence in SOA Suite 11g

Have a lot of SOA 11g environments in a single subnet? Seeing random stuck thread warnings from Weblogic when you do a deployment? You might have Coherence crosstalk. Check out this blog entry to see what you can do to reconfigure the SOA 11g embedded Coherence environment.[Read More]

Full access to MDS Repository

JDeveloper allows you to browse the tree structure of any MDS repository, DB or File based. After creating the appropriate connection, a JTree is created, and all documents and packages of the MDS repository are available in it. To manipulate those documents, it is not unusual to use WLST (WebLogic Scripting Tool). MDS provides a few APIs for now, obviously dedicated to the manipulation of the documents needed and managed by the SOA/SCA part of the stack. MDS can definitely be used to store any sharable document, whether they are related to SCA or not. Currently this manipulation of the MDS artifacts using WLST is not supported in 11g, however in this blog post we are sharing a way to access those documents from the command line scripting tool. The approach we took was to use the tools JDeveloper is using to build the MDS Connection tree. The linked archive provides a JDeveloper project that contains one class, named MDSUtils. It requires a couple of libraries to be used at compilation and runtime (mentioned in the project available at the bottom of the post). This class contains a main method, illustrating the way to use it from Java.
   public static void main(String[] args)
   {
     try
     {
       MDSInstance mdsInstance = null;
       mdsInstance = MDSUtils.initializeDBStore("TEST_MDS",
                                                "welcome1",                                                
                                                "jdbc:oracle:thin:@<machine.name>:1521:XE",
                                                "soa-infra",
                                                MDS_CONNECTION_NAME);
       // Recurse and display, from the root.
       recurse(mdsInstance, null, 0);

       // Find a resource
       List list = MDSUtils.findResource(mdsInstance, "deployed-composites", false);
       System.out.println("List: (" + list.size() + " element(s))");
       for (ResourceName rn : list)
         System.out.println("Found : " + rn.getAbsoluteName() + " (a " + 
                            (rn.isPackageName()?"package":"document") + ")");

       MDSUtils.createFolder(mdsInstance, PackageName.createPackageName("/oliv"));

       // Deleting folder
       List list = MDSUtils.findResource(mdsInstance, "oliv", false);
       System.out.println("List: (" + list.size() + " element(s))");
       for (ResourceName rn : list)
       {
         System.out.println("Found : " + rn.getAbsoluteName() + " (a " + 
                                  (rn.isPackageName()?"package":"document") + ")");
         if (rn.isPackageName() && rn.getAbsoluteName().equals("/oliv"))
         {
           System.out.println("Deleting " + rn.getAbsoluteName());
           MDSUtils.deleteResource(mdsInstance, rn);
         }
         else
           System.out.println("Leaving " + rn.getAbsoluteName() + " alone.");
       }
       System.out.println("Done");
     }
As WLST is based on Jython, and as Jython can make Java calls, the bridge between WLST and the Java code above is obvious. Here is a code snippet doing the something close to the Java code above, that can be run using WLST:
print "-----------------------------"
y = "Yes"
Y = y
n = "No"
N = n
from oracle.ateam import MDSUtils
mdsUtils = MDSUtils()
# setup Connection parameters
# The first call (createFolder, deleteFolder) will create the 
MDSInstance with those parameters.
mdsUtils.setUserName("TEST_MDS")
mdsUtils.setPassword("welcome1")
mdsUtils.setPartition("soa-infra")
mdsUtils.setDbUrl("jdbc:oracle:thin:@machine.name:1521:XE")
#
response = input("Do we create the \"oliv\" directory ? [y|n] > ")
if response == y:
   print "Creating directory"
   mdsUtils.createFolder("/oliv")
response = input("Do we delete the \"oliv\" directory ? [y|n] > ")
if response == y:
   print "Deleting directory"
   mdsUtils.deleteFolder("/oliv")
print "Done."
print "Bye now"

The only thing to do before running this snippet from WLST is to put the required classes in WLST's classpath. A script contained in the archive is illustrating this point.

The JDeveloper project containing the code is available from here.

Thursday Jul 28, 2011

A quick introduction and a fun database trick

A way to handle larger payloads in the SOA 11g product by altering the staging area in the database.[Read More]

Welcome to the A-Team SOA Blog

Welcome to the A-Team SOA Blog!!

We are very excited to have this blog to allow the A-Team members working in the SOA space to share their experiences with issues we get exposed to. Our goal is to share interesting solutions ranging from design and development best practices, performance optimizations, troubleshooting methodologies and workarounds to challenging technical issues around BPEL, OSB, BPM, CEP, Adapters, JCAPS and overall Oracle 11g/10g SOA Suite.  

Contributors to the Blog are:

  • Robert Patrick
  • Peter Farkas
  • Derek Sharpe
  • Deepak Arora
  • Mike Somekh
  • Mark Nelson
  • Sabha Parameswaran
  • Sushil Shukla
  • Jack Desai
  • Olivier Lediouris
  • Andy Knight
  • Christian Weeks
  • Cliff Wright
  • Francis Ip
  • Greg Mally
  • Paul Wickstrom
  • Shub Lahiri
  • Jian Liang
  • Johnny Shum
  • Kavitha Srinivasan
  • Mark Foster
  • Mike Muller
  • Siming Mu
  • Christopher Karl Chan

Happy reading and we look forward to hearing from you!

A-Team

    About


    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.

    Search

    Archives
    « April 2014
    SunMonTueWedThuFriSat
      
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
       
           
    Today