Eric D. Schabell

Tuesday, December 23, 2008

Call for papers: 2009 BPM and Workflow Handbook

I have submitted a proposal to the 2009 BPM and Workflow Handbook that will highlight our current process work based on an Open Source architecture and JBOSS jBPM entitled:

Full Scale Straight Through Processing with BPM
A tale from the Financial Crisis front-lines

Not wanting to be sitting still in 2009, I have been making a selection of the incoming calls for papers. I will keep you posted on the results as they come in next year.

Need that snowy Christmas feeling?

In my home town it has been trying very hard to make a record Christmas snowfall. A huge storm has provided,

"...more than 10 days of icy weather that culminated in a massive snowfall Saturday and Sunday. Snow measured in downtown Portland approached 13 inches Monday afternoon, rivaling a storm in 1980 that dumped 16inches on the city, according to the National Weather Service.

Portland's biggest snowfalls in history? Thirty-two inches in 1893, 28 inches in 1916 and 22inches in 1884.

The latest storm may rank among the top 10 for the area since the state started keeping records in 1880."
-- source, The Oregonian, 23.12.2008.


For those of you (like me) who are not going to see a white Christmas, it could always look like this outside your front window:

Thursday, December 18, 2008

JavaOne 2009 Call for Papers - submitted a tale from the front-line

The JavaOne 2009 conference put out a call for papers a few weeks ago and I submitted my abstract this week. Would you be interested in hearing this session?

Java defeating the Financial Crisis - a tale from the front-line
This session will examine a project running in the Netherlands for the fourth largest Dutch bank. This bank has made a strategic decision to empower her customers on-line by fully automating her business processes using full scale Straight Through Processing (STP). This extreme use of online STP is the trigger in a shift that is of crucial importance to cost effective banking, made even more relevant by the current world wide Financial Crisis.

We examine the integrated Java solution architecture by detailing the major component layers used to implement the case study, a project entitled STP Purchasing. This project enables the online purchasing of savings products, all fully STP enabled to ensure completion of requests within days instead of weeks. The various key components used in the implementation include an Open Source Software (OSS) infrastructure, a process engine, our service-oriented architecture (SOA) layer, and the various back-end systems.


The most significant cant part of this session will provide some insight into our first experiences in this solution space. We will openly discuss our experiences and provide do's and don'ts that we are currently putting into production in successive projects. Finally, we will present empirical data resulting from the STP Purchasing project running in production which demonstrates how the Financial Crisis is losing the battle here in the Netherlands.

Wednesday, December 17, 2008

Eclipse Subversion access from behind a proxy

It is for the very first time that I post anything to solve a M$ platform problem, but this one is to allow the usage of a tool that is worth the shame.

The problem when connecting to any svn repository is that you are getting this message (example is from an open source project AbTLinux):

RA layer request failed
svn: PROPFIND request failed on '/svnroot/abtlinux'
svn: PROPFIND of '/svnroot/abtlinux': Could not resolve hostname `abtlinux.svn.sourceforge.net': The requested name is valid and was found in the database, but it does not have the correct associated data being resolved for. (https://abtlinux.svn.sourceforge.net)

The problem is that you need to pass through a proxy and in my case, this needs to happen with a user name and password authentication. This is done in the Subversion server configuration file. For both Linux, osX (Mac) the file is in the same location, for M$ it is in a bit different location. Both show you how to fix this for the user only. Should you wish to do this for the entire machine you will need to locate the central server configuration file:

#
# For Windows: %USERPROFILE%\Application Data\Subversion\servers
#

#
# For Linux or osX: ~/.subversion/servers
#

[global]
http-proxy-host = <proxy.server.name>
http-proxy-port = <some_port_number>
http-proxy-username = <your_user_name>
http-proxy-password = <your_password>


Once you set these for the user, ensure your SVN-plugin in Eclipse is using the Default location for the configuration settings and you should be able to connect to both http and https repositories.

Tuesday, December 16, 2008

jBPM from the trenches - status of jBPM process rework

It has been almost two months since I last posted on the progress of our jBPM process rework. We have solved the composite business service issues and have since completed the following steps:
  • Business logic has been encapsulated into services and pushed down into the SOA layer.
  • Discussion on composite business services has been initiated for our SOA layer.
  • A first process state node is being setup with complete unit testing
  • The state-proxy is being integrated into the process layer.
The tasks left to be done in the coming year (we are winding down for 2008):
  • Transitional actions are being brought up into process steps
  • Core process steps are being black-boxed so that you can fill them with any eventual project specific sub-flow definitions as needed.
This week we have started the implementation of a custom jBPM class loader to facilitate running multiple projects on a single jBPM engine where we want to access different service versions. I will post more on this soon, after implementing our design and proving it works. I can say we have decided against having it link into maven to solve a projects dependencies.

That's it for now from the trenches.

Saturday, December 13, 2008

Mac Softpedia developer page?

It seems I have been given a developers page over at a Mac site called Softpedia.

Someone attached a link to my DocConversion project from 2004. It is nice to see that people are still getting use out of it!

Friday, December 12, 2008

NIBE course - Algemeen Opleiding Bankbedrijf (AOB)

I recently passed this exam. That is about all you can say for this course. It is a massive content oriented course that focuses on testing the student on very small facts buried deep in the material, not on the students understanding of the material. I won't even get started on the exam style or format. Let's just say that if I had setup exams for my students (I have taught several courses at the Radboud University Nijmegen) like it is for this course, my days of teaching would have lasted up until the exam commission stopped by for a review.

Anyway, there is a positive point to all of this. I don't want to make this experience any more painful for the next person that is required to take this exam (it is compulsory for all Dutch bank employees), so I am providing you with my summary that will save you time while preparing. I can't promise how long it will be valid as the course updates the material from time to time, but it is better than nothing:
PDF  -  SOURCE

Tuesday, December 2, 2008

A 'Ruby best practice' - return values

Over on the wonderful Ruby blog 'On Ruby' they are holding a contest requesting that one post a best practice from another language or community and how it translates into Ruby. It just so happens there is one that I have personally applied to all my Ruby programming even though it is not a Ruby convention!

Return values in Ruby, where are they?
It really bothers me that code can become unclear or obscure by not communicating very simple facts, like what a method is returning. A good practice used in Java is to return a 'results', meaning one keeps the return value of a method stored in a variable named 'results'. It can be a String, Boolean, or whatever.

Ruby is one of my favorite languages right now, but handles return values for methods very differently than languages like Java. Ruby does not require an explicit 'return' statement, but can return the last executed statement results by default. This can be confusing.

Discovering what this return value might be can be more time consuming that is necessary and is immediately taken care of by simply supplying a 'return' statement. Cost is nothing, results are clarity. I provide an example from my current running project, AbTLinux:

##
# Cleans up this packages source build directory.
#
# RETURNS:  boolean - True if the completes successfully,
# otherwise false.
##
def remove_build
  puts "Removings build..."
  if ($REMOVE_BUILD_SOURCES)
      buildSourcesLocation = "#{$BUILD_LOCATION}/#{srcDir}"
       
      if (!File.directory?(buildSourcesLocation))
        return true
      end

      if (!FileUtils.rm_rf buildSourcesLocation, :verbose => true )
        return false
      end
  end
   
  return true
end