Domain Portal

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg
Showing posts with label BPEL. Show all posts
Showing posts with label BPEL. Show all posts

Wednesday, 19 March 2008

JDeveloper 11g and SOA Suite 11g integration

Posted on 00:54 by Unknown
On my blog you can find application I have developed previously - Invoking BPEL Process from Oracle ADF Application. Application described in my previous post is developed with JDeveloper 10.1.3.x, BPEL process with parameters is invoked here, however I don't return any parameters back to ADF application from BPEL process. Today I have developed new application based on JDeveloper 11g TP3 and SOA Suite 11g TP, where a set of parameters is accepted and returned by BPEL process from and to ADF application.

Sample application for this blog post is based on two parts - SOAComposite.zip and SalaryUpdate.zip. First part contains a simple BPEL process that accepts and returns a set of parameters. Second part is ADF application that invokes BPEL process, receives result from BPEL process and stores this result into database. I'm using HR schema for this sample, you can find this schema in Oracle XE database.

In order to run developed sample application, you need to configure JDeveloper 11g TP3 according to instructions available on this page - Oracle SOA Suite 11g - Technology Preview. Just follow install instructions and it will work. May be also this Oracle SOA Suite 11g Technology Preview - Configuration Hint will be useful.

SOA part in developed sample application is relatively simple, it contains one BPEL process:


This BPEL process accepts input parameters, performs some calculations and returns updated parameters:


Since there are three parameters - EmployeeID, SalaryValue and CompensationValue, updateSalary Assign activity implements Copy operation and provides values for process output:


However, one of the parameters isn't just copied, but modified - SalaryValue is increased by 100:


If we will test developed BPEL process and will provide 5300 as a value for SalaryValue parameter:


Generated result will have 5400 for SalaryValue parameter:


Now let's talk about a second part - ADF application. Here I have created Web Service Data Control based on WSDL for BPEL process:


As a result, I got a possibility to invoke BPEL process and to have a Data Control for returned parameters:


BPEL process invocation is defined in Page Definition file:


I'm accessing results returned from BPEL process through accessorIterator, this iterator is binded to methodIterator which is related to BPEL process invocation definition. accessorIterator and methodIterator definitions:


And finally, all fun stuff is done in Backing bean method associated with Update button:


In this method I'm invoking BPEL process, retrieving returned result from accessorIterator and storing updated value into database.

How it works? Let's say we select employee with STOBIAS email and press Update button:


Salary value is updated by 100:

Read More
Posted in ADF, BPEL, JDeveloper 11g, SOA | No comments

Saturday, 21 July 2007

Invoking BPEL Process from Oracle ADF Application

Posted on 05:44 by Unknown
In today post I have decided to describe and show how application developed using Oracle ADF can fit into SOA (Service-Oriented-Architecture). SOA is important technology, because it allows developers to find common language with business analysts and as result to develop more useful systems. Simply speaking, SOA allows to participate in system development both parties - IT and non IT. IT folks develop technical things and non IT people are allowed to manage system logic. My goal is to show, how it looks in reality, and how it works with Oracle JDeveloper and Oracle SOA Suite. Sample applications are developed using Oracle JDeveloper 10.1.3.3 and BPEL process is tested on Oracle BPEL Process Manager 10.1.3.1.0. For those who will want to look further, I recommend to browse through Guides and Tutorials available on Oracle BPEL Process Manager 10.1.3.1.0 Information page.

Web application - SalaryBonusApplication.zip and synchronous BPEL process - SalaryBonusProcess.zip are provided as sample applications. Web application Model layer is implemented using Oracle ADF Business Components and is based on standard HR schema, in View layer ADF Faces components are used. Synchronous BPEL process access HR schema using Oracle TopLink.

Developed logic - in Web application users can search for particular employee and select him/her for salary update process. Salary update is based on current salary and applied bonus value. Salary update business logic is implemented in BPEL process. So, it's where we can see a power of SOA - salary update business logic can be changed at any time by non IT people, they will just need to modify defined process.

I will start from process part description. Implemented BPEL process diagram:


In first step, process receives input. In second step, conditional logic is applied and process output is calculated. When process output is known, data is transformed to be compatible with EMPLOYEES table structure from HR schema. After transformation step, employees data update in database is invoked and process is finished.

As it was described, salary update process is based on two parameters - current salary and applied bonus, however employee ID is also needed. Process parameters are described in XSD document:


Process logic is implemented in switch activity. Switch activity rule is based on bonus variable value:


When process output is calculated, data should be transformed in order to be stored in EMPLOYEES table. Transformation can be defined using Oracle JDeveloper wizard tool:


