Friday Mar 21, 2014

Bulk removal of Faulted SOA Composite Instances

Oracle SOA Suite 11g provides administrators with a set of Purge scripts to manage
the retention of SOA Composite instance data.

The scripts are specifically designed to not remove composite instances in the faulted
state to ensure that business data is not discarded.


However in a development environment, a large number of faulted instances
can accumulate during testing.

This post provides an example of a Java Utility that utilizes the SOA Suite Invocation
 API to remove all instances in the faulted state.

Read the full article here

Tuesday May 21, 2013

Enable developers to deploy SOA Suite Composites Using Hudson

Lately I have been working with a customer who wants to enable their developers to deploy their own
SOA suite composites to a protected QA Server based on a checkout from Subversion.

As part of the customer's current composite promotion process, the developers check their unit tested code
into Subversion and then email a build manager to checkout, build and deploy the code to the QA environment.
This approach introduces delay and places a signification administration burden on the person in the build manager role.

This blog post provides an example of how Hudson can be used as a self service web page that allows developers
to initiate the automated checkout, build and deploy process.
It may be counter-intuitive to use Hudson as a manual build tool, but it fits the requirement nicely.  

Read the full post here

Monday Feb 18, 2013

Create Oracle Business Rules using the Java API

SOA Suite and BPM Suite 11g developers and end users normally develop and edit Rule sets
using graphical tools such as the JDeveloper Rule editor and the SOA Composer Web Application.

But Rules can also be created and manipulated using the Oracle Business Rules Java API,
in fact both of the graphical editors leverage the API to perform their work.

This blog post provides a Rules API Example that illustrates how to:

  •     Load an existing Rules Dictionary from the file system.
  •     Add a Java Fact to the dictionary Data Model.
  •     Add a new List of Values BucketSet to the Dictionary Data Model.
  •     Create and add a new Rule Set to the dictionary.
  •     Associate the new BucketSet with a given Fact property.
  •     Create a new If / Then Rule
  •     Create a new Decision Table with multiple Rules that leverage the new Bucketset.
  •     Validate and Save the updated Rules Dictionary

Read the full post and get the example here

Wednesday Dec 19, 2012

Extend OER to enable deletion of unsubmitted assets

This post provides a small extension to OER 11g that allows users without full Registrar
permissions to delete their own unsubmitted assets.

When the extension is installed in OER, a delete button conditionally appears
on the Asset Details page of the OER Web App.

The button is only visible if the selected Asset is in the 'Unsubmitted' state and the asset was
created by the current user.

Read the full post here 

Wednesday Sep 26, 2012

Process Oracle OER Events using a simple Web Service

This post provides an example of a simple web service that processes Oracle Enterprise Repository (OER) Events.
The service receives events from OER and utilizes the OER REX API to implement simple OER
automations for selected event types.

