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.

route_event

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.

invoke_event

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

JDeveloper Project

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.

  1. Create a new composite and add a dvm to it
  2. Create a new dvm

  3. Select the project, goto File > New > SOA Tier > Transformation > Domain Value Map

  4. Create the transformation in the mediator and connect the dvm
  5.   <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(&quot;Countries.dvm&quot;,&quot;CODE&quot;,/inp1:Input/inp1:Code,&quot;Fullname&quot;,'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.
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

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

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

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 &lt;&lt;&lt;&lt;
Checking for gcc-c++-4.1.0-28.4; Not found. Failed &lt;&lt;&lt;&lt;
Checking for setarch-1.6-1; found setarch-2.0-1.1-i386. Passed
Checking for sysstat-5.0.5-1; Not found.  Failed &lt;&lt;&lt;&lt;
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 &lt;&lt;&lt;&lt;
Checking for compat-libstdc++-296-2.96-132.7.2; Not found.  Failed &lt;&lt;&lt;&lt;
Checking for compat-db-4.1.25-9; Not found. Failed &lt;&lt;&lt;&lt;
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 &lt;&lt;&lt;&lt;
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 &lt;&lt;&lt;&lt;
Checking for softnofiles=4096; softnofiles=1024.  Failed &lt;&lt;&lt;&lt;
Check complete. The overall result of this check is: Failed &lt;&lt;&lt;&lt;
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.

rcu1
rcu2
Setup your own db instance
rcu3
rcu4
I selected just all the components
rcu5
rcu6
rcu7
rcu8
rcu9
rcu10
rcu11

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.

wls1
Create a new home
wls2
wls3
wls4
wls5
wls6
wls7
wls8
wls9
wls10
wls11

Installing Oracle SOA Suite

Unzip ofm_soa_generic_11.1.1.1.0_disk1_1of1.zip and run ./runInstaller in Disk1

soa1
soa2
soa3

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

soaconfig1
soaconfig2
soaconfig3
Since i used 1 db for all the components, select al the components and config the same db settings
soaconfig4
soaconfig5
soaconfig6
soaconfig7
soaconfig8
soaconfig9
soaconfig10
soaconfig11
soaconfig12
soaconfig13
soaconfig14
soaconfig15
soaconfig16
soaconfig17

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
wlsconsole
enterprise manager
enterprisemanager

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


Recent Posts

Archives

Categories

Blogroll

View Eric Elzinga's profile on LinkedIn

wordpress com stats plugin

mytwittering