RSS

Author Archives: jvzoggel

About jvzoggel

Middleware Consultant / the Netherlands / 's-Hertogenbosch / RUBIX.nl

How to configure Oracle SOA/BPM task auto release

When a Oracle SOA or BPM workflow task is assigned to a role and/or group a user may acquire the task to work on it. Once the task is acquired, other users are not able to work on that specific task. In the Oracle SOA-INFRA, used by both SOA Suite and BPM Suite, there is a feature called ‘task auto release’ which allows to configure the duration before tasks are automatically released and made available for all other users again.

In Enterprise Manager go to soa-infra -> SOA Administration -> Workflow Properties

01

Select the Task tab and expand Advanced. There you can see there are default values for automatically releasing tasks according to their priority. In the screenshot below the default value of P3D (3 Days) is changed to P1TM (1 minute) for testing purposes. This is done for the priority 3 task, which is the default priority.

 


02

Another feature is to use the expiration data (most right column) of tasks. This feature only works when you map the expiration Duration element in your BPEL or BPM tasks. In the example below the duration is set to P2D (2 days) which means with a priority 3 task the task is released after 1 day (50%).

03

 

References:

 
Leave a comment

Posted by on 07-04-2014 in BPM, Oracle, SOA Suite

 

Tags: , ,

How to enable automatic startup recovery in Oracle BPM 11g

For some reason the default settings for automatic recovery of instances is different between the Oracle BPEL and Oracle BPMN engine in 11g. We can view and change these setting under SOA Administration in the Oracle Enterprise Manager:

Select the BPMN properties from the menu (or off course BPEL for the BPEL engine)

Soa Administration

Click on “More BPMN Configuration Properties…”:

002

Click on the “RecoveryConfig” setting

003

The zero (or a negetive) value disables startup recovery, so the default of 0 means the BPMN engine will not recover any instances.

004

If you want, you can compare it with the BPEL engine, where the default is 600 seconds (10 minutes)

005_bpel

As the Oracle documentation states:

StartupRecoveryDuration
Specifies the number of seconds that the startup recovery period lasts. After the server starts up, it goes into a startup recovery period. During this period, pending activities and undelivered callback and invocation messages ae resubmitted for processing. The default value is 600 (ten minutes). A negative or zero value disables startup recovery.

References:

 
Leave a comment

Posted by on 26-02-2014 in BPM, Oracle

 

Tags: ,

Using variable structures in Oracle Service Bus

Recently at a customer one of the Oracle Service Bus developers complained to me that using Xpath mappings in the OSB can be quite complex. The reason of the remark was that with the Assign action custom variables were set and later in the service the OEPE graphical mapper only shows the default $body, $header, etc variables. However the Oracle Service Bus IDE allows the definition of custom variables.

First in this example we use the Assign action to create our own variable $body_original which in this example is just acopy of the original received $body message.

setVariabel

After this we select the Variables section on one of our actions in the stage we need to map the $body_original message. Click on the Add button and a pop-up should appear. The structure label is nothing more then some sort of “group” where the variable will be stored. The Structure Path however is used to define the variabel name you assigned earlier and on runtime will be stored in memory. In this example we used $body_original.

defineCustomVar2

The result should then look like something here below. The new variable is known in the OEPE IDE and the structure of the XML message is shown.

defineCustomVar_result

When we look at a Replace, Assign or any other action we now have the chance to easily map with the custom variable $body_original. In our example not a big deal since the XPath statement is very simple, but when using very big and complex XSD (for instance with imports) this is very handy since it prevents you from making namespace or XPath mistakes.

mapVar

Remark:

  • Variable structures defined in your IDE will only be visible for the actions within that specific Stage.
  • Variable structures define the structure of the variable (in this example the XML structure) but do NOT define the variable itself.

References:

 

 
3 Comments

Posted by on 17-02-2014 in Oracle, OSB

 

Tags: ,

Error with Oracle BPM process metric view during deployment

Since we use BI metrics in our Oracle BPM processes we configure these in JDeveloper. However after adding/renaming/deleting a metric we sometimes discover that we are still able to deploy the BPM composite. However the process specific database view (Analytic View Identifier) is gone.

When we check the Enterprise Manager we discover the following error:

EM Error Message


Component soa_server1
Module oracle.bpm.analytics.cube.persistence
User jzoggel
Thread ID [ACTIVE].ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'
ECID 0000K838zKS8xk35vnT4iX1IRqKb000005
Message SQLException from: CREATE VIEW BPM_ACTV_PERF_MYPROCESS_V AS
Supplemental Detail SELECT
PERF.TASKPERFID AS SEQUENCE_ID,
PERF.PROCESSID AS PROCESS_ID,
PRC.PROCESSNAME AS PROCESS_NAME,
PRC.REVISION AS REVISION,
PERF.ECID AS ECID,
PERF.ACTIVITYID AS ACTIVITY_ID,
ACT.LABEL AS ACTIVITY_LABEL,
PERF.COMPONENTINSTANCEID AS PROCESS_INSTANCE_ID,
PERF.COMPOSITEINSTANCEID AS COMPOSITE_INSTANCE_ID,
PERF.DISCRIMINATOR AS ACTIVITY_DISCRIMINATOR,
PERF.ROLEID AS ACTIVITY_ROLE_ID,
PERF.CREATIONDATETIME AS ACTIVITY_START_TIME,
PERF.COMPLETIONDATETIME AS ACTIVITY_END_TIME,
PERF.TASKTIME AS ACTIVITY_RUNNING_TIME_IN_MSEC,
PERF.PARTICIPANT AS ACTIVITY_PARTICIPANT,
PERF.PRIORITY AS ACTIVITY_PRIORITY,
PERF.TENANTID AS TENANT_ID

