Posts filed under 'fusion11g'
Oracle Fusion, trigger events from within bpel
Browsing the samples of Clemence i came by a little feature didn’t knew about yet.
It was clear to me you could trigger the events from within the mediator.
To trigger an event from withing your bpel process, just add the invoke-activity, for interaction type select ‘Event’ and select the event you want to trigger.
So instead of invoking a partnerlink you’ll now invoke the event definition.
<invoke name="Invoke_1" bpelx:eventName="ns2:EnvironmentEvent" inputVariable="MyEventInput"/>
Add comment December 31, 2009
Oracle Fusion, BPEL and coordination of master- and detail processes
Because of a little illness Lucas was a bit faster with the publish of his article
but i decided to still post it on my blog.
In the new Fusion 11g, Oracle added a new extension to the bpel language for the coordination of master- and detail processes.
With this add on it is possible to relate a master process with his detail processes and give signals to each other when to start and when parts are finished.

Let’s start with building something
We created a new composite application and added 3 bpel processes to it.
The first process is the master process and this one will invoke 2 detail processes.
The idea is to let both detail process only get started when they receive a ’signal’ from the master processes. If they receive it,
they’ll execute their own logic and when either finished or at some point they want to communicate back to the master process, they give a ’signal’ back.
In the master process, after the the receive add the first signal
<bpelx:signal name="doDetail1" label="doDetail1" to="details"/>
This will give the first detail process a signal so it will be able to receive
Now we need to invoke the first detail process
<invoke name="invokeDetail"
inputVariable="invokeDetail_process_InputVariable"
partnerLink="MyDetail.mydetail_client" portType="ns1:MyDetail"
operation="process"
bpelx:detailLabel="detailProcessComplete1"
bpelx:invokeAsDetail="true">
Two things in here are needed. The first is the bpelx:invokeAsDetail=”true” and the second is the bpelx:detailLabel=”detailProcessComplete1″
The last property is used in cases in which we have multiple detail processes and the signals need to get correlated back with the master process.
Now lets see what is needed in the first detail process to receive the signal and eventually send one back to the master process.
The first activity after the receive is the receive signal
<bpelx:receiveSignal name="WaitOnSignalFromMaster"
label="doDetail1" from="master"/>
This will receive the signal from its master process and after that will carry on. Without the signal the detail process won’t get started. So you will only be able to trigger this detail/sub process from it’s master process.
After receiving the signal the detail process can execute some logic and eventually send back the signal to the master process
<bpelx:signal name="ReplyBackToMaster"
label="detailProcessComplete1" to="master"/>
In the master process we use the receiveSignal activity to receive it back from the detail process and go on with the process.
<bpelx:receiveSignal name="waitForDetailProcess1"
label="detailProcessComplete1" from="details"/>
The same code is needed to invoke the second detail process. It’s up to you to decide wether or not the second detail process can run parallel to the first one.
If this is not the case we need to wait on the receiveSignal from the first detail process before we can start the second one.
If both processes can execute their logic and eventually send the signal back we can also receive both signals on the end of the master process. If both signals are receive we can do the callback because the whole process (master and all his details have been completed).
And in this case we can invoke the detail processes like oneway processes, but still inform the master process about the state of all these oneway (long running?) processes. At the end aggregate all the signals and do the callback or some other activity which is needed as soon all the detail processes reported back.
Testcase1
What will happen if we remove one of the receiveSignals from the Master process.
![]()
the master process will wait on the receivesignal activity until it receveid it.
Testcase2
What will happen when we do not send the signal from the master process to the detail process but leave the receiveSignal in the detail process.
![]()

The master process will wait on the receiveSignal from detail process1. Since the invoke of the both detail processes are oneway and we do the ‘check’ on the receiveSignals at the end, detail process1 will just complete and send the signal back to the master process. After this the master process will keep on waiting on the signal from detail process1.
Testcase3, when all just works
![]()



Eventually the flow of the master process can look like this.
In here i placed the receiveSignals to the end of the process. You can also place them after the invokes of the detail processes, so you’re sure they will wait on each other.

Resources
Amis weblog
Tom Hofte weblog
Oracle® Fusion Middleware Developer’s Guide for Oracle SOA Suite 11g Release 1 (11.1.1) – 15 Coordinating Master and Detail Processes
Add comment December 11, 2009
Oracle Domain Value Maps and Business Rules runtime edit with SOA Composer
Last week there was a question on the forum how to add values to the domain value maps on runtime.
In the Oracle SOA Suite 10g we could maintain those values from the console.
In Fusion 11g it’s a little bit different.
Oracle now supplies us a new tool called SOA Composer (patch set 1). This new tool can be used to maintain both rules and domain value maps at runtime.
- Create a new composite and add a dvm to it
- Create a new dvm
- Create the transformation in the mediator and connect the dvm

