Thursday, October 30, 2008

Default Retired BPEL process

How did I find this?

I was testing the rollback of BPEL processes. That is when I found this behaviour.

What was the setup?

There were 2 versions of a BPEL process say A.
Say version 1.0 and version 1.1

Version 1.1 was deployed.
Version 1.0 was retired.

What I wanted to do?

Now I wanted to rollback to version 1.0
So I retired version 1.1
Set version 1.0 as default

All this was done using the Java API

Why java API?

If you ask me why java API, well there were quite a few BPEL process that need to be rolled back.
And getting this done manually is a monumental pain.

What I expected and found?

What I expected was, once I retire version 1.1
And set version 1.0 as default, version 1.0 will become active

But that did not happen. After version 1.0 was set as default it still was in retired state.

How to do this?

Once I found this it was all logical to say yes this is the expected behaviour.
But this never crossed the mind when preparing the automated rollback process.
Now I know this, possibly other might face or some thing to be aware of.

Monday, October 13, 2008

Create instance with Pick

Break the receive idea!

Well if you think that receive activity is the only way to create BPEL instances, think twice. You can do this with Pick onMessage activity as well. Well if this is a surprise to you then read on else dump this stupid post.

Why do this with PICK

Well if you think about it, it makes it clear that you can have multiple Pick onMessage activities at the same time. What that means in plain english is, you can have multiple operations calling in, to create a instance in BPEL. Is that not cool.

You create BPEL process for each operation in onMessage Pick.
Generally you have single operation to create a instance in BPEL.

How to create instance with PICK

Just check the create instance in the activity, that it. You are done.

What can not be done in this

You can not use a onAlarm activity in this Pick onMessage activity.
If you think about why, it is not logical at all.
How do you expire time on some thing that was not created.

Word of caution

At design time there should be strong reason that you are trying to simulate this at operation level. Use this with caution and for some strong reasons.
For example if you want a single web service for each operation from a source system.

Tuesday, October 07, 2008

How do you relate BPEL dehydration tables

Why I write this?

Well if you want to write some real clever applications on to top your BPEL dehydration database, you need to know some key BPEL tables inside out.

The dehydration database table need to be house kept to clear production data.
What helps you in these scenarios are:
  • Understanding of what the key tables are.
  • What the key fields are.
  • How to relate these table.
What is the key table?

There are a few key tables that can be used across to relate together BPEL tables.
The first table that you should know is CUBE_INSTANCE

What is the key column in CUBE_INSTANCE table?


The most important column that you should know as a BPEL developer is cikey

What is the significance of cikey?

This is the instance ID that you see in your BPEL console.
This gets incremented in a sequence with creation of BPEL instances.

If you don't know what cikey is then here I go. Each BPEL instance is assigned a unique ID.
This ID is visible in the BPEL console. 
And guess what BPEL console does allow you to filter using instance ID.

This is one of the key columns that you should know to do a lot of stuff.
And this key cuts across a lot of tables in the dehydration tables.

The article will continue to grow....
Continuation to cover..

What are the other tables that have cikey
What are the other Key columns in CUBE_INSTANCE

Sunday, October 05, 2008

SOA does not start with error "An unknown OPMN error has occured"

When did I get this?

I have a fresh installation of SOA suite on my stupid Vista laptop.
I had a hard time getting this into it in the first place.

If you want to find how hard it was see this

I was damn happy getting this into it and I though wow here I go.
But damn stupid thing, after re-starting my system I could not get the SOA suite working.
I capture what I did to get this wonderful thing working.

What is this error and why I write this?

The first bolt I got was this
"An unknown OPMN error has occurred"
"Error connecting to OPMN (is it running?): Connection refused: connect"

This was when I tried to start SOA suite from the "start SOA suite" from start menu.

When I looked at opmn.log file it said some thing that did not make any sense initially.
It read "[ons-connect] Local connection 127.0.0.1,6100 invalid form factor"

Tried to see opmnctl status -app but got back
"Unable to connect to opmn.
Opmn may not be up."

How did I solve this?

Solving is very simple process.
Stop all opmn and related process forcefully if does not stop from "stop SOA suite" script
Rename persistence to persistence.old in ${ORACLE_HOME}/j2ee/${OC4J_Insatnce}
Note you will not be able to rename the folder if opmn or any related process is still running.

Use the following command to start SOA suite
opmnctl start
opmnctl startproc process-type=HTTP_Server
opmnctl startproc process-type=${oc4j_instance_name}

Where did I find the solution?

Found the most helpful solution here

Damn why does it suck so much to get SOA suite working on my laptop.

"The procedure entry point snlinAddrLocalhost could not be located in the dynamic link library oranl10.dll" post SOA suite installation

When did I see this?
When I tried to fire up sqlplusw I got this stupid error.
Well I had done nothing wrong but only installed SOA Suite in my laptop.

And here this error presents itself to me.
No clue why some thing should not work when I have not touched the original pieces of the application but installed entirely different application.