FROM BPM_CUBE_TASKPERFORMANCE PERF, BPM_CUBE_PROCESS PRC, BPM_CUBE_ACTIVITY ACT
WHERE
PERF.PROCESSID = 61015 AND
PERF.ACTIVITYID = ACT.ACTIVITYID AND
ACT.PROCESSID = PRC.PROCESSID
UNION ALL
SELECT
PERF.TASKPERFID AS SEQUENCE_ID,
PERF.PROCESSID AS PROCESS_ID,
PRC.PROCESSNAME AS PROCESS_NAME,
PRC.REVISION AS REVISION,
PERF.ECID AS ECID,
PERF.ACTIVITYID AS ACTIVITY_ID,
ACT.LABEL AS ACTIVITY_LABEL,
PERF.COMPONENTINSTANCEID AS PROCESS_INSTANCE_ID,
PERF.COMPOSITEINSTANCEID AS COMPOSITE_INSTANCE_ID,
PERF.DISCRIMINATOR AS ACTIVITY_DISCRIMINATOR,
PERF.ROLEID AS ACTIVITY_ROLE_ID,
PERF.CREATIONDATETIME AS ACTIVITY_START_TIME,
PERF.COMPLETIONDATETIME AS ACTIVITY_END_TIME,
PERF.TASKTIME AS ACTIVITY_RUNNING_TIME_IN_MSEC,
PERF.PARTICIPANT AS ACTIVITY_PARTICIPANT,
PERF.PRIORITY AS ACTIVITY_PRIORITY,
PERF.TENANTID AS TENANT_ID,
PERF.FLEXSTRING03 AS D_USER,
PERF.FLEXSTRING02 AS D_CASENUMBER,
PERF.FLEXSTRING01 AS D_PRODUCT
FROM BPM_CUBE_TASKPERFORMANCE PERF, BPM_CUBE_PROCESS PRC, BPM_CUBE_ACTIVITY ACT
WHERE
PERF.PROCESSID IN (20499,32601,27810,47859,20397,9013,15447,33553,8643,46749,48636,47229,47071,47545,46913,47387,33827,47702,57000,54392,57382,57764,57573) AND
PERF.ACTIVITYID = ACT.ACTIVITYID AND
ACT.PROCESSID = PRC.PROCESSID java.sql.SQLSyntaxErrorException: ORA-01789: query block has incorrect number of result columns

The cause of the problem is due to the auto generated SQL script using a non valid union statement. To quick fix is to manually re-run the script and adding the PERF.FLEXxxxx columns in the SQL statement. Or much better, clean up the old process id references in the table BPM_CUBE_PROCESS. Just check the references of processid in the auto generated statement and remove the invalid references.

 
Leave a comment

Posted by on 13-01-2014 in BPM, Oracle

 

Tags: , ,

2013 in a nutshell

Well 2013 is coming to it’s end and the WordPress.com stats helper monkeys prepared a complete 2013 annual report.for this blog.

Here’s an excerpt from the report:

The Louvre Museum has 8.5 million visitors per year. This blog was viewed about 100,000 times in 2013. If it were an exhibit at the Louvre Museum, it would take about 4 days for that many people to see it.

Besides the annual report WordPress has some cool features like showing geographically where visitors traphic is coming from.

2013 Country Stats

Looking at the hits during 2013 it’s clearly noticable that:

  • The United States, home of the tour winner Greg Lemond, is still leading strong (let’s not mention the other 2 US gentlemen here)
  • India claiming silver above the UK holding bronze. This clearly shows that owning the most advanced pro-cycling Team (SKY) doesn’t help you beating India regarding implementation of Oracle technology. Bare that in mind!
  • The Dutch are close behind Brazil, again lacking a few point like the 1998 FIFA World Cup semi-finals. Well at least we still have Marianne Vos and with her winning gold at sport events that are about physical suffering instead of showing off your hair style;-)
  • Anyway I will stop boring you with my cycling references ;-)

Work

For me personal 2013 was a great year (both personal and work related, but I will spare you the personal stories ;-) So regarding work: In the end of 2012 I started working on a huge Oracle BPM/SOA/WCC/ADF project doing a implementation for a custom case management application. With my background in BEA ALSB/Weblogic (and a small part of ALBPM) a change after years of ALSB/OSB and WLS was very welcome.

So after numberous sprints, standups and grooming sessions we were able to go live with our application last month. During that periode, and still now with the new releases extending functionality, we’re doing very cool stuff with the whole Oracle Fusion Middleware suite. During the project we often used Google and other Oracle technology blogs to help us with our implementation and try to share our knowledge and experience