Select the project, goto File > New > SOA Tier > Transformation > Domain Value Map
<xsl:template match="/">
<inp1:CountryInfo>
<inp1:Code>
<xsl:value-of select="/inp1:Input/inp1:Code"/>
</inp1:Code>
<inp1:Fullname>
<xsl:value-of select="dvm:lookupValue("Countries.dvm","CODE",/inp1:Input/inp1:Code,"Fullname",'not mapped')"/>
</inp1:Fullname>
</inp1:CountryInfo>
</xsl:template>
Now deploy the composite and do a little test to see if the dvm works.

In my case it generated the file ‘my_dvm_out_1.txt’ with the next content :
<?xml version="1.0" encoding="UTF-8" ?><inp1:CountryInfo xmlns:inp1="http://xmlns.oracle.com/singleString" xmlns="http://xmlns.oracle.com/singleString"> <inp1:Code>NL</inp1:Code> <inp1:Fullname>Netherlands</inp1:Fullname> </inp1:CountryInfo>
Test again from the console with the code DE. Content of my file :
<?xml version="1.0" encoding="UTF-8" ?><inp1:CountryInfo xmlns:inp1="http://xmlns.oracle.com/singleString" xmlns="http://xmlns.oracle.com/singleString"> <inp1:Code>DE</inp1:Code> <inp1:Fullname>not mapped</inp1:Fullname> </inp1:CountryInfo>
Time to add the dvm lookup for code DE.
SOA Composer
The SOA Composer can be found at: http://hostname:port_of_soa_managed_server/soa/composer
Login into the console and go to Open > Open DVM. Open the correct DVM.


Click Edit at top and click the green arrow to add a new lookup.


Last step is to commit the changed dvm (without redeploy).
Let’s test the process again and check the content of file.
<?xml version="1.0" encoding="UTF-8" ?><inp1:CountryInfo xmlns:inp1="http://xmlns.oracle.com/singleString" xmlns="http://xmlns.oracle.com/singleString"> <inp1:Code>DE</inp1:Code> <inp1:Fullname>Deutschland</inp1:Fullname> </inp1:CountryInfo>
Looks like it works.
Nice new tool from Oracle, available in the new patchset 1 of SOA Suite 11g.
Add comment November 27, 2009
Install Oracle Fusion11g repositories on 11g db
The rcu installer does a db prerequisite check on the version of the db you’re installing on.
Since i’m using the 11.1.0.6.0 version the installer would fail with the message ‘The database you are connecting is not a supported version. Enter Database with version equal to or higher than 10.2.0.4.0 in 10g or version equal to higher than 11.1.0.7.0 in 11g. Refer to the certification matrix for supported DB versions’.
Go to the file
<rcuHome>\rcu\config\ComponentInfo.xml
and find this xml
<DBPrerequisite PREREQ_TYPE="CustomSQL" DATA_TYPE="NUMBER" COMPARE_OPERATOR="EQ">
<ValidIf DBTYPE="ORACLE" >
<CustomQueryFilter DATA_TYPE="NUMBER" COMPARE_OPERATOR="EQ" VALUE="0">
select 1 from dual where exists (select column_name from dba_tab_columns where table_name(+) like 'V_$INSTANCE' and column_name(+) = 'EDITION') union select 0 from dual where not exists (select column_name from dba_tab_columns where table_name(+) like 'V_$INSTANCE' and column_name(+) = 'EDITION')
</CustomQueryFilter>
</ValidIf>
<PrereqIdentifier>select count(*) from product_component_version where product like 'Oracle%Database%' AND version BETWEEN '11' AND '11.1.0.6.0' </PrereqIdentifier>
<PrereqValue>0</PrereqValue>
<PrereqErrorMsg>
The database you are connecting is not a supported version. Enter Database with version equal to or higher than 10.2.0.4.0 in 10g or version equal to higher than 11.1.0.7.0 in 11g. Refer to the certification matrix for supported DB versions
</PrereqErrorMsg>
</DBPrerequisite>
And change the value of ‘PrereqValue’ from 0 to 1.
Run install again and it will pass the check.
Thanks to Edwin for pointing me to the file
Add comment November 17, 2009
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.

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’.

Navigate to Application Defined MBeans > oracle.soa.config > Server : soa_server1 > SCAComposite > your_project > SCAComposite.SCAComponent > your bpel_process.
Select the Attribute ‘Properties’.

Change the value of our preference and click apply.

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