What is this stupid error?

This error has nothing to do with your software being corrupted but just a little paying with some thing called the PATH.

Once you install SOA suite, the installer tries to get itself as the first thing in the path. Pushes the oracle database bin path backwards.

How to solve this?

Well if SOA suite can push the path back for oracle database you can do the reverse and have the path come forward in the path list. Volla there you go, thatz it, nothing big but difficult to find.

Just another of those oracle's issues that you discover in the forum and fix.

Links I liked?

The link that sort of gave me the idea was 

The post by [dragosv] in the last few entries.

Wednesday, October 01, 2008

Install SOA suite on Windows Vista

Why I write this post?

I have a laptop at home and I want to install SOA suite in that.
Now this piece of equipment that I have got has Windows Vista Home in it.
When I first tried to get this software into it, it was a failure. The setup process itself did not run to completion.

I originally thought that it might take a few hours. But it was days before I could get this working.

How did it start?

I could not get the installation process to complete.
And the error message that I saw was
"Error: Missing ormi[s]://host:port"

That is when I started digging for information.
It turned out that I was not the only one struggling.

And even the installation of Oracle Database faced issue with Vista with DHCP settings.

Is Windows Vista Home the only standalone?

Well having read the different flavours of Vista had similar issues in forum, my impression was that Vista was the culprit. And when I did install the same software in XP in a flash.

What all did I do?

I found a host of things that need to be done, or at least I need to be aware of before I hit the road. Some are pre-installation and some during installation and some post installation.
If you do not find these in your system, do not be surprised. Every time I have done this I have faced a different issue. Thought not completely sure why so. Might be my system got bored of me with repeated installation and de-installations.

Pre-Installation Issues

Under score in Computer Name
Remove any under scores that you find in your computer name

If you ask me how to do this in Vista? Here are the steps:
Right click on MyComputer
Click Properties
Locate some thing called "Computer name, domain, and workgroup settings"
Under there Click "Change Settings"
Some thing called "System Properties" pop up and you will be in a tab called "Computer Name"
You should find a button "Change", click that
Change the Computer Name there

Use any name that does not contain a underscore(_)

Configure loop back adapter

You need to get this loopback adapter into your Vista.
And to get this in do the following

Go to Control Panel (use classic view)
Click "Add Hardware"
Click Next
Choose "Install hardware manually"
Choose "Network Adapters" in Common Hardware Type choice
Choose "Microsoft" as Manufacturer and "Loopback" as the adapter

Follow the signs and you are done.

DHCP configuration
Disable IPv6 completely is important for successful installation
Have a look at the Metalink Note 444112.1

If you do not do this installation goes smooth till a point booom. Fails with error unable to locate OC$J URI

Use the following link to disable IPv6

Hosts file

Get rid of ::1 localhost from hosts file. To work this out you need to type in some thing in RUN.
In RUN type in "drivers"
Go into the folder "etc"
Edit the file "hosts"
Comment out part "::1 localhost"

The changed value will look like
#::1 localhost

Completely Disable IPv6

I missed this and I could not complete my installation till I figured that this was the issue.

This is to do with adding a new entry into registery to disable IPv6.
This is documented in 

The setups would be like
Run regedit to open registry
Go to HKEY_LOCAL_MACHINE, SYSTEM, CurrentControlSet, Services, Tcpip6, Parameters
Create a new DWORD called DisabledComponents with value 0xFF

Thatz it. I think you are ready to rock DHCP now.

No WhiteSpace Directory

Do not use white space character in directory structure that has the SOA setup files.
Though I have not tested this I could find some people who seem to have faced these issues.

What all this white space actually means is if you get the directory to SOA installation file, there should be no blank space there.

JDK version

I tried to run the IRCA script with java 1.6. To my surprise the IRCA complained that I have to go to a lower version of JDK.

I expected the higher version of JDK to work with out issue. But it did not. I had to uninstall and go back to a older version of JDK i.e 1.5.

Installation Steps

Run as Admin

While firing up you setup file, be sure to right click the setup file and choose "run as Administrator". I guess this gives the setup rights to do stuff that running in normal mode does not.

But frankly I have not tried running otherwise.

Version of OS

Do not be surprised if you see some error message stating that version of OS is 6.0.
And installtion does not go any further.
Gives details for getting this working.

Could not get DeploymentManager

Do not be surprise if you see this error message

Failed at "Could not get DeploymentManager".
This is typically the result of an invalid deployer URI format being supplied, the target server not being in a started state or incorrect authentication details being supplied.
More information is available by enabling logging -- please see the Oracle Containers for J2EE Configuration and Administration Guide for details.

If you get this then you have missed the disabling of IPv6. each and every step is important and you can not skip even one of them.

What are the links I liked

Oh my god, at last this is done. Took me a while to get here.

The link that I could find that gave the most details was

Another post with quite a few issues covered was