Sadly I had to miss Oracle Open World this year since my personal agenda couldn’t allow it (I did try calling Larry, but sadly he wouldn’t move the event). Luckily the Twitter timeline explosion and many blogs kept me updated during the event while being back home in the Netherlands.

Then in October I was pleasantly surprised when I was rewarded the Oracle ACE title which quickly. I warmly thank the persons who nominated me and hope to continue being part of the Oracle community for the next year(s) to come.

20131213_112614

 
Leave a comment

Posted by on 31-12-2013 in Uncategorized

 

Building a stub with Oracle Service Bus

This year I’ve seen a few Oracle Fusion Middleware projects where there was a need for a stub service on the development and/or test environment. Developers were building composites/services with Oracle SOA Suite and/or Oracle Service Bus. The project then installed SOAPui on Linux servers and used SOAPui mockservice functionality or build very extensive Java applications which could generate responses for multiple webservice clients.

However to keep things much more simple, the Oracle Service Bus allows you to create a very simple project which you can use as a STUB service. Since OSB supports multiple transports it’s an ideal STUB for most of your webservice clients. And besides that: it’s easy & fast.

Simply create a OSB project and add 1 proxy service.
In the response pipeline, create a stage with a Replace action:

Oracle Service Bus Proxy

 

Just replace the node content with a valid SOAP response message:

Oracle Service Bus response message

Make sure the namespace prefix you chooce is valid (in the example v1).

Oracle Service Bus proxy namespace

Voila your done!

You can easily extend your STUB project by using the execute-SQL function (example here) to allow different responses which you store in a Oracle database schema.

Hope it helps!

 
Leave a comment

Posted by on 10-12-2013 in Oracle, OSB

 

Tags: ,

Using global token variables for SOA and BPM SCA composites

Our Oracle BPM project is going live and so many user stories lately are targeted to the operational support team to help them ease the deployment and maintenance through the environments.

Since we are already using the Credential Store Framework (blog here) to centralize the authentication/authorization part of our Oracle BPM (and SOA) SCA composites our application configuration plans became smaller and much easier to maintain.

The only deltas in our configuration plans through dev, tst, acc and prd are the endpoint hostname & ports in the different environment. Configuration plans are composite-specific so we need to maintain them for each SCA composite application and often have to change the same value in multiple plan files. For example: the Oracle WebCenter Content endpoint is used by many of our BPM processes.

So together with our Oracle Fusion Middleware administrator “Two Tone” Tony van Esch we dove into the fact that Oracle Fusion Middleware 11.1.1.7 (PS6) supports the ability to use Token Configuration. Also check Tony’s blogpost of our adventure. Tokens helps us, identical to the CSF, to define a global configuration which can be used by multiple SCA composites we deploy on the SOA-INFRA.

In your Enterprise Manager right-click on soa-infra -> SOA Administration -> Token Configuration

Token Configuration

Token Configuration

Here you will see 2 options, the second (most straightforward version) is to manually add, delete, modify changes and commit them straight into the Metadata Manager (MDM). The top option (Bulk Append Tokens) allow you to load large numbers of tokens from a mdm-url-resolver.xml file into the MDM.

Below is an example of an mdm-url-resolver.xml file which bulk loads multiple tokens:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
 <comment>URL Resolver file used by the Metadata manager</comment>
 <entry key="ucmProtocol">http</entry>
 <entry key="ucmHostname">ucm.rubix.local</entry>
 <entry key="ucmPort">7301</entry>
</properties>

To use these new token values from your MDM you simple configure your composites.xml to look something like this:

</pre>
<binding.ws port="..." location="${ucmProtocol}://${ucmHostname}:${ucmPort}/..." soapVersion="1.1">
</binding.ws>
<pre>

For us this simplified our release process (we actually don’t need any configuratuion plans anymore). This makes deployment through OTAP much easier and less likely to fail through any human mistake. Besided that when using automated deploy tooling it saves you on scripting numberous replace actions.

Some mental notes: !!

  • Tokens are only supported for the host, port & protocol at the ws.binding location and properties under the reference tag in your composites.xml. Don’t try using them in the import section
  • You will need to restart your SOA-INFRA after adding or modifying the tokens before they can be used (small disappointment here)
  • You cant create token names with special characters, host-name for instance won’t work. Also dots seem to be a problem, so just keep it simple and use camelcase.
  • Tokens don’t seem to work in MDS reference WSDLs
  • By default there is 1 default out-of-the-box variable named ${serverURL} which can be used in your composites.xml to point to the SOA server itself. It has to be configured on a different location in Enterprise Manager soa-infra under SOA Administration -> Common properties. Again a restart is necessary. I don’t really get the point myself of separating these settings in your SOA configuration. My advice would be that you define the soa binding tokens together with all other tokens and don’t use this.

serverUrl

References:

 
2 Comments

Posted by on 20-11-2013 in BPM, EM, Oracle, SOA Suite

 

Tags: , , ,

 
Follow

Get every new post delivered to your Inbox.

Join 323 other followers