And finally, transformed data is used in database update through Invoke activity:


Yes, database table will be updated from BPEL process. And there is no magic, simply Oracle TopLink object-relational mapping functionality is used. Complete project structure view in Oracle JDeveloper navigator:


Process part description is completed, now we will move to Web application part. Web application contains two forms, first is Search Employees form:


Second form - Edit Employee Salary, can be opened for selected row:


Update Salary button here invokes BPEL process. Salary calculation is done outside of Web application, through Web Service submited values are passed to process where are modified and stored to database. In Web application refresh action is executed and updated values are shown:


You can notice, that salary value is increased by 100, this logic is defined in BPEL:


You may wonder, how BPEL process can be included into Web application developed using Oracle ADF. But it is simple, Oracle JDeveloper provides complete solution - you just need to provide WSDL URL and Data Control for available operations will be generated and displayed in Data Control pallette:


BPEL process is accessed through Web Service specified in DataControls.dcx file:


Action related to BPEL process is defined in page definition file in standard way:


Executed BPEL process instance can be explored from Oracle Enterprise Manager 10g BPEL Control window - executed process steps are represented in visual flow and values available in each step are provided:


When running sample application, don't forget to add adf-faces-impl.jar and jsf-impl.jar to application's WEB-INF\lib directory.
Read More
Posted in ADF, BPEL, SOA, Web Services | No comments
Older Posts Home
Subscribe to: Posts (Atom)

Popular Posts

  • Groovy - Multiple LOV's per Attribute in JDeveloper 11g
    I was blogging previously about multiple LOV's per attribute functionality. I was using RowImpl class for View object in order to calcu...
  • External Transaction Service in Oracle TopLink
    I have developed sample application, in order to demonstrate how to use External Transaction Service (ETS), when Oracle TopLink is used in M...
  • Many-to-Many mapping in Oracle TopLink
    This kind of mapping in relational world is constructed using three tables. However, in object world only two classes are used for many-to-m...
  • Multi-selection feature and ADF Faces af:table component
    In this post I will describe how to use multi-selection feature in ADF Faces. First of all I should say - multi-selection feature is fully s...
  • Oracle JDeveloper/ADF Developers Wanted
    In my current Oracle JDeveloper/ADF project we are searching for additional developers. Project is based on Oracle Fusion 11g, so it can be ...
  • After UKOUG'08
    This week I was on UKOUG'08 conference. I really have enjoyed high quality of its content and I have learned new technical things about...
  • Oracle Spatial and Network Data Model
    During this week, a student from university where I'm achieving my master degree - Vincent, have asked me how to create SDO network dat...
  • Customizing Applications with MDS - Practical Overview
    During ODTUG Kaleidoscope 2008 , I was discussing with Shaun O'Brien (Principal Product Manager from Oracle Development Tools group) abo...
  • Hints for ADF 11g Application Credential and Policy Migration to Standalone WebLogic Servers
    Recently I was deploying our ADF 11g application on standalone WebLogic server. Deployment itself is straightforward, however it is little b...
  • Workaround for Null Value Bug in ADF List Of Values 11g
    Those of you, who are using List Of Values (LOV) component in ADF 11g, most probably already have noticed bug related to Null value. Simple ...

Categories

  • ADF
  • Apex
  • Apple
  • BPEL
  • Events
  • Forms
  • Groovy
  • JDeveloper 11g
  • Nomination
  • ODTUG Kaleidoscope
  • OFUG
  • Oracle Magazine
  • Oracle OpenWorld
  • Security
  • SOA
  • Spatial
  • TopLink
  • Traveling
  • Uncategorized
  • Vgo Software
  • Web Services
  • WebCenter
  • WebLogic
  • Workarounds

Blog Archive

  • ▼  2008 (72)
    • ▼  December (2)
      • Groovy - Multiple LOV's per Attribute in JDevelope...
      • After UKOUG'08
    • ►  November (3)
    • ►  October (9)
    • ►  September (4)
    • ►  August (9)
    • ►  July (6)
    • ►  June (10)
    • ►  May (4)
    • ►  April (5)
    • ►  March (7)
    • ►  February (5)
    • ►  January (8)
  • ►  2007 (65)
    • ►  December (6)
    • ►  November (7)
    • ►  October (6)
    • ►  September (4)
    • ►  August (3)
    • ►  July (4)
    • ►  June (6)
    • ►  May (5)
    • ►  April (6)
    • ►  March (4)
    • ►  February (5)
    • ►  January (9)
  • ►  2006 (9)
    • ►  December (9)
Powered by Blogger.

About Me

Unknown
View my complete profile