Oracle BPA Suite – An introduction

Oracle Business Process Analysis Suite is a new offering in the Oracle SOA Suite Stack which will bridge the gap between business process analysis and execution.

In short I will resume the most important features which were discussed during the presentation and demo:

  • 10.1.3.1 => loose integration between modeling and execution environments
  • 10.1.3.3 => full round-trip & integration between modeling and execution-platform through unique shared metadata model and Business Process Blue Print

Features:

  • Rapid prototyping of business requirements into bpel executables
  • IT can propose changes to business flow and executables and business can approve/reject changes in BPA
  • Continuous collaboration between business and IT during business process lifecycle
  • Local or Remote repositories can be used to enable multiple users working in a shared environment
  • Log in to BPA with different roles such as business analyst, data flow modellers, …
  • Process Participants can be mapped to existing user repositories, such as LDAP
  • No proprietary steps are being performed during the process lifecycle, everything is standards’ based BPMN methodology
  • Human Task Workflow-activities will use the same workflow patterns which you’re already familiar with in BPEL Designer
  • Oracle Business Process Publisher can be used by the business to get a real-time view on the defined processes in the shared repository :
  • When e-mail notification is configured, business users can share their thoughts, feedback with the BPA users
  • Jdeveloper 10.1.3.3 has extended functionality when creating bpel processes : Use Blue Print made available in BPA Server, in the shared repository, to create bpel process on existing blue print.
  • Merge changes made in BPA and Jdeveloper using the BPA-shared metadata model

In short BPA-Suite offers the whole business process lifecycle from analysis to implementation using a shared metadata repository.

The Original RAD RACE … and the winners are our APEX-Goeroes Olivier & Niels

The Original RAD Race ® International Edition 2007/2008 was held in Hasselt, Belgium on friday 19th & Saturday 20thOctober 2007.

Our two participants Olivier and Niels were ready to take up the challenge and were fully armed with their knowledge and expertise.

ON yhursday October 18th they set up their environment and friday October 19th the assignment was given to all teams. Saturday some change requests were given and Olivier and Niels were already putting in some fancy stuff, such as the image gallery already published on this blog.

Then each team was asked to present its application to the grand jury, so the waiting-part began. Worst of all, Niels and Olivier were the one but last team to give their presentation, which meant our patience was being tested ;o)

It’s time for our 2 goeroes to show the jury the APEX application they’ve built with all the fancy stuff and widgets they’ve developed.

The jury had some comments, but the overall feeling was pretty good.

When all teams finished their presentations, the jury went into deliberation and the other team-members, chearleaders/supporters could have a look at the different applications created by each team.
Time to hear the verdict … there was an ex aequo for the 1st and 2nd place, both teams had made rich user interfaces. Each application had its own benefits and features and the jury couldn’t decide which was the best one.

One of the applications was role-based, had a rich client interface, colour-based text-fields … and the supporters were thinking, this is the application of Olivier & Niels …

INDEED … Olivier and Niels had won the 1st price together with Getronics … keep-up the evangilisation boys !!!

ApEx: Implementing video on your ApEx page

Recently I had the need to play videos , stored in my database, in ApEx. Although this seemed like a difficult task, it’s pretty easy to accomplish.

What I needed was an embedded video player (like Windows Media Player) to play the video on my ApEx page in a specific region.

Let’s start:

1. Create a new ApEx page with an empty html region

2. Now let’s create some html code so we can display the windows Media Player in your web browser. Paste the next code in your html region source:
< object id=”MediaPlayer” width=320 height=286 classid=”CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95″ standby=”Loading Windows Media Player components…” type=”application/x-oleobject” codebase=”http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112″&gt;
<param name=”filename” value=””>
<param name=”Showcontrols” value=”True”>
<param name=”autoStart” value=”True”>
<embed type=”application/x-mplayer2″ src=”” name=”MediaPlayer” width=320 height=240></embed>
</object>

Some explanation:
The parameter filename will need the location where our file is stored, since the videos are stored in the database we will need to create a function that would return the video.

The parameter Showcontrols will show us player controls like ‘Play, Pause and Stop’ when set to ‘True’.

The parameter autoStart will start the video automatically when set to ‘True’.

You might notice the embed type, this is needed to play your video in Mozilla family browsers, The object tag is used for IE.

Run your page and you will see an empty Media Player:

3. Now create a procedure that will download your file to your web browser.

This is procedure could look like this:

PROCEDURE download_file(p_file_id IN files.file_id%TYPE)
IS
CURSOR c_my_file IS
SELECT file_content,
mime_type,
dbms_lob.getlength(file_content) file_length,
file_name
FROM files cmp
WHERE file_id = p_file_id;