The web service example implements the following:

  • When a new Asset is Submitted to OER:
    • The Asset is automatically Accepted by a defined user.
  • When an Asset is Accepted:
    • The Asset is automatically assigned  to a defined user for review.
    • If the accepted asset is of type Service
      The Version meta data attribute is set based on the version id contained
      in the suffix of the Service Namespace.     
  • When an Asset is Registered:
    • If the registered Asset is of type Service
      The related Assets ( Interface and Endpoint are also automatically registered.

The sample web service is not intended to replace the out of the Box OER BPM Based workflows,
but the service can be utilized in cases where only simple automation is required and the developer has a Java skill set.

Deployment
Diagram

The service is a lightweight web application that can be easily deployed to the same server as OER or on a different server.

Read the complete post here

Thursday Jun 28, 2012

Create an Asynchronous JAX-WS Web Service and call it from Oracle BPEL 11g

This posting is the result of a simple requirement to take an existing JAX-WS Web service,
convert it to be asynchronous and call it from Oracle BPEL 11g

It turned out that this is not a trivial task...
BPEL has some very specific expectations about the WSDL for an asynchronous process.

One approach is to develop the service starting from a WSDL document that meets BPEL's requirements.
This is possible but requires considerable WSDL authoring skills.

The other approach is to modify the WSDL generated by Web Service Annotations in Java code
(Bottom up development) and instruct JAX-WS to use that WSDL instead of dynamically generating one from annotations.

This is the approach taken in this article. This posting details how to:

  • Modify a JAX-WS Web Service developed using a "Bottom up " approach to have an asynchronous method and callback.

  • Call the Asynchronous Service from Oracle BPEL 11g.

Read the full posting here.

Wednesday Jun 20, 2012

JDeveloper does not recognize existing subversion working directory

Just a quick note about an issue where JDeveloper no longer recognized an existing
subversion working directory.

Symptom: 

JDeveloper Versioning menu offers to Version an Application that is already versioned in svn.


Jdev_svn


Cause:

The repository url contained in the hidden .svn folders of the working directory is no longer valid.

Solution:

Determine the correct url for the Subversion repository and update the .svn working directory.
Fix the url contained in the svn folders of the working directory using the svn switch command.

Example:

          In a shell change directory to the Application folder.

          Run the svn info command to confirm the current settings.

               $ svn info
                  Path: .
                  URL: http://192.168.1.128/repos/jdeveloperrepo/AsyncExamples/BPELCallAsync/trunk
                  Repository Root: http://192.168.1.128/repos/jdeveloperrepo
                  Repository UUID: 3dc5eb88-3001-0010-8d6e-fd6f73825647
                  Revision: 145
                  Node Kind: directory
                  Schedule: normal
                  Last Changed Rev: 145
                  Last Changed Date: 2012-06-07 07:15:56 -0700 (Thu, 07 Jun 2012)

           In this case, the IP address in the repository URL is incorrect,
           the svn server is located at 192.168.56.1
           Note: The IP Address currently set is displayed after the Project Name in the
           Application Navigator.  See the screen snapshot above.


           Run the svn switch command with the --relocate option
           Provide as much of the urls as necessary to correctly rewrite the url from current to new.
           For example,
           to change the repository server address from 192.168.1.128   to   192.168.56.1

                    $  svn switch --relocate  http://192.168.1.128   http://192.168.56.1  .

                              (Note the trailing period in the above command)

          When the url is correct, JDeveloper should recognize the Subversion Working Directory.

Wednesday May 23, 2012

OSB Web Service Response Caching by Service Operation

Oracle Service Bus has built in support for Business Service Result caching using Oracle Coherence.

But what if the Business Service supports multiple operations,
and there is no parameter common to all the operations that can serve as a cache key?

Luckily, there is a solution for this exact scenario, this post details how to specify a different cache key expression for each operation in a service.  Read the full Article.

Wednesday May 02, 2012

Making sequential calls using Oracle Mediator

Many people are unaware that Oracle mediator can be configured to make sequential calls.
This posting presents an example of a mediator component  that calls a web service,
then combines the web service response data with the original mediator request data
and calls a File adapter with the combined payload.

The composite diagram for this example looks this

Composite.xml

 The processing is completed using a single Mediator component with a single Routing Rule as follows:

Static_Rules

Create this example by following the steps in the full article.


Tuesday May 01, 2012

Create a simple Web Service from Java Code using JDeveloper

This post covers the steps to create a simple department details web service that can be used with other examples.

We will use bottom up development, meaning we will create a new web service based on existing Java code.
The following instructions will create a new application and add a project to contain the web service.

Read the full article

Saturday Apr 14, 2012

Lessons learned configuring OER 11g Workflows

I recently configured OER 11g to use the included automation workflows.
This can be quite challenging the first time, but it's worth the effort.

Along the way I encountered a number of issues with my environment and configuration.
A full list of the issues I had and their solutions can be found here




Monday Feb 27, 2012

Enable Trace level logging for Oracle B2B 11g

Enable Trace level logging to debug Oracle B2B 11g
The B2B 11g logging level can be changed at runtime to faciliate debugging of message interactions.

Perform the following steps:

1) Login to the EM Fusion Middlware Control

2) Under the Farm tree on the left side
    Expand the SOA folder and right mouse click on the soa-infra node.
    Select Logs ->  Log configuration from the context menu.

Log Context Menu


