Saturday, February 11, 2006
Sunday, December 04, 2005
Wrap up
It's been two great weeks!
Thanks to our teachers Dr Hans-Joachim Novak and Thomas Kasemir as well as their colleagues Khirallah Birkler and Morgan Suski, all from the IBM lab in Böblingen. Thanks also to Andy Gibbs, IBM Hursley, for feedback and blog encouragement. We also had a good time with our classmates Andy Verberne, Don Weyham , Tobias Fenster, Steffen Laux, Michael Busche, and Martin Smith. It was great meeting you all.
This blog will now be archived as-is.
// Mårten, David, and Petter.
Thanks to our teachers Dr Hans-Joachim Novak and Thomas Kasemir as well as their colleagues Khirallah Birkler and Morgan Suski, all from the IBM lab in Böblingen. Thanks also to Andy Gibbs, IBM Hursley, for feedback and blog encouragement. We also had a good time with our classmates Andy Verberne, Don Weyham , Tobias Fenster, Steffen Laux, Michael Busche, and Martin Smith. It was great meeting you all.
This blog will now be archived as-is.
// Mårten, David, and Petter.
Friday, December 02, 2005
Day 10 - Common Event Infrastructure
The Common Event Infrastucture can be configured in every possible way you can think of. You can configure processes, selectors, human tasks and everything else within WPS to send CEI events. Hence CEI can be used for auditing, notification, correlation, and deliver key performance indicators (KPI). CEI uses something called a WBI Session which is basically a context in which WBI Components execute.
It's very easy to generate lots and lots of data when enabling CEI both due to the amount of events that any reasonably sized and the fact that the entire BO may be logged on each event. As with ND and clustering there's a lot of things to configure in the WAS administration console, which of course makes it both very powerful and quite hard to get a grip on.
The setup of CEI must be thought through carefully before configuration. There is a huge risk that too much logging events will mess up the system performance. When used with care, CEI can become a powerful tool for information auditing.
It's very easy to generate lots and lots of data when enabling CEI both due to the amount of events that any reasonably sized and the fact that the entire BO may be logged on each event. As with ND and clustering there's a lot of things to configure in the WAS administration console, which of course makes it both very powerful and quite hard to get a grip on.
The setup of CEI must be thought through carefully before configuration. There is a huge risk that too much logging events will mess up the system performance. When used with care, CEI can become a powerful tool for information auditing.
Thursday, December 01, 2005
Day 9 - Clustering and Integration Patterns
Thursday consisted of two big lectures with corresponding giant labs. We started off with clustering and high availabilty using the cluster features in WebSphere Application Server (WAS) version 6. The WAS is huge, as are all J2EE application servers and I didn't find this lab that interesting not being that interested in application server administration. It did give a good look into some of the advanced features of the WAS though.
After lunch we dug into integration patterns, applied on WAS/WPS, which I found far more interesting. The presentation was based on Gregor Hohpe & Booby Woolf's excellent book Enterprise Integration Patterns. This made the actual presentation pretty repetative for me but the lab and the example scenario used for the lab was really good and provided a great foundation for experimenting and trying out different approaches to sync/async scenarios between different components and modules.
After lunch we dug into integration patterns, applied on WAS/WPS, which I found far more interesting. The presentation was based on Gregor Hohpe & Booby Woolf's excellent book Enterprise Integration Patterns. This made the actual presentation pretty repetative for me but the lab and the example scenario used for the lab was really good and provided a great foundation for experimenting and trying out different approaches to sync/async scenarios between different components and modules.
Day 8 - SCA invocation models
On Wednesday we covered custom selectors, the SCA invocation model and some exception, error handling and compensation in BPEL processes.
The four different SCA invocation models are:
Then we did custom selectors. Although the tooling only supports time-based selectors at the moment the selectors can be altered for much more complex tasks. The selectors can be customized using Java and hence pretty much anything could be done to select which component to call. One thing we thought of was to call out to an external rule engine.
The four different SCA invocation models are:
- Synchronous. Pretty obvious.
- Asynchronous, one way. Fire and forget.
- Asynchronous, deferred response. Fire and poll for result.
- Asynchronous, callback. Fire and the engine will call your callback method with the result.
Then we did custom selectors. Although the tooling only supports time-based selectors at the moment the selectors can be altered for much more complex tasks. The selectors can be customized using Java and hence pretty much anything could be done to select which component to call. One thing we thought of was to call out to an external rule engine.
Tuesday, November 29, 2005
Day 7 - WBI and WAS Adapters
Tuesday was adapter day. We went through both the old WBI Adapters and the new WAS Adapters
IBM currently bundles the old WBI Adapters when customers buy the new WAS Adapters so they may choose which one to use. The WBI Adapters are connected to WPS using JMS import/export modules. Nothing new about the WBI Adapters, same tools used for connector configuration and business object design etc.
The new WAS Adapters are based on the Java Connector Architechture (JCA) and hence are run inside the WAS as an J2EE component. They, of course, use SDO to represent data. Currently there are WAS Adapters for SAP, Siebel, PeopleSoft, flat files, and JDBC.
We also learnt that WebSphere Partner Gateway (WPG) is bundeled with WPS. WPG is an effective tool if you wish to work with EDI and XML transformations and can be used toghether with WPS.
IBM currently bundles the old WBI Adapters when customers buy the new WAS Adapters so they may choose which one to use. The WBI Adapters are connected to WPS using JMS import/export modules. Nothing new about the WBI Adapters, same tools used for connector configuration and business object design etc.
The new WAS Adapters are based on the Java Connector Architechture (JCA) and hence are run inside the WAS as an J2EE component. They, of course, use SDO to represent data. Currently there are WAS Adapters for SAP, Siebel, PeopleSoft, flat files, and JDBC.
We also learnt that WebSphere Partner Gateway (WPG) is bundeled with WPS. WPG is an effective tool if you wish to work with EDI and XML transformations and can be used toghether with WPS.
Monday, November 28, 2005
Day 6 - JMS Bindings
The day contained a deep dive in the SCA programming model and references as well as the usual best practices such as:
- Coarse grained interfaces
- Limit network roundtrips
- Don't use WS between different architechtural layers in the same application
Then we dug into JMS and got an introduction to the WPS SIB (Service Integration Bus) which is the messaging bus used by all components in WPS so it serves as the backbone of communication within Process Server. It's a pure Java implementation which is JMS 1.1 compliant. It contains a mediation framework which uses mediation handlers to transform, transcode, reroute, and manipulate messages. The SIB can be set up to communicate with a real MQ installation through an MQClientLink or MQLink. Seen from the perspective of MQ, the SIB is seen as a real queue manager.
Week 2 - Advanced Workshop
Course: SW627 - WebSphere Process Server and WebSphere Integration Developer Advanced Workshop
Overview
The 5-day WebSphere Process Server Version 6 Workshop includes lecture and hands-on exercises. The focus of the course is getting consultants up to speed on the WebSphere Process Server V6.0 with specific emphasis on some of the key capabilities and concepts considered core building blocks leveraged in more complex deployment scenarios. The course is taught in the context of the eXchange Scenario The eXchange scenario describes a set of use cases that map well to the capabilities available in WebSphere Process Server. A description of the eXchange scenario is provided in the appendix. and builds on concepts introduced in the WPS V6.0 core education course. The course will begin with a detailed look at the SOA programming model, the specialized components and the supporting services available in WebSphere Process Server for building integration solutions. Once the fundamentals of the SOA programming model are understood along with the specialized components, the workshop will explore the edge capabilities provided by JMS, Web Services and JCA in detail. The workshop will then introduce how many of the well known business integration patterns can be deployed on WebSphere Process Server using the SOA programming model, the specialized components and edge interaction. Finally, the workshop will consider packaging and deployment, versioning, and serviceability of WebSphere Process server solutions.
Topics
The following is a provisional list of topics for lectures and exercises:
Overview
The 5-day WebSphere Process Server Version 6 Workshop includes lecture and hands-on exercises. The focus of the course is getting consultants up to speed on the WebSphere Process Server V6.0 with specific emphasis on some of the key capabilities and concepts considered core building blocks leveraged in more complex deployment scenarios. The course is taught in the context of the eXchange Scenario The eXchange scenario describes a set of use cases that map well to the capabilities available in WebSphere Process Server. A description of the eXchange scenario is provided in the appendix. and builds on concepts introduced in the WPS V6.0 core education course. The course will begin with a detailed look at the SOA programming model, the specialized components and the supporting services available in WebSphere Process Server for building integration solutions. Once the fundamentals of the SOA programming model are understood along with the specialized components, the workshop will explore the edge capabilities provided by JMS, Web Services and JCA in detail. The workshop will then introduce how many of the well known business integration patterns can be deployed on WebSphere Process Server using the SOA programming model, the specialized components and edge interaction. Finally, the workshop will consider packaging and deployment, versioning, and serviceability of WebSphere Process server solutions.
Topics
The following is a provisional list of topics for lectures and exercises:
- SOA Programming Model
- Service Component and Supporting Services Overview
- Edge Component - JMS Based Integration
- Edge Component - J2C Based Integration
- Edge Component - Web Services Based Integration
- Business Integration Patterns
- Versioning and Dynamicity
- Solution Deployment
- Runtime
Friday, November 25, 2005
Day 5 - BPEL generation for Business State Machines
In WebSphere Integration Developer you've to different ways of modelling BPEL-processes, using the BPEL-designer or using Business State Machines. Modelling a process as a state machine results in an "ordinary" BPEL-process being generated.
Looking at the generated BPEL clearly illustrates why you wouldn't want to create such processes in the BPEL-designer :)
The state machine below...
...results in this BPEL-process:

Looking at the generated BPEL clearly illustrates why you wouldn't want to create such processes in the BPEL-designer :)
The state machine below...
...results in this BPEL-process:
Thursday, November 24, 2005
Day 4 - Human tasks
Human Tasks are an extension to BPEL made by IBM. It's quite neat since you're able to specify escalation conditions and use a whole lot of expressions to assign a human task.
The Process Server uses the term registry to denote the datasource that contains the useraccounts and roles. Registries may be the simple users and roles that exists in the WebSphere Application Server that's running the Process Server, it may be a database or it could be an LDAP directory. The latter being the most likeley, in my opinion. But for this to be really usable and to really harness the power of the expressions/conditions against the registry you really need a well maintained directory that really reflects your organisation with managers and employers etc.
From what I've seen at our clients it's most likeley that the corporate direcotry exists in an Microsoft Active Directory. My opinion is that most of our clients doesn't use simple things like specifying managers on objects in their directory and therefore limiting the possible usage of the directory, for example for the human tasks in the Process Server.
The Process Server uses the term registry to denote the datasource that contains the useraccounts and roles. Registries may be the simple users and roles that exists in the WebSphere Application Server that's running the Process Server, it may be a database or it could be an LDAP directory. The latter being the most likeley, in my opinion. But for this to be really usable and to really harness the power of the expressions/conditions against the registry you really need a well maintained directory that really reflects your organisation with managers and employers etc.
From what I've seen at our clients it's most likeley that the corporate direcotry exists in an Microsoft Active Directory. My opinion is that most of our clients doesn't use simple things like specifying managers on objects in their directory and therefore limiting the possible usage of the directory, for example for the human tasks in the Process Server.
Day 3 and 4 - ICS on steroids
Those of us who come from the world of InterChange Server got pretty happy yeasterday when we were looking in to the mapping capabilities of Process Server. The mapping GUI has now been included into Eclipse and the creation of maps is done in a far more intuitive way than before. You can create a map top-down from the main interface map down to each and every submap without having to save all your work on the way. This new GUI makes it far more easier to create maps than it was in InterChange Server.
Another nice feature is the BOXMLSerializer class which you can use toghether with FlatFileAdapter for example. The BOXMLSerializer class simply takes a Business Object and transforms it into XML.
Another nice feature is the BOXMLSerializer class which you can use toghether with FlatFileAdapter for example. The BOXMLSerializer class simply takes a Business Object and transforms it into XML.
Wednesday, November 23, 2005
Day 3 - Scoping in XPath and BPEL
I've been hacking on a BPEL-process between the labs (during the lectures that is...). The scenario is that I'm trying to convert the end-to-end lab we did yesterday morning to a "pure" BPEL-process in order to get rid of the Java components that were included in that lab, and of course to learn the process modelling tool as well.
The lab setup was a simple "customer has a portfolio with N different stocks" and there's a stock quote service which gets called to calculate the total value of a given users portfolio.
So, in order to call the quote service once for each stock I created a simple while loop activity, which then of course needed a loop condition. That's when I got into Xpath. The customer SDO looks something like this:
<customer>
<name>Foo Bar</name>
<stocks>
<symbol>IBM</ibm>
<numberofshares>200</numberofshares>
</stocks>
<stocks>
<symbol>XYZ</symbol>
<numberofshares>50</numberofshares>
</stocks>
</customer>
So I happily tried to get a count of the stocks elements using the Xpath expression count(/customer/stocks)....which didn't work. Here I learned the first really useful thing, don't try to get a hold of the actual SDO using the debugger, it'll only give you the nice view of the object (quite obvious when you think about it). The quickest way (that I know of) is to put a Java snippet activity that dumps the serialized SDO representation to stdout. This showed that it's much better to do count(//customer/stocks) since the SDO actually adds a top level element and my personal guess is that certain changes/refactorings in your infterfaces or import/export might change this top level element, so depending on it in your Xpath expression may be unwise.
Regarding scoping in BPEL I got bitten by the fact that my loop variables were declared on the while activity and hence got re-initialiyed for every iteration resulting in an infinite loop. Declaring an outer scope and putting the variables there seems to have solved the problem but I've not had time to test it.
The lab setup was a simple "customer has a portfolio with N different stocks" and there's a stock quote service which gets called to calculate the total value of a given users portfolio.
So, in order to call the quote service once for each stock I created a simple while loop activity, which then of course needed a loop condition. That's when I got into Xpath. The customer SDO looks something like this:
<customer>
<name>Foo Bar</name>
<stocks>
<symbol>IBM</ibm>
<numberofshares>200</numberofshares>
</stocks>
<stocks>
<symbol>XYZ</symbol>
<numberofshares>50</numberofshares>
</stocks>
</customer>
So I happily tried to get a count of the stocks elements using the Xpath expression count(/customer/stocks)....which didn't work. Here I learned the first really useful thing, don't try to get a hold of the actual SDO using the debugger, it'll only give you the nice view of the object (quite obvious when you think about it). The quickest way (that I know of) is to put a Java snippet activity that dumps the serialized SDO representation to stdout. This showed that it's much better to do count(//customer/stocks) since the SDO actually adds a top level element and my personal guess is that certain changes/refactorings in your infterfaces or import/export might change this top level element, so depending on it in your Xpath expression may be unwise.
Regarding scoping in BPEL I got bitten by the fact that my loop variables were declared on the while activity and hence got re-initialiyed for every iteration resulting in an infinite loop. Declaring an outer scope and putting the variables there seems to have solved the problem but I've not had time to test it.
Tuesday, November 22, 2005
Day 2 - Wires, exports and imports
Todays course contained a lot more hands-on which was good. We took a deep dive into an End-To-End case where we used both the old WBI Adapters and the new WebSphere Adapters which runs within the WAS. The old WBI Adapters runs perfectly fine with the Process Server. Business Objects are now represented by using SDO (Service Data Objects).
We have made our first Process (BPEL), it turned out to be a very simple Process and we realized that they will and can become a lot more complicated. When developing loops/iterations in BPEL the result can be quite complicated due to nested while loops that can become quite teadius to read and maintain. Another approach to this problem is to design the process using state machines. Using state machines it's much easier to design and implement processes that contain loops or return to an earlier step in the process.
We have made our first Process (BPEL), it turned out to be a very simple Process and we realized that they will and can become a lot more complicated. When developing loops/iterations in BPEL the result can be quite complicated due to nested while loops that can become quite teadius to read and maintain. Another approach to this problem is to design the process using state machines. Using state machines it's much easier to design and implement processes that contain loops or return to an earlier step in the process.
Monday, November 21, 2005
Day 1 - Slides, slides and more slides
We started off with a fantastic breakfeast at our hotel and then set off to the IBM Forum by foot. This turned out be quite a bad decision since we'd quite a heavy snowfall during the night which combined with a rising temprature during the morning got our feet soaked during the walk.
When we finally arrived the rest of the class was already assembled and our two teachers Dr Novak and Thomas gave us a walkthrough of the programme for the following ten days. We then went through IBM Reference Architecture and a bunch of other PowerPoint slides. In the afternoon we finally laid our hands on the products. A simple HelloWorld example and some poking around in the new and and pretty good looking WebSphere Integration Developer rounded off the day.
In the evening we had a few beers and some german/bavarian specialities in the hotel bar toghether with our teachers.
When we finally arrived the rest of the class was already assembled and our two teachers Dr Novak and Thomas gave us a walkthrough of the programme for the following ten days. We then went through IBM Reference Architecture and a bunch of other PowerPoint slides. In the afternoon we finally laid our hands on the products. A simple HelloWorld example and some poking around in the new and and pretty good looking WebSphere Integration Developer rounded off the day.
In the evening we had a few beers and some german/bavarian specialities in the hotel bar toghether with our teachers.
Week 1 - Core Workshop
Course SW626 - WebSphere Process Server and WebSphere Integration Developer Core Workshop
Overview
The 4 ½ day Diamond Core workshop includes lecture and hands-on exercises. This is a required first week of a 2 week boot camp (second week is course SW627). The focus of the course is getting consultants up to speed on the Diamond release of WebSphere Process Server (WPS) and WebSphere Integration Developer (WID). The exercises are intended to get the students familiar with the operation of WID and WPS. The lectures and exercises work through topics such as: Business Integration vision, overviews of WPS and WID; introduction to Service Component Architecture (SCA); Service Data Objects (SDO) and the implementation of business objects using SDOs; Business Process Execution Language (BPEL) and the IBM implementation of BPEL in Business Process Choreography (BPC); introduction to human task management with BPC; introduction to selectors, business rules; business state machines (BSM); introduction to business integration adapters, specifically the JDBC and "flat file" adapters; introduction to mediators, mappers and data relationship management. This course gets your feet wet in the heart of the business integration product family.
Audience
Technical consultants who need in depth training on WebSphere Process Server (WPS) and WebSphere Integration Developer (WID)
Educational objectives
Understand the key function and features of WebSphere Process Server and WebSphere Integration Developer.
Topics
The following is a provisional list of topics for lectures and exercises:
Overview
The 4 ½ day Diamond Core workshop includes lecture and hands-on exercises. This is a required first week of a 2 week boot camp (second week is course SW627). The focus of the course is getting consultants up to speed on the Diamond release of WebSphere Process Server (WPS) and WebSphere Integration Developer (WID). The exercises are intended to get the students familiar with the operation of WID and WPS. The lectures and exercises work through topics such as: Business Integration vision, overviews of WPS and WID; introduction to Service Component Architecture (SCA); Service Data Objects (SDO) and the implementation of business objects using SDOs; Business Process Execution Language (BPEL) and the IBM implementation of BPEL in Business Process Choreography (BPC); introduction to human task management with BPC; introduction to selectors, business rules; business state machines (BSM); introduction to business integration adapters, specifically the JDBC and "flat file" adapters; introduction to mediators, mappers and data relationship management. This course gets your feet wet in the heart of the business integration product family.
Audience
Technical consultants who need in depth training on WebSphere Process Server (WPS) and WebSphere Integration Developer (WID)
Educational objectives
Understand the key function and features of WebSphere Process Server and WebSphere Integration Developer.
Topics
The following is a provisional list of topics for lectures and exercises:
- Vision for Business Integration (e.g. Ref Arch, Products Roadmaps)
- eXchange Scenario Introduction (real scenario description, not as implemented in labs)
- Outline Major Components of Diamond (e.g. SCA, Business Rules, Adapters)
- Diamond Tooling Overview
- Service Component Architecture Overview
- Business Object Overview
- BPEL Overview
- Human Task Manager Overview
- Selectors and Business Rules Overview
- Business State Machine Overview
- Adapters Intro
- Mediation and Maps Overview
- Relationships Overview
- JCA Adapters Overview
- CEI/CBE & Event Monitoring
- Failed Event Manager
- Administration (Admin Console) Overview
- Migration Overview (very high level)
- Monitor Overview and Demo