rec_my_file c_my_file%ROWTYPE;
BEGIN
OPEN c_my_file;
FETCH c_my_file INTO rec_my_file;
IF c_my_file%FOUND THEN
owa_util.mime_header(rec_my_file.mime_type, FALSE);
htp.p(‘Content-length: ‘ || rec_my_file.file_length);
htp.p(‘Content-Disposition: attachement; filename=”‘||rec_my_file.file_name||'”‘);
owa_util.http_header_close;
wpg_docload.download_file(rec_my_file.file_content);
END IF;
CLOSE c_my_file;
END download_file;

4. Grant your procedure an execute to public otherwise APEX_PUBLIC_USER will not be able to execute it later on.

5. Now that we have our procedure we can implement it into our media player, open the source of your html region:

Change the next things:
<param name=”filename” value=”#OWNER#.pck$files.download_file?p_file_id=41″>

<embed type=”application/x-mplayer2″ src=”#OWNER#.pck$files.download_file?p_file_id=21″ name=”MediaPlayer” width=320 height=240></embed>

Although I use 21 hard coded for demo purposes here, you could always use an item of course. Note that my procedure is located in the package pck$files.

6. Run you page and you will see a nice movie playing in your ApEx webpage.

If you are planning to use this then I suggest you write a procedure that would display the apex code for the windows media player also, this way it’s more maintainable.

Eclipse & Jdeveloper Join Forces – My Bpel-enabled Flex Application

For one of my projects I need to be able to work out a RIA using Flex as the front-end, integrated with bpel processes as the back-end.

To be able to integrate these bpel processes with my flex user interface, I’ve created web service proxy clients in Jdeveloper.

These web service proxy clients can be invoked by flex using RPC or Livecycle Data Services, we’ve chosen for the last, LCDS.

After defining the architectural blue-print, I’m able to start implementing the first bpel process. In this post I will guide you through the different issues I’ve stumbled into during the development-track!

1. Installation-tips/-problems regarding Middletier with integrated BPEL :

  • Tip: Make sure that the version of the Application Server and Bpel Process Manager match the version of your JDeveloper IDE. In my case I’m working with the patched IAS Version 10.1.3.3 and Jdeveloper 10.1.3.3
  • Tip: When you’re installing an OracleAS Middle Tier you need to make sure you check ‘Configure this as an Administration OC4J instance’ when you want use Enterprise Manager. This is made optional because you can work in a clustered environment, lets say your production environment, where only 1 oc4j-instance needs to server as the Administration environment
  • Problem/Solution: When installing patch 10.1.3.3 on your existing Oracle Application Server you run into an exception when trying to overwrite Apache.exe => this probably means a Virus Scanner is running on your operating system which is preventing Unversial Installer of updating the file.

2. Problem/Solution Development-track, JDeveloper 10.1.3.3 IDE:

  • Problem, ‘Cannot edit WebService proxy after Webservice endpoint url has changed': I’ve defined my bpel process and web service proxy, but my middletier’s hostname has changed which means the bpel processes’ endpoint changed as well. I’ve manually updated the _Stub.java file, generated for the webservice proxy, and changed the endpoint url to the new hostname. If I try to edit the webservice proxy now, by choosing ‘Edit Handlers and Custom Mappings’, I get a message ‘Could Not Invoke Wizard’. The message points out that the old webservice endpoint is still used somewhere/somehow. I couldn’t find a reference to the old endpoint anywhere in the generated java-files. After some digging I finally found the cause, the webservice_proxy.proxy file. You need to change this file to be able to use the wizard again.
  • Problem/Solution: I’ve defined an XSD-file with default-attributes for my bpel process, this xsd file is validated and my bpel process is succesfully deployed BUT … If I try to create a web service proxy for this bpel process I’m getting a nullPointerException. This exception is actually true because I’ve defined the default-attribute for an xs:element with a ref-attribute, in other words, this xs:element refers to an existing defined xs:element. Solution: Define the ‘default’-attribute on the xs:element definition, using the name- and type-attribute and not the xs-element used to define your complex-type.

3. Problem/Solution Development-track, Eclipse IDE & Flex Plug-in :

  • Problem/Solution: Exception is thrown when you run your flex application ‘illegal override of rtmpChannel’. This error can be due to incompatible project files and eclipse jar-files, as in my case I imported an already existing projet in my new eclipse environment. To solve this issue I’ve created a new flex dataservices project and copied all the jar-files in the web-inf/lib folder into the imported project
  • Problem/Solution: ‘Selected wizard could not be started , Plug-in was unable to instantiate class'; this error occurs when you try to create a flex component. The solution in my case was to recreate my development environment, in other words install eclipse, flex plug-in, lcds again.
  • Problem/Solution: ‘Unable to access UserTransaction in DataService’, this errors occurs when you try to invoke the dataservice you’ve configured in your flex application using lcds. This probably means you need to configure JOTM in your tomcat server, or appliction server environment. Check out: http://kb.adobe.com/selfservice/viewContent.do?externalId=6b82874f&sliceId=2

I will keep you posted!

Changing the default password ‘welcome1′ of Oracle Bpel Process Manager

When you’re installing Oracle Software you always need to specify username and password settings for the administrator-profile, such as for Oracle Application Server or Oracle Database.

The same applies when installing Oracle SOA Suite 10.1.3.1 or Oracle Bpel Process Manager Option on Oracle Application Server Entprise Edition.

But there’s a catch here, you need to use the default password ‘welcome1′ when installing Oracle Bpel Process Manager to make sure the default processes for the Worklist Application are deployed succesfully.

The samples provided with Oracle Bpel Process Manager still need to be updated to be able to run them, because the default password ‘welcome1′ is used in the configuration files.

After the Oracle Bpel Process Manager has been installed you can update the administrator-password by performing the following steps:

  • Go to Enterprise Manager of your Oracle SOA Suite or Application Server installation
  • Click on the setup-link on top of the Application Server Control to update the password of the IAS Administrator account, which is ‘oc4jadmin’

  • To change the password of the Bpel-admin users, you need to navigate back to the home page of your Enterprise Manager and click on the OC4J instance which is created for your Bpel Process Manager. Click on the ‘administration’ tab of your OC4J instance

  • Click on the ‘Security Providers’ Task in the Administration Tasks

  • Click on the ‘Instance Level Security’ Button to be able to identify the used realms by the oC4j instance and the defined users and roles in this realm.

  • Click on the Second Tab in this screen to have a look at the used realms by this OC4J instance. The default realm installed is the ‘jazn.com’ realm. You can add other realms or modify the existing one.

  • To change the passwords of the admin-users you need to click on the Users-link which is shown for the given realm ‘jazn.com’. In this screen you can then look-up the bpel-admin users and change the default passwords. The admin-users used by bpel are the ‘oc4jadmin’ and ‘bpeladmin’-user.

First steps in developing sexy screens for Bpel Processes … yep that’s right … let’s do some Flex-and-Oracle-SOA Integration

Today I started building my first Flex application using Data Management Services … why Data Management Services I hear you thinking.

Don’t get me started on that topic ;o)