1 comment October 28, 2009
Oracle Fusion 11g links overview
A short overview of the resources i mostly use when developing fusion11g applications.
Since i’m always googling and googling to find the correct document, just a short list as reminder for myself.
Oracle JDeveloper 11g Tutorials
Oracle Fusion Middleware Documentation Library
Oracle Fusion Middleware Administrator’s Guide 11g Release 1 (11.1.1)
Oracle Fusion Middleware Installation Guide for Oracle SOA Suite 11g Release 1 (11.1.1)
Oracle Fusion Middleware Administrator’s Guide for Oracle SOA Suite 11g Release 1 (11.1.1)
Oracle Fusion Middleware Security Guide Release 1 (11.1.1)
Oracle Fusion Middleware Tutorial for Running and Building an Application with Oracle SOA Suite 11g Release 1 (11.1.1)
Oracle Fusion Middleware Developer’s Guide for Oracle SOA Suite 11g Release 1 (11.1.1)
Oracle Fusion Middleware Fusion Developer’s Guide for Oracle Application Development Framework 11g Release 1 (11.1.1)
Oracle Fusion Middleware 11gR1 Software Downloads
Oracle Fusion Order Demo Application
Deploying a JDeveloper SOA Application to Oracle WebLogic Server 11g
ORACLE SOA SUITE
Installation Guide
Quick Installation Guide
Upgrade Guide for Oracle SOA Suite, Oracle WebCenter, and Oracle ADF
Getting Started
Tutorial for Running and Building an Application
Developer’s Guide
Administrator’s Guide
ORACLE ADAPTERS
User’s Guide for Technology Adapters
User’s Guide for Oracle Applications
Oracle By Example (OBE)
Virtual Book : SOA Tasks
Oracle Sample Code
Check the blog of Marc for the overview of all the samplecode listed per product
FORUMS
SOA Suite
BPEL
Application Server (wls oc4j)
JDeveloper and ADF
I’ll update the list when i come by other usefull links
4 comments July 25, 2009
Oracle Fusion 11g, my first impressions
Last i finished the last day of the 3day Oracle Fusion 11g workshop.
And i must say…i’m pretty impressed by the new stack Oracle presented.
For development during the workshop i used my own vmware of fusion 11g on Centos.
And it’s a real killer when all components of the suite are up and running, my laptop had a tuff time.
During the workshop we used the famous ‘Order processing’ tutorial to get in touch with the components of the fusion 11g.
A short overview of what we have been discussing and developing
- SCA Components wiring bpel and human tasks together and exposing them as soap services
- Using the mediator for transformation between the SCA components
- Orchestrating a few bpels to execute human tasks and update payload
- Adding Business Rules
- Handling Business Events using EDN
- Creating BAM dashboards and using BAM adapter/sensors to push data
- Integration with Oracle B2B
- Virtualize services on Oracle Service Bus (OSB)
- Web services policy enforcement
- Managing the lifecycle of a SOA composite application
- Unit Testing
- New Fault Handling framework (mediator and bpel)
- Using Service Data Objects (SDO)
My first thoughts
SCA modelings looks good, composite application development in JDeveloper works like a charm.
Business rules development got new gui, way better then the old one.
BAM dashboards look really good, customers will love those.
EDN framework, event based architectures, nice!
ADF BPEL Worklist, finally an easy way to design your own worklist gui.
Mediator is the old OESB, now it’s used for the wire in the composite applications and subscription on events
New console looks good, all integrated and good support for End 2 End tracking
Fault Policy framework from 10.1.3.4 now works for both BPEL and Mediator
A few impressions
To find out about all the other new functionality, install it and go play with it!
3 comments July 15, 2009
Oracle Fusion Middleware 11g (ofm11g) on Centos 5
The new Oracle Fusion Middleware 11g just got released a few days back, so time to play with it!
Oracle did a great job on the installation guide and quickstart again, so installation wasn’t a real hard job.
A short overview of the steps we need to follow
- Install Oracle Database (i used OracleXE)
- Create Schemas for Oracle SOA Suite and Oracle BAM by using Repository Creation Utility (RCU)
- Install Oracle WebLogic Server and Create the Middleware Home
- Installing Oracle SOA Suite
- Configuring Oracle SOA Suite
- Post-Installation Tasks
- Installing Oracle SOA Suite Design-Time Components
On the download page i downloaded the next components
- Oracle WebLogic Server
- SOA Suite
- Repository Creation Utility
This part will show us the included components but also the list of required additional software and optional software
Quiet some software to install before we can get started.
I assume you already have the db running so lets get on to the next step.
Create Schemas for Oracle SOA Suite and Oracle BAM by using Repository Creation Utility (RCU)
Unzip ofm_rcu_linux_11.1.1.1.0_disk1_1of1.zip and run ./rcu
I needed to change the next parameters in the db
- alter system set PROCESSES=500 scope=SPFILE;
- alter system set open_cursors=500 scope=SPFILE;
And the next parameters in the linux kernel (/etc/security/limits.conf)
# tbv oracle soa suite 11g oracle hard nofile 4096 oracle soft nofile 4096
And a list of missing/wrong version of system packages
Root Checking operating system certification Expected result: One of enterprise-4,enterprise-5,redhat-4,redhat-5,SuSE-10 Actual Result: redhat-5 Check complete. The overall result of this check is: Passed Checking recommended operating system packages Checking for gcc-4.1.0-28.4; Not found. Failed <<<< Checking for gcc-c++-4.1.0-28.4; Not found. Failed <<<< Checking for setarch-1.6-1; found setarch-2.0-1.1-i386. Passed Checking for sysstat-5.0.5-1; Not found. Failed <<<< Checking for libstdc++-4.1.0-28.4; found libstdc++-4.1.2-44.el5-i386. Passed Checking for libstdc++-devel-4.1.0-28.4; Not found. Failed <<<< Checking for compat-libstdc++-296-2.96-132.7.2; Not found. Failed <<<< Checking for compat-db-4.1.25-9; Not found. Failed <<<< Checking for control-center-2.8.0-12; found control-center-1:2.16.0-16.el5-i386. Passed Checking for glibc-common-2.3.4-2.9; found glibc-common-2.5-34-i386. Passed Checking for binutils-2.16.91.0.5-23.4; found binutils-2.17.50.0.6-9.el5-i386. Passed Checking for make-3.80-202.2; found make-1:3.81-3.el5-i386. Passed Check complete. The overall result of this check is: Failed <<<< Checking kernel parameters Checking for VERSION=2.6.18; found VERSION=2.6.18-128.1.16.el5. Passed Checking for hardnofiles=4096; hardnofiles=1024. Failed <<<< Checking for softnofiles=4096; softnofiles=1024. Failed <<<< Check complete. The overall result of this check is: Failed <<<< Checking Recommended glibc version Expected result: ATLEAST=2.5-12 Actual Result: 2.5-34 Check complete. The overall result of this check is: Passed Checking physical memory Expected result: 1024MB Actual Result: 1196MB Check complete. The overall result of this check is: Passed
Install all the correct packages (yum available/yum install), and ignore the other warnings during install.


