Oracle SOA Suite 11g, Setting and Getting Preferences

In Oracle Bpel 10g we had the functionality to add preferences to your bpel process.
By adding the next xml to the bpel.xml file we could get the value as variable into our process and change the value from the console.

<preferences>
  <property name="myPref">MyCurrentValue</property>
</preferences>

In the new Oracle SOA 11g things changed a little but. Like Marc already described in his blog we now need to add the preferences to the composite.xml of our Composite Application.

Add the next xml to the composite.xml :

  <component name="BPELProcess1">
    <implementation.bpel src="BPELProcess1.bpel"/>
    <property name="bpel.preference.myPref">MyCurrentValue</property>
  </component>

Now we can use the function ora:getPreference(myPref) in our bpel process to retrieve the value of the preference.
Watch the naming convention. It expects it to start with “bpel.preference”.

Create the composite application and deploy it.
We only added an assign to the flow which will get assign the value of the preference to the outputVariable.
Run the bpel and check if the value of ‘MyCurrentValue’ is in the outputVariable.
current_value

In Oracle SOA Suite 10g we could change the value of the preferences from the bpel console.
In Oracle SOA Suite 11g things changed a but, we got a new fancy console to manage all the components.
To change to values from the prefences go to the ‘Enterprise Manager’ (http://localhost:7001/em).

On the left go to :
Farm_soa_domain > Weblogic Domain > soa_domain > right mouseclick and select ‘System MBean Browser’.
mbean
Navigate to Application Defined MBeans > oracle.soa.config > Server : soa_server1 > SCAComposite > your_project > SCAComposite.SCAComponent > your bpel_process.
Select the Attribute ‘Properties’.
properties
Change the value of our preference and click apply.
preference

* Addition
There were some questions on how to persist the new value of the preference after server restart

After clicking ‘Apply’ click ‘Return’.
Go to the ‘Operations’ tab and click on the ‘save’ operation. Click ‘Invoke’ and ‘Return’

If you now restart the service the changed value of your preference with still be there.

Run the bpel again to see if the new value got used in the process.
new_value

Original blog

Share this Post:
Digg Google Bookmarks reddit Mixx StumbleUpon Technorati Yahoo! Buzz DesignFloat Delicious BlinkList Furl

21 Responses to “Oracle SOA Suite 11g, Setting and Getting Preferences”

commenter

This was very helpful to me. I had an SR open with oracle support for over a month and they never did figure this out. Thanks for the solution!

commenter

This didn’t work for me until I used single quotes in the getPreference function:
ora:getPreference(‘myPref’)

commenter

Hi Eric,

you can also add these properties to the *.componentType file of the bpel component. and use preference.XXX as name instead of bpel.preference.XXX

<componentType xmlns="http://xmlns.oracle.com/sca/1.0&quot;
xmlns:xs="http://www.w3.org/2001/XMLSchema&quot;
xmlns:ui="http://xmlns.oracle.com/soa/designer/"&gt;
<property name="preference.ok" type="xs:string"
xmlns:xs="http://www.w3.org/2001/XMLSchema"></property&gt;
</componentType>

and use this ora:getPreference(‘ok’)

commenter

And to set the value of preference in the BPEL process?
Something like ora:setPreference?

commenter

Hm i don’t think you can from within the bpel itself.

commenter

I think it is possible to customize the BPEL Functions within ExpressionBuilder, and so to create a setPreference as the getPreference code.

Parâmetros de processo no Oracle BPEL 11gParâmetros de processo no Oracle BPEL 11g…

Um recurso interessante do BPEL é a declaração de parâmetros “de processo”, que podem ser alterados em runtime, facilitando bastante customizações. Basicamente, criamos uma preference no JDeveloper com um valor default, e se necessário, mudamos esse …

Parâmetros de processo no Oracle BPEL 11g…

Um recurso interessante do BPEL é a declaração de parâmetros “de processo”, que podem ser alterados em runtime, facilitando bastante customizações. Basicamente, criamos uma preference no JDeveloper com um valor default, e se necessário, mudamos esse …

commenter

I am trying to use preferences in 10.1.3.5 to store an email address. The address needs to be changed using a deployment plan but it won’t work.

Is there a function similar to ora:getPreference() that will get the “Email_To2″ property from the ??

In the bpel.xml below, I can change the “Email_To2″ value using the deployment plan but can’t get to it from the bpel code.

I can get to the “Email_To” value in the bpel code but can’t change the value in the deployment plan.

developers@xyz.net

Steve_Test.wsdl

developers@xyz.net

What am I missing?

Thanks,

commenter

XML disappeared…

<BPELProcess id=”Steve_Test” src=”Steve_Test.bpel”>

<configurations>
<property name=”Email_To2″>developers@xyz.net</property>
</configurations>

<partnerLinkBindings>
<partnerLinkBinding name=”client”>
<property name=”wsdlLocation”>Steve_Test.wsdl</property>
</partnerLinkBinding>
</partnerLinkBindings>

<preferences>
<property name=”Email_To”>developers@xyz.net</property>
</preferences>

</BPELProcess>
</BPELSuitcase>

commenter

Are you retrieving the property from within your bpel process the correct way?
The definition of the property looks ok, so the getPreference function should work.
Can you paste the bpel code from which you do the get ?

[…] a mbean in the enterprise manager. Although I cannot see any advantages of that in this case. See this blog if you are intested though. Tags: BPEL, Java, soa suite 11g Share this […]

commenter

This perfectly work in Single node environment.

By any chance do you know where to check these properties on EM for Cluster enviroment?

Thank you.

commenter

the values which we change from system Mbean browser are get reverted back on restart of servers…Pls give a sollution,

help on this issue will be appreciated

Thanks

commenter

I updated the blog with the * Addition part.
I hope it’s clear now how to persist the preferences. Good luck!

commenter

Thanks Eric…
wonderful
its working… now i can save values persistently
One more thing
Can we modify the properties in cluster level instead of node by node…

Thanks

commenter

Hey Eric…

Your solution is amazing. Persistent saving is working in cluster level.

Many Thanks for your Quick reply

commenter

Hi Eric,
Thx for useful post.Currently I am using 11.1.1.5 I tried to change the preference value in Attribute properties but still getting the old value only.

Regards
Subbu

commenter

Hi Subbu,

Are you getting the old value after a restart or even when not restarting the server ?

Leave a Reply:

Name (required):
Mail (will not be published) (required):
Website:
Comment (required):
XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>