Setting up the development environment for the Worklist

This post is the second in a series on building a custom worklist for BPM/SOA 11g.

In this post, we will set up our development environment so that we can start building the application.

Version Control

First, we are going to want a version control system.  We use and recommend Subversion.  The example was developed using Subversion 1.6.5 (r38866) for Mac OS X.  You will need to install Subversion and create a new repository.  We created our repository as follows:

# svnadmin create /Users/mark/svnrepos

We also set up a second, read-only, copy of the repository on another server, to act as a backup.  If you want to do this too, you need to install Subversion on the remote server and configure the repository for synchronisation by creating a hook.  Here are the steps we used, first create the repository on the remote machine:

remote# svnadmin create /home/marnelso/svnrepos

Then create the hook, create a file called /home/marnelso/svnrepos/hooks/pre-revprop-change containing the following (modify this to suit your environment):

#!/bin/sh
USER=""
if [ "$USER" = "marnelso" ]; then exit 0; fi
echo "Permission denied"
exit 1

Initialise the repository for synchronisation:

local# svnsync init svn+ssh://marnelso@server/home/marnelso/svnrepos

Again, you will need to substitute in the correct server name, username, Subversion protocol, etc., for your environment.

Now we need to set up our repository.  We followed the structure recommended in Version Control with Subversion, so our repository looks like this:

/               Repository root
- worklist      Project root
  - trunk       Main development area
  - tags        Area for storing tags

I also found there were a few Subversion commands I wanted to issue regularly, so I made a couple of shell scripts to save some typing.

First, I made one called svnaddr to add any new source files to Subversion:

#!/bin/sh
svn st | grep ^? | awk '{ print $2 }' | xargs svn add

Second, I created a script called synsyncnow to synchronise my local Subversion repository to the backup:

#!/bin/sh
synsync sync svn+ssh://marnelso@server/home/marnelso/svnrepos

I also used the command svn st regularly to see what files I had changed, and svn diff to see the actual changes.

Build Management

Next, we need a build system.  We decided to use Maven.    In our environment, we used Maven 2.2.1 (r801777) on Mac OS X, with Java 1.6.0_22.

In order to automate deployment, we used the WebLogic Maven Plugin.  You can find details about the plugin and how to set it up in this post.  We will cover the POM for our project in the next post in this series – see the end of this post for a link.

There are a number of libraries that we will want to use.  These libraries are provided as JAR files in the Oracle BPM Suite installation.  You will want to add these to your local Maven repository so that you can add them to your POM as dependencies.  The libraries are located in Oracle Fusion Middleware home, in the following locations:

Oracle_SOA1/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar
Oracle_SOA1/soa/modules/oracle.soa.fabric_11.1.1/bpm-infra.jar
Oracle_SOA1/soa/modules/oracle.bpm.client_11.1.1/oracle.bpm.bpm-services.client.jar
Oracle_SOA1/soa/modules/oracle.bpm.client_11.1.1/oracle.bpm.bpm-services.interface.jar
oracle_common/webservices/wsclient_extended.jar
oracle_common/modules/oracle.xdk_11.1.0/xmlparserv2.jar
oracle_common/modules/oracle.xdk_11.1.0/xml.jar
wlserver_10.3/server/lib/wlfullclient.jar  (see note below)

The wlfullclient.jar will not exist unless you have created it before.  To create it, you need to execute the following commands:

# cd <OFM_HOME>/wlserver_10.3/server/lib
# java -jar ../../../modules/com.bea.core.jarbuilder_1.3.0.0.jar

Update: The version number at the end of the jarbuilder may be newer, you will need to check it and enter the correct value for your installation.

You will need to install each of these files into your local Maven repository using the following command:

# mvn install:install-file
  -Dfile=bpm-services.jar
  -DgroupId=com.oracle.soa
  -DartifactId=bpmservices
  -Dversion=11.1.1.4
  -Dpackaging=jar
  -DgeneratePom=true

You need to enter this command on one line (or use continuation characters at the end of each line).  You will need to run this command once for each of the libraries, each time changing the file and artifactId to match.  I used the following values for artifactId:

  • bpminfra
  • bpmservices
  • bpmservices_client
  • bpmservices_interface
  • wsclient
  • xmlparser
  • xml
  • wlfullclient

We will use these in the POM to refer to these libraries.

Test Environment

We also needed a server environment to deploy our project to and to use for testing.  We used BPM Suite 11.1.1.4 running on WebLogic 10.3.4 on Java 1.6.0_22 on Oracle Linux 5.5 (all 64-bit).  We used the full ‘production’ install with a separate AdminServer and managed servers for SOA/BPM and various other components of Oracle Fusion Middleware.  The full install end-to-end for 11.1.1.3 is covered in this post.  The install for 11.1.1.4 is similar.  We have not updated our end-to-end install post yet, but you will probably find that it is similar enough that you can still use the old post.

The full install is not needed for this example.  You do not need any of the WebCenter components.  You can use a ‘developer install’ of BPM if you want to, or if you have less hardware available for testing.  You can find details on how to set up the developer install in this post.

We used Oracle XE as our database.  If you want to do the same, make sure you read over this post to be aware of the extra environment variable you need to set.

You should also review this post to check the recommended settings for the JVM.

If you prefer not to install yourself, you may want to take a look at the pre-built virtual machine images provided by Oracle.

Documentation

You will probably want to bookmark some documentation that you will want to refer to frequently.  You might want to read over Chapter 31 of the Oracle SOA Suite Developer’s Guide to get an overview of the APIs and libraries we will be working with.  You will also want to have the Workflow API documentation available to look up details of the various APIs that we will be using.

Creating the Project

In the next post in this series, we will create the actual project.

About Mark Nelson

Mark Nelson is an Architect (an "IC6") in the Fusion Middleware Central Development Team at Oracle. Mark's job is to make Fusion Middleware easy to use in the cloud and at home, for developers and operations folks, with special focus on continuous delivery, configuration management and provisioning - making it simple to manage the configuration of complex environments and applications built with Oracle Database, Fusion Middleware and Fusion Applications, on-premise and in the cloud. Before joining this team, Mark was a senior member of the A-Team since 2010, and worked in Sales Consulting at Oracle since 2006 and various roles at IBM since 1994.
This entry was posted in Uncategorized and tagged , , , , , . Bookmark the permalink.

One Response to Setting up the development environment for the Worklist

  1. herberson says:

    Hi I’ve read your post and it’s a big help on my actual demand, you’ve done a great work.
    I’ve got stuck on wlfullclient.jar generation because I couldn find “com.bea.core.jarbuilder_1.3.0.0.jar” file among the files of version 11.1.1.4.0 of Oracle SOA Suite.
    After some research I found that can be done using the command “java -jar wljarbuilder.jar” on “/wlserver_10.3/server/lib”.
    If someone got stuck on same issue that’s my tip, you can use “wljarbuilder.jar” on “wlserver_10.3/server/lib”.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s