Eric D. Schabell: January 2013

Monday, January 28, 2013

OpenShift Enterprise - high availability reference architecture


As stated on the Red Hat OpenShift Enterprise (OSE) site, "OpenShift Enterprise is a comprehensive enterprise development platform for the cloud era. It provides everything you need to develop and execute enterprise applications—delivered in your choice of private or public cloud."

Scott Collier has been working on putting together a high availability reference architecture for installing OSE on-premise or hybrid Pass solution. This solution includes a demo of deploying a JBoss mobile project to the final architecture. This reference architecture is available at the Online Resource Library (limited version) and in the Customer Portal (full version). 

Here is a preview to get you started!

OpenShift Enterprise reference architecture
The OpenShift Enterprise (OSE) reference architecture is broken up into three parts. The first part is the product and Reference Architecture environment overview. The second part consists of deploying OSE in a distributed fashion. The third part covers a few operations and management activities. In addition, all configuration files that were modified to build out this OpenShift Enterprise infrastructure will be included on the Red Hat customer portal.

Part I:
  1. Component overview
  2. Environment overview
    • Software required
    • Hardware required
Part II:
  1. Deploy the Broker Support Nodes
    • Mongo replicated set
    • ActiveMQ network of brokers cluster
  2. Deploy the Brokers
    • Use Microsoft Active Directory as authentication mechanism
    • Deploy OpenShift Enterprise Console
  3. Deploy three OpenShift Enterprise nodes
  4. Deploy the Red Hat Load Balancer Add-On
    • Configure the appropriate load balancing algorithms and appropriate
  5. checker scripts
Part III:
  1. Configure the OpenShift Enterprise client tools
  2. Confirm proper OpenShift Enterprise infrastructure operation
  3. Deploy PHP applications via command line
  4. Deploy PHP applications via OpenShift Enterprise Console
  5. Deploy Java applications via JBoss Developer Studio version 5
  6. Deploy Java applications via JBoss Developer Studio version 6
  7. Application scaling
  8. Deploying applications with Jenkins Continuous Integration System
  9. Node / Gear / District management

Tuesday, January 22, 2013

JBoss BRMS - how to create maven artifacts

One of the nicest features of the newer JBoss Enterprise Application Platform 6 (EAP6) is that is supplies your organization with the Maven artifacts in a separate download so that you can populate your internal maven repository.

 This is what I wanted to achieve with JBoss Business Rules Management System (BRMS) too, so we put together a short script to extract these from the product and populate your default maven repository.

 Hope you enjoy it!

#!/bin/bash
SRC_DIR=./installs
BRMS=brms-p-5.3.0.GA-deployable.zip
VERSION=5.3.0.BRMS

command -v mvn -q >/dev/null 2>&1 || { echo >&2 "Maven is required but not installed yet... aborting."; exit 1; }

echo
echo Installing the BRMS binaries into the Maven repository...
echo