Setup your own db instance


I selected just all the components







Install Oracle WebLogic Server and Create the Middleware Home
chmod the bin file and run ./oepe11_wls1031_linux32.bin
I had some ‘wrong class version exceptions’, so installed java6 update14.
Installing Oracle SOA Suite
Unzip ofm_soa_generic_11.1.1.1.0_disk1_1of1.zip and run ./runInstaller in Disk1
Configuring Oracle SOA Suite
Now we need to configure the soa suite installation with the Oracle Fusion Middleware Configuration Wizard.
Go to
<ORACLE_HOME>/common/bin
and run ./config.sh



Since i used 1 db for all the components, select al the components and config the same db settings














Most of the steps are just next, next and a few more next.
Post-Installation Tasks
Start both the AdminServer and the ManagedServers.
AdminServer
<SOASUITE_HOME>/user_projects/domains/domain_name/startWebLogic.sh
ManagedServers
<SOASUITE_HOME>/user_projects/domains/domain_name/bin/startManagedWebLogic.sh soa_server1 (default name) <SOASUITE_HOME>/user_projects/domains/domain_name/bin/startManagedWebLogic.sh bam_server1 (default name)
On startup it will prompt you for the username/password we used on during installation
Installing Oracle SOA Suite Design-Time Components
For development we will download Oracle JDeveloper 11g R1 (Build 5407).
To be able to create soa projects in it we need to update it with the Oracle SOA Suite Extension.
Go to Help > Check for Updates. Select ‘Oracle Fusion Middleware Products’ in the ‘Search Update Centers’, next and select ‘Oracle SOA Suite Composite Editor 11.1.1.0′.
New consoles (look-and-feel)
weblogic server 10.3.1 console

enterprise manager

Installation is done!
Just a few urls to check if everything went ok
administration server
http://host:admin_server_port (default installation : http://localhost:7001)
wls console
http://host:admin_server_port/console (default installation : http://localhost:7001/console)
enterprise manager
http://host:admin_server_port/em (default installation : http://localhost:7001/em)
Links
Oracle Fusion Middleware Documentation Library
Oracle Fusion Middleware Products Update Center
Oracle11g on CentOS-5, package requirements
Oracle® Fusion Middleware Quick Installation Guide for Oracle SOA Suite11g Release 1 (11.1.1)
Ready to create some nice new fusion apps!
8 comments July 4, 2009




