3)  The Log Configuration Page appears as shown below.
     Under the "Log Levels" tab
     Expand the "oracle.soa" node and locate the oracle.soa.b2b node.
     Using the dropdown select box change the log level for the oreacle.soa.b2b.node to TRACE:1
     Hit the Apply button in the upper right corner to save the configuration change.


Set Log Level to Trace1

Changes to the log level are immediate, no restart of the WLS server is required.

Trace level log entries will be written to the *-diagnostic.log of the server hosting SOA.

For example, on a development workstation where soa is running on a single admin server the log is located at
/oracle/mwhome/user_projects/domains/hcfptrng_domain/servers/AdminServer/logs/AdminServer-diagnostic.log

Trace level log entries similar to the entry below will be written to the log.
The following TRACE entry was output by the oracle.soa.b2b.engine

[2012-02-27T09:10:31.743-08:00] [AdminServer] [TRACE] [] [oracle.soa.b2b.engine]
  [tid: [ACTIVE].ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)']
   [userId: <anonymous>] [ecid: 11d1def534ea1be0:4204a3be:135bf121efc:-8000-0000000000004d02,0:2]
   [SRC_CLASS: oracle.tip.b2b.system.DiagnosticService]
   [WEBSERVICE_PORT.name: execute_pt] [APP: soa-infra] [composite_name: Provider_270_271]
   [component_name: Send270] [J2EE_MODULE.name: fabric]
   [SRC_METHOD: synchedLog_J] [WEBSERVICE.name: EligibilityCompositeService]
   [J2EE_APP.name: soa-infra] oracle.tip.b2b.msgproc.ToplinkHelper:
   findBusinessMessageByB2BMessageId:
   Got 1messages for field messageId with value 7F000001135BFCABBE20000035016E70


Oracle B2B 11g Proxy Configuration

Oracle B2B 11g Proxy Configuration Various B2B Transports can be configured to use a proxy for sending and receiving.

For a complete list of transports that support a proxy on an outbound channel refer to the "Use Proxy" row in the following table.
http://docs.oracle.com/cd/E21764_01/integration.1111/e10229/b2b_tps.htm#BABJIJJF

For a complete list of transports that support a proxy on a listening channel refer to the "Use Proxy" row in the following table.
http://docs.oracle.com/cd/E21764_01/integration.1111/e10229/bb_listen_chan.htm#BAJDGEID

Proxy configuration is a two step process

1) Add the following options to the JVM that hosts WebLogic and the B2B transport
     -Dhttp.proxySet=true
     -Dhttp.proxyHost=192.168.1.115
     -Dhttp.proxyPort=8888

     -When adding the entries, change the Host and Port values above to match the location of your proxy.
     -Restart WLS

2) In the B2B Console select the "Use Proxy" checkbox on the transport that will use the proxy.
    For example, the image below shows the "Use Proxy" field on a HTTP Transport.
    The Url field value points to the endpoint the channel will call, not the proxy endpoint.

Use Proxy Transport checkbox

Thursday Jun 16, 2011

Workspace Application / Service Engine Relationship

Getting your mind around the relationships between BPM Processes, BPEL Processes and Human Tasks can be challenging.

Here is a diagram that may help.

A few points worth noting...

  • Work list tasks are not chained without BPEL or BPM.   A work list task cannot create another task.
  • The Workspace application has an Applications pane, a Task Page, and a Process Instance Page.
    The Application pane allows the users to create an instance of a BPEL / BPM Process.
    The Task Page / inbox lists tasks in the Workflow Service Engine.
    The Process Instance Page displays the details and status of BPEL / BPM instances.


Wednesday Jun 08, 2011

Unit Testing with JUnit and JDeveloper 11g

This article provides a quick overview of JUnit integration in JDeveloper 11g

Main Topics

  • Verify the JUnit Extension in JDeveloper
  • Create a parallel source directory for tests   (Optional)
  • Adding a JUnit Test Case to the Java Project
  • Implementing a Test Case
  • Running the JUnit Test Cases

Extra Topics
  • JUnit 4 Test Suite Class 
  • JUnit Test Fixture Example

Read the Full Article here


About

Picture of Bob

I am an Oracle Architect specializing in Service Oriented Architecture and Business Process Management.


Any code presented is for educational purposes only, no warranty or support is implied.

Search

Categories
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today