unzip -q $SRC_DIR/$BRMS jboss-brms-engine.zip
unzip -q jboss-brms-engine.zip binaries/*
cd binaries

echo Installing Drools binaries...
echo
mvn -q install:install-file -Dfile=drools-ant-$VERSION.jar -DgroupId=org.drools -DartifactId=drools-ant -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=drools-camel-$VERSION.jar -DgroupId=org.drools -DartifactId=drools-camel -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=drools-compiler-$VERSION.jar -DgroupId=org.drools -DartifactId=drools-compiler -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=drools-core-$VERSION.jar -DgroupId=org.drools -DartifactId=drools-core -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=drools-decisiontables-$VERSION.jar -DgroupId=org.drools -DartifactId=drools-decisiontables -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=droolsjbpm-ide-$VERSION.jar -DgroupId=org.drools -DartifactId=droolsjbpm-ide -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=drools-jsr94-$VERSION.jar -DgroupId=org.drools -DartifactId=drools-jsr94 -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=drools-persistence-jpa-$VERSION.jar -DgroupId=org.drools -DartifactId=drools-persistence-jpa -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=drools-templates-$VERSION.jar -DgroupId=org.drools -DartifactId=drools-templates -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=drools-verifier-$VERSION.jar -DgroupId=org.drools -DartifactId=drools-verifier -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=knowledge-api-$VERSION.jar -DgroupId=org.drools -DartifactId=knowledge-api -Dversion=$VERSION -Dpackaging=jar

echo Installing jBPM binaries...
echo
mvn -q install:install-file -Dfile=jbpm-bam-$VERSION.jar -DgroupId=org.jbpm -DartifactId=jbpm-bam -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=jbpm-bpmn2-$VERSION.jar -DgroupId=org.jbpm -DartifactId=jbpm-bpmn2 -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=jbpm-flow-$VERSION.jar -DgroupId=org.jbpm -DartifactId=jbpm-flow -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=jbpm-flow-builder-$VERSION.jar -DgroupId=org.jbpm -DartifactId=jbpm-flow-builder -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=jbpm-human-task-$VERSION.jar -DgroupId=org.jbpm -DartifactId=jbpm-human-task -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=jbpm-persistence-jpa-$VERSION.jar -DgroupId=org.jbpm -DartifactId=jbpm-persistence-jpa -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=jbpm-test-$VERSION.jar -DgroupId=org.jbpm -DartifactId=jbpm-test -Dversion=$VERSION -Dpackaging=jar
mvn -q install:install-file -Dfile=jbpm-workitems-$VERSION.jar -DgroupId=org.jbpm -DartifactId=jbpm-workitems -Dversion=$VERSION -Dpackaging=jar

cd ..
rm -rf binaries
rm jboss-brms-engine.zip

echo Installation of binaries "for" BRMS $VERSION complete.
echo

EMEA JBoss Forums

In Madrid, Paris, Munich, Zurich and Geneva we are presenting at JBoss Forums, talking about the product portfolio and zooming in to the JBoss Business Rules Management System (BRMS).

I took the time to demo several of our integration products, both BRMS and the SOA platform as they leverage rules, bpel, bpm and complex event processing. The demo projects are freely available online so that you too can rock your own JBoss sessions!

Wednesday, January 16, 2013

Butterfly

She had been working hard all morning.

Flying all around this garden from flower to flower. It was time for a break, the sun was up high enough that it reached the house. She knew she would be warm there so she swooped over the grass yard and landed gracefully on the living room windowsill to bask in the sun.

The drapes were still closed which meant that the people in the house would still be sleeping. Judging by the sun, they would be awake soon and the kids that lived there would be coming out in the yard to play. For now it was peaceful, just birds chirping, warm sunshine and the butterfly enjoyed her break by stretching its wings. As she sat in the sun fanning her wings, the window drapes burst open in a sweeping motion startling her into an explosion of flight and evasive maneuvers as she flew off across the yard.

Throwing open the living room drapes, the woman was startled by a pretty butterfly that took flight outside the window. Watching it flutter off into the yard she couldn't help but notice it was going to be a warm day. The morning sunlight burst into the room and warmed her face, causing her to close her eyes and enjoy the quiet moment. With school out and the kids home all week now, these moments were precious. She opened her eyes with a sigh and decided it was time to get this day rolling.

“Shall we set up the pool?”, she called out loudly over her shoulder into the empty room.

Cocking her head to catch any sounds of life in the house, there was a sudden thunder of noise as two sets of small feet rushed and bounced down the staircase from the upper floors of the house. She smiled as two small kids burst through the door, clutching swimsuits over their heads and chattering excitedly.

The woman had to laugh.

The kids had been asking her to set up the pool for days now and she had wanted to wait for warmer weather. Up to now it had been sunny, but not warm enough to allow the young kids to play outside in the water. Today was different. Summer was arriving in full force, if one could believe the weathermen these days. It would be a scorcher the rest of the week and, with the kids out of school, it was a welcome diversion to invite friends over to play in the pool.

First they had breakfast. Their favorite was bacon and pancakes with Canadian syrup. The kids would scarf them down like there was no tomorrow and the woman liked to get them started on a summer day with a full stomach. The little boy had a fondness for bacon, picking through the contents of his plate to eat it first. The little girl loved to put syrup on the side and use her fingers to dip pancakes one by one.

All during breakfast they chattered enthusiastically about the swimming pool, about how they would jump into it, the toys they would float in it, and maybe about getting water balloons to fill in it. Even though they could hardly sit still in their chairs, their breakfast disappeared in a wink. After brushing their teeth and washing up their sticky faces amid giggles they wanted to go play until the pool was ready.

"You all can play out front in the park, I have to pump up the new pool."

The kids cheered and rushed out to the garage, grabbed their bikes and were off to play in the park. This gave her enough time to unpack the new pool, pump it up and fill the twin rings that were the sides of the pool. It was going to take at least an hour as the sides were a meter high and the pool was one and a half meters in diameter. It would look good in the yard, she was sure. It was decorated with realistic images of red and yellow flowers that matched the existing flower beds right behind where she wanted to put the pool. She had discovered it on sale at the market. With their old one destroyed last summer by the kids, she hardly hesitated to buy it. They were just too big for a wading pool anymore.

She took the box out to the yard and dumped it out in the perfect location, where the sun would shine on it most of the afternoon. Shaded in the evening, it would be covered by the supplied plastic tarp. She ran an extension cord out to the yard from the garage door on the back of the house and attached a pump to the bottom ring of the pool. She figured that if it was filled first, she could pump up the second ring while filling it with water at the same time. That should speed things up a bit, and at the same time she would be able to bring out boiled water from the kitchen in a tea kettle to pre-warm the pool. Water straight from the hose was rather chilly and with fifteen or twenty kettles of warm water needed to finish the job, efficient use of her time was called for.

She hummed her favorite tune in her head, a country song by Garth Brooks about a song she sings when there's no one around. It was warm enough to cause a light sweat to break out on her back as she set up everything. With the pool and pump running smoothly, she noticed that the butterfly she had seen earlier was swooping around the flowers located behind the pool on this side of the yard. It was a pretty Monarch with large black spots on its wins with a blazing dark orange background.

The butterfly was back to work on the flowers that she had started on earlier in the morning before being rousted from her sunbathing on the windowsill. This was a good yard, lots of flowers meant to attract butterflies and she was very happy to flutter from flower to flower. She was rather startled when she landed on what looked to be a rather juicy red flower that usually hosted a sweet nectar that she loved to drink, but that it turned out to be flat and hard.

What was this?

She dipped her tongue out into the flower but it hit a wall and it was not sweet at all, but rather a dusty plastic taste. At that moment the woman arrived at the pool with a tea kettle filled with hot water that she proceeded to dump into the pool. The butterfly took sudden flight as she was almost caught by the splash. The woman was startled enough to jump back with a yelp of surprise and almost poured hot water on her leg as she dropped the kettle into the grass.

"Fiddle sticks! What are you thinking trying to land on the pool flowers, you silly little butterfly?", the woman scolded.

With a sigh of relief, the woman picked up the kettle and was happy to see the butterfly was not hurt. It had resumed going from flower to flower in the beds behind the pool. She felt the pool's first ring wall and moved the pump to the second ring, as the first one was firm enough. She ran the hose from the house to add cold water and let it mix with the hot water already in the bottom.

The woman returned to transporting hot water with the kettle. On the way into the house through the screen door, she noticed their cat, CJ zipped between her legs into the yard. CJ loved to lay stretched out on the patio stones as they were warmed by the sun.

On one of the following trips as she returned with another kettle of hot water, she saw that CJ was standing on her hind legs with her front feet up on the edge of the top ring of the pool trying to drink.

"Get away from there before you tear it!"

This caused the cat to jump down and run under the patio table by the house, sulking like a kid caught with its hand in the cookie jar.

"You know better than that!"

After numerous trips back and forth with the kettle, the pool was almost ready. She put away the pump, turned off the hose, rolled it up and checked the water temperature with her hands. It was just a tad too cold, so before calling the kids back in from playing she went to add another kettle or two of hot water.

As she left, the butterfly caught the attention of CJ.

From her hiding place under the patio table CJ had emerged once the woman was gone to lay on the warm stones in the sun. The butterfly was darting from flower to flower but it was a bit far away. She contemplated getting up and investigating, but it was much nicer to lounge here with the sun warming her black fur until it was almost too hot to touch.

Her eye lids hung almost shut, but she still kept track of the butterfly. Slowly it was coming closer to this side of the flower bed and the closer it got, the more interested CJ became. When the butterfly fluttered from the flowers to land on the near side of the swimming pool, she was on her feet in a flash, frozen and low to the ground watching the butterfly's wings slowly fanning the air. Her tail swished back and forth in jerky, slow motions and her full attention was on the butterfly now only two meters away.

Slowly, keeping very low to the ground, she started to close the distance. Then she froze, this was close enough to make a jump. As the butterfly tried to put its tongue into the flower painted on the pool, she tensed her body and, in a flash, sprung towards the butterfly with her claws fully extended…

The woman was humming a tune as she returned just a minute later and she was confronted with a scene she would not soon forget. The kettle of hot water dropped from her hand onto the patio and spilled across the stones to join a larger lake of growing water. She was utterly speechless for a moment as she surveyed the scene before her.

There was a large, very large, pool of water still growing in the yard that reached all the way to the patio. Sitting on the edge of this pool, moving backwards and low to the ground was CJ. She looked like a drowned cat, her ears hanging, fur dripping and belly scraping the ground as she slunk back towards the patio table. She saw the woman standing there and froze, head down and eyes averted towards the ground. It was as if she knew what was coming next…

"What have you done?!"

At that moment the kids burst through the back garage door onto the patio. They both let out a yelp and screeched to a halt as they stumbled into the growing lake of water that was still pouring onto the patio. They looked up at the woman and then over at CJ, then to the pool… both simultaneously bursting into laughter at the scene.

The woman ignored CJ and the kids for the moment, rushing over to the pool hoping to salvage what she could of the water that was streaming out of the gap. The side of the pool nearest to her was dipped down in a 'V' form, with water pouring over the side as air leaked out with an angry hiss of bubbles.

There were four sets of holes, two in the top and two in the side.

The woman stared in dismay at the pool as a pretty Monarch butterfly darted around her head, fluttering out over the pool and upwards into the clear sky. The woman would say later that she heard soft laughter receding as the butterfly floated away.

Fuse ESB Enterprise 7.1 Webinar

GUEST BLOG by Aileen Cunningham

Last year just before the Christmas holidays we released Fuse ESB Enterprise 7.1. There have been quite a few changes since the 7.0.2 release we did; in fact, over 2000 tickets were resolved! I'm doing a webinar next week to cover some of the new user facing changes:

January 17 @ 10:00AM EST - Getting Started with Fuse ESB Enterprise 7.1

Some highlights of the changes include:

- New versions of Apache Camel, CXF, ActiveMQ, Aries and Karaf
- Java 7 support (just in time for the Java 6 EOL ;) )
- Security overhaul in Fabric

I'll have a live demonstration as well of course showing you how to code with Fuse IDE and deploy your app to the ESB.

Hope to see you there!

JBoss Developer Studio 5 - how to add Eclipse BPMN2 Modeler as jBPM designer

Fig. 1: BPMN2 Modeler
As of 12 Jan 2013, the Eclipse native BPMN2 Modeler project has released v0.2.1. I think it is now time to us this thing instead of the dying RulesFlow editor supplied out of the box. The project site states that it will be included in the jBPM 5.3 release.

Fig. 2: Process designer
You can see in figure 1 that the native editor looks pretty good, showing the process designed for my Rewards Demo project based on JBoss BRMS. For completeness you can see the original process designer that ships with jBPM in figure 2, showing the same process.

Here are the steps needed to install the Eclipse native designer into your JBoss Developer Studio 5 (JBDS). Note that JBDS 5 is based on Eclipse Indigo, so those are the update sites you need for dependencies:

Fig. 3: Modeler menu
  1. Add the update site for Indigo as we need an EMF validation dependency: Help -> Install New Software... -> Add (Name: Indigo Updates, Location: http://download.eclipse.org/releases/indigo)
  2. Select in drop down boxes: Modeling -> EMF Validation Framework SDK, install it and restart JBDS.
  3. Add the update site for Indigo as we need an EMF validation dependency: Help -> Install New Software... -> Add (Name: BPMN2 Modeler Updates, Location: http://download.eclipse.org/bpmn2-modeler/site/)
  4. Select all component, install them and restart JBDS.
  5. When you now want to open a BPMN2 file, right click and your Open With... menu entry should show you a list like figure 3.
You are now ready to get rocking with designing your processes. Please push feedback on the designer to the BPMN2 Modeler project team.
Looking to Automate your business?

Other options

In the past we have outlined the use of JBoss BPM and rules tooling for other versions of JBDS:

Tuesday, January 15, 2013

JBoss Enterprise BRMS - Customer Evaluation demo updated to JBoss EAP 6

Customer Evaluation
With the latest release of JBoss Enterprise BRMS 5.3.1 we have been given the chance to deploy it on JBoss EAP 6, the lightning fast product that will change our development lives forever. I could not pass up a chance to update my existing demo projects and here you will find the results.

Architecture
The new project setup deploys JBoss BRMS 5.3.1 deployable ee6 wars into the JBoss EAP 6 application platform. The project has been updated completely to facilitate this install. You just need to get a copy of the project, provide copies of the products as described in the README files, and run  the provided init.sh script.

A target directory will be created, installing JBoss EAP 6.0.1, deploying JBoss BRMS 5.3.1 components, copying over configuration and security setting through the support/* files, and you are ready to rumble!

Quickstart
Once you have the project installed, you can proceed to the QuickStart document, but if you are lazy just follow along:
  • start the JBoss EAP 6 in standalone mode.
  • import the project found in projects/* directory into your JBoss Developers Studio 5.
    • the latest version of JBoss Developers Studio 6 does not yet have the supporting BRMS / SOA plugins available, so we have to wait a bit on that component. 
    • Don't forget to add the jars found in support/lib/* directory to your project and you can then run all the unit tests you find there.

For the JBoss BRM component:
JBoss BRMS

Project
You can find the master project and the released versions here:
I hope you enjoy the speed and agility provide by this demo project. It is meant to display BPM interaction with Rule based decisions.

JBoss Enterprise BRMS - Rewards demo updated to JBoss EAP 6

Rewards Demo

With the latest release of JBoss Enterprise BRMS 5.3.1 we have been given the chance to deploy it on JBoss EAP 6, the lightning fast product that will change our development lives forever. I could not pass up a chance to update my existing demo projects and here you will find the results.

Architecture
The new project setup deploys JBoss BRMS 5.3.1 deployable ee6 wars into the JBoss EAP 6 application platform. The project has been updated completely to facilitate this install. You just need to get a copy of the project, provide copies of the products as described in the README files, and run  the provided init.sh script.

target directory will be created, installing JBoss EAP 6.0.1, deploying JBoss BRMS 5.3.1 components, copying over configuration and security setting through the support/* files, and you are ready to rumble!

Quickstart
Once you have the project installed, you can proceed to the QuickStart document, but if you are lazy just follow along:
  • start the JBoss EAP 6 in standalone mode.
  • import the project found in projects/* directory into your JBoss Developers Studio 5.
    • the latest version of JBoss Developers Studio 6 does not yet have the supporting BRMS / SOA plugins available, so we have to wait a bit on that component. 
    • Don't forget to add the jars found in support/lib/* directory to your project and you can then run all the unit tests you find there.

For the JBoss BRM component:
JBoss BRMS

Project
You can find the master project and the released versions here:
I hope you enjoy the speed and agility provide by this demo project. It is meant to display BPM interaction with human task services.

Tuesday, January 8, 2013

NLUUG Spring Conference 2013: OpenShift Primer - Get your code into the Cloud

First submission of the new year goes to the NLUUG Spring Conference, scheduled for 16 May 2013,  a talk covering my latest book and will get you up in no time with OpenShift.

Abstract

Are you tired of requesting a new development machine for your application? Are you sick of having to setup a new test environment for your application? Do you just want to focus on developing your application in peace without 'dorking with the stack' all of the time? We hear you. We have been there too. Have no fear, OpenShift is here! 

This talk is based on the book OpenShift Primer and is all about getting you started, hands-on, with Red Hat OpenShift PaaS. It is developer focused, concentrating on getting you working on your code in the Cloud in the shortest amount of time. It is based on real world examples and covers all of the languages available to you in OpenShift.

See you there? :)