The Flex Data Management Service (FDMS) provides a mechanism to maintain data distributed over the client and server tiers.

The Service supports features such as:

  • Data Synchronization
  • Data Replication
  • Occasionally Connected Clients

Additionally, this mechanism offers the possibility of extended functionality in a couple of areas:

  • Automatic synchronization of multiple clients viewing the same accounts data via server “push”.
  • Automatic re-synchronization of client and server data following a server or communications outage.

Now you know why I would choose for FDMS, indeed less work for me and less code to maintain.

The FDMS will need to communicate with my Oracle BPEL Processes which hold all the nesessary process-flow and business logic. How can I interface Flex and BPEL … well no ifficulty lies in there because every deployed BPEL Process is a Web Service so let’s start interfacing.

This also means I’m working with two IDE’s , one for the front-end and one for the back-end:

  • Back-end: JDeveloper to design the bpel processes and define proxies for these processes
  • Front-end: Eclipse to integrate flex and bpel processes, to define FDMS, ActionScript, mxml-files, …

So I’ve packaged my webservice proxy’s and added them on the classpath of my flex-application. Now I need to define my Assembler-class to be able to hook up the bpel processes with FDMS.

In order to integrate the prototypes client tier with the back-end server tier using Flex’s Data
Management Service mechanism, I need to implement a custom Java “Assembler” class.

The Flex Data Service instantiates the Assembler java class and invokes its methods.

To enable this, two additional things need to be done on the server side:

  • The Web Service Proxy to be called needs to be included in the Flex Data Services classpath.
  • The Flex Data Services configuration files need to be updated with a definition of the
    Data Management Service.

For the client tier I need to define the needed ActionScript objects that will be mapped automatically to the POJO’s used in my Bpel Process (Web Service).

The only downside of this, is the need for defining this one-to-one mapping in an ActionScript object whilst in these days you would use IntroSpection to accomplish this. Now I need to duplicate the object-declaration which is already known in POJO’s as well in ActionScript-objects.

Untill now I’m defining all the needed ActionScript-objects manually, aren’t there any generators available for this monkey-task, and afterwards I can start building the UI using mxml.