Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
End-to end BPEL business activity monitoring with IBM SOA tools
Part 1: Modeling for process execution with WebSphere Business Modeler Bhargav Perepa WebSphere Integration Technology Specialist, SWG – Federal Technical Sales IBM Washington D.C. Area Stephanie Parkin. Software Engineer, Content Editor, developerWorks WebSphere IBM Lexington, KY June 13, 2007 © Copyright International Business Machines Corporation 2007. All rights reserved. The first article in this series uses IBM WebSphere Business Modeler (Modeler) to develop a business process model. This article demonstrates how to use Modeler to design a comprehensive business process model that becomes a foundation for future articles in the series, including:
• Further refinements using WebSphere Integration Developer (Integration Developer) as a BPEL workflow process application.
• Deployment of this BPEL workflow process application in WebSphere Process Server (Process Server)
• Development of a set of key performance business measures around the business process model elements (a.k.a. business measures model) using Modeler and the WebSphere Monitoring Toolkit (Toolkit) plugged into Integration Developer.
• Deployment of the generated J2EE monitor measures application in WebSphere Business Monitor (Monitor)
• Configuration of portal dashboard elements that are visible to line-of-business (LOB) in the Monitor dashboard to display near real-time key performance measures. These measures are generated by the BPEL workflow process application running in Process Server operational hosting environment.
Introduction IBM® offers powerful SOA tools to develop solutions to deploy on to the IBM SOA runtime infrastructure. IBM SOA tools are based on the open-standards based Eclipse workbench, featuring best-of-breed and pluggable architecture. IBM SOA tools support
role-based and life-cycle based solution development with direct-to-middleware or model-driven-development approaches. The tools are tightly integrated, featuring a common look-and-feel of an Integrated Development Environment. The IBM SOA runtime provides a first class infrastructure featuring an industry standard integration stack. WebSphere Business Modeler v6.0.2 helps business analysts perform business process modeling to better understand current practices, and to improve future business processes from several perspectives such as cost, resource, timeline, data, organization, etc. Business analysts can use Modeler’s simulation capabilities to model business processes accurately and precisely. Business analysts can additionally use Modeler to define a high-level key performance measures model using a business-friendly vocabulary and business focus. IT professionals can start with the business process model developed in Modeler to further refine and implement the business process model in their IT domain. In this role, Modeler bridges the gap between business and IT domains. This article should be of interest to developers, customers, consultants and field sales professionals.
Use case scenario – Customer Rewards Process One way to understand the comprehensive capabilities of the IBM WebSphere v6.0.2 SOA stack is to use IBM WebSphere tools develop an end-to-end application that implements a BPEL business activity monitoring (BAM) workflow. You would then want to unit test the application in embedded unit testing environments, deploy the application runtime artifacts on to WebSphere servers and configure the dashboards to monitor the performance of business process model execution. To achieve this goal, we will develop a brand new Customer Rewards business process model from the ground up using the Modeler tool. We will also design a Rewards Handling process to deliver the capability of the “Customer Rewards” process model. We want the Reward Handling process to handle the following requirements:
• Differentiated classes of customers – Platinum, Gold and Silver • Differentiated Quality of Service (QoS) for customer class – i.e. Platinum
customers should get the best service; Gold customers should get slightly degraded service than Platinum customers but better service than Silver customers, etc.
• Programmable QoS differentiation to see the impact of business process model execution in dashboards
• At least one human task step in an otherwise completely automated business process model
• Ability to encapsulate business data in service request, service response, and other flows
• Business process model featuring elements such as local tasks, specialized map tasks performing input to output transformations, branching, merging, success and failure paths, etc.
• Business process model capable of encapsulating key business process performance indicators and runtime metrics to be monitored
Let’s design a fictitious business process model (Figure 1) that handles requests from three classes of customers - Platinum, Gold and Silver. We’ll pass in customer standing as an input to process model. Our process model should deliver:
• The best quality of response to Platinum customers – by featuring just one automated task with minimum task cycle time.
• The next best quality of response to Gold customers – by featuring two automated tasks with one automated task featuring finite programmed task cycle time.
• The lowest quality of response to Silver customers – by featuring two automated tasks with one automated task featuring finite programmed task cycle time.
• Additionally we want to have a manual task that handles a Silver customer request with a human specialist manually determining risk – approving or rejecting customer service requests in the process. To support our use case we’ll design appropriate business items as well as business performance indicators and business metrics to monitor.
Figure 1. Customer Rewards Process Model Overview
Business process modeling In our scenario, business process modeling consists of creating the Customer Rewards business process from ground up using the Modeler tool. This involves performing the following sequence of steps:
1) Create business modeling project 2) Create business items 3) Create process 4) Create business measures
Creating a business modeling project A business modeling project helps you group modeling artifacts and functions in a top-level container. Let’s start by creating a business modeling project:
1. Launch WebSphere Business Modeler. 2. Click the Apply 4-pane layout menu button . 3. Click the Select a mode menu button and check WebSphere Process Server (Figure
2). Figure 2. WebSphere Business Modeler – Mode Specification
4. Right-click in the Project Tree pane and select New -> Business Modeling
Project…. 5. For the New project name specify CustomerRewards. For the Name specify
Rewards Handling and click the Finish button (Figure 3).
Figure 3. WebSphere Business Modeler – Create New Project Wizard
6. Confirm that the Project Tree pane contents matches Figure 4:
Figure 4. WebSphere Business Modeler – Project Tree
7. Right-click on any white space part of process model editor. Select Auto-Layout
Left to Right and then select Select All.
Press the Delete button on the keyboard to delete the selected elements from the process model editor canvas, so that it looks like Figure 5: Figure 5. WebSphere Business Modeler – Process Model Editor
8. Press CTRL+S to save the model. Confirm that it is saved by verifying absence of
the asterisk (*) next to the Rewards Handling process model name
.
Creating business items Business items help us represent essential features of entities that are created or manipulated by various other constructs of process model. Business items are made up of attributes, which define various characteristics of entities that the business item encapsulates. For our CustomerRewards business process project, we will define three business items, Request, Response, and Risk Assessment Report.
To create the business items: 1. Select CustomerRewards -> Business items -> New -> Business Item. 2. For the Name of new business item specify Request and click the Finish button
(see Figure 6).
Figure 6. WebSphere Business Modeler – Create New Business Item
3. Click the Add button and specify the attributes from Table 1:
Table 1. Request business items attributes Name Type Minimum Maximum Read
only Static Ordered Unique
Id String 1 1 False False False False Name String 1 1 False False False False Level String 1 1 False False False False BusinessVolume String 1 1 False False False False City String 1 1 False False False False State String 1 1 False False False False Country String 1 1 False False False False Remarks String 1 1 False False False False
4. Specify the Attribute details from Table 2 so that your attribute details look like
Figure 7: Table 2. Request attribute details Name Attribute description Id 1 or 2 or 3 Name Platinum or Gold or Silver Customer Level Platinum or Gold or Silver Level BusinessVolume GE $1000 or GE $750 & LT $1000 or GE $500 & LT $750 City Leesburg State VA Country USA Remarks Platinum or Gold or Silver Level
Figure 7. Request attribute details form
5. Press CTRL+S to save the Request business item. 6. Select CustomerRewards -> Business items -> New -> Business Item. 7. For the Name of new business item, specify Response and click the Finish button. 8. Click the Add button and specify the Response attributes in Table 3.
Table 3. Response business items attributes Name Type Minimum Maximum Read
only Static Ordered Unique
Id String 1 1 False False False False Name String 1 1 False False False False Level String 1 1 False False False False BusinessVolume String 1 1 False False False False City String 1 1 False False False False State String 1 1 False False False False Country String 1 1 False False False False Remarks String 1 1 False False False False ProcessTime String 1 1 False False False False RiskEvalCriteria String 1 1 False False False False RiskEvalOverride String 1 1 False False False False PaymentHistory Risk String 1 1 False False False False PaymentHistoryWeight String 1 1 False False False False OutstandingDebtRisk String 1 1 False False False False OutstandingDebtWeight String 1 1 False False False False DurationOfCreditHistoryRisk
String 1 1 False False False False
DurationOfCreditHistoryWeight
String 1 1 False False False False
RepayCapacityRisk String 1 1 False False False False RepayCapacityWeight String 1 1 False False False False TypesOfCreditRisk String 1 1 False False False False TypesOfCreditWeight String 1 1 False False False False OverallRiskAssessment String 1 1 False False False False
9. Specify the Attribute details from Table 4 so that your attribute details look like
Figure 8: Table 4. Response attribute details Name Attribute description Id 1 or 2 or 3 Name Platinum or Gold or Silver Customer Level Platinum or Gold or Silver Level BusinessVolume GE $1000 or GE $750 & LT $1000 or GE $500 & LT $750 City Leesburg State VA Country USA Remarks Platinum or Gold or Silver Level RiskEvalOverride Risk Assessment Done By Human Staff – Accept or Reject
Figure 8. Response attribute details form
10. Press CTRL+S to save the Response business item. 11. Select CustomerRewards -> Business items -> New -> Business Item. 12. For the Name of new business item specify Risk Assessment and click the Finish
button. 13. Click the Add button and specify the attributes in Table 5.
Table 5. Risk Assessment business items attributes Name Type Minimum Maximum Read
only Static Ordered Unique
PaymentHistoryRisk String 1 1 False False False False PaymentHistoryWeight String 1 1 False False False False OutstandingDebtRisk String 1 1 False False False False OutstandingDebtWeight String 1 1 False False False False DurationOfCreditHistoryRisk
String 1 1 False False False False
DurationOfCreditHistoryWeight
String 1 1 False False False False
RepayCapacityRisk String 1 1 False False False False RepayCapacityWeight String 1 1 False False False False TypesOfCredRisk String 1 1 False False False False TypesOfCredWeight String 1 1 False False False False
14. Specify the Risk Assessment Attribute details in Table 6 so that your Attribute
details looks like Figure 9. Table 6. Risk Assessment attribute details Name Attribute description PaymentHistory 35% OutstandingDebt 30% DurationOfCreditHistory 15%
RepayCapacity 10% TypesOfCredits 10% Risk :Low=0, Medium=1, High=2 Figure 9. Risk Assessment attribute details form
15. Press CTRL+S to save the Risk Assessment Report business item. 16. Verify that your Project Tree contents matches Figure 10:
Figure 10. Project Tree with new business items
Creating process constructs The Rewards Handling process that we just created in WebSphere Business Modeler is a representation of the real time business process that we are trying to model. This process will feature individual steps consisting of local tasks, maps, branch element and merge elements. For our Rewards Handling business process, we will define the following modeling artifacts: • Local Tasks
o Acknowledge Customer Request o Service Platinum Customer Request o Service Gold Customer Request o Service Silver Customer Request
o Gold Customer Request Processing o Silver Customer Request Processing o Risk Assessment By Specialist o Notify And Complete Service Fulfillment
• Simple Decisions
o Determine Customer Status o Acceptable Risk?
• Maps
o Generate Platinum Customer Response o Prepare Gold Response Generation o Prepare Silver Response Generation o Generate Gold Customer Response o Prepare Silver Customer Additional Processing o Generate Silver Customer Accept Response o Generate Silver Customer Reject Response
• Merges
o Merge o Merge:2
Creating local tasks In this section we’ll create all of the local tasks.
Create the Acknowledge Customer Request Next we’ll create the first local task, Acknowledge Customer Request:
1. Click on the Create local task palette element and drop it on to process model editor design surface, so that it looks like Figure 11:
Figure 11. Creating a local task
2. Click the General tab. For the Name, specify Acknowledge Customer Request.
3. Click the Inputs tab. For the Name specify Req. Click Browse… to specify the value for Associated data as Request (Figure 12). Figure 12. WebSphere Business Modeler – Attributes View – Inputs Tab
4. Click the Outputs tab, which is similar to the Inputs tab. For the Name specify Resp.
Click Browse… to specify the value for Associated data as Request. 5. Click the Technical Attributes View -> Interface Tab. For the Target namespace
specify: http://Processes/RewardsHandling/AcknowledgeCustomerRequestInterface and for the PortType name specify AcknowledgeCustomerRequest.
6. Click the Technical Attributes View -> Request tab. Specify the values in Table 7: Table 7. Risk Assessment attribute details
Field Value Operation name AckCustReq Message name ReqMsg Part name ReqPart Activity display name Acknowledge Customer Request Activity name AcknowledgeCustomerRequest_ReqCrit
7. Click the Technical Attributes View -> Response tab. For the Message name
specify RespMsg and for the Part name specify RespPart. 8. Click the Technical Attributes View -> Implementation Tab. Specify the values in
Table 8: Table 8. Risk Assessment attribute details
Field Value Component display name Acknowledge Customer Request Component name AcknowledgeCustomerRequest Implementation type Java
9. Verify that the palette element on the process model editor now looks like Figure 13:
Figure 13. WebSphere Business Modeler – Local Task
10. Press CTRL+S to save your model.
Create the Service Platinum Customer Request Now we’ll create the second local task, Service Platinum Customer Request, following the same steps as before: 1. Click the Create local task palette element and drop it on the process model editor. 2. Click the General tab and for the Name specify Service Platinum Customer
Request. 3. Click the Inputs tab and for the Name specify Req. Click Browse… to specify the
value for Associated data as Request. 4. Click the Outputs tab. For the Name specify Resp. Click Browse… to specify the
value for Associated data as Request. 5. Click the Technical Attributes View -> Interface tab. For the Target namespace
specify: http://Processes/RewardsHandling/ServicePlatinumCustomerRequestInterface and for the PortType name specify ServicePlatinumCustomerRequest.
6. Click the Technical Attributes View -> Request tab. Specify the values in Table 9: Table 9. Risk Assessment attribute details
Field Value Operation name servicePlatinum Message name ReqMsg Part name ReqPart Activity display name Service Platinum Customer Request Activity name ServicePlatinumCustomerRequest_ReqCrit
7. Click the Technical Attributes View -> Response Tab. For the Message name
specify RespMsg and for the Part name specify RespPart. 8. Click the Technical Attributes View -> Implementation Tab. Specify the values in
Table 10:
Table 10. Risk Assessment attribute details Field Value Component display name Service Platinum Customer Request Component name ServicePlatinumCustomerRequest Implementation type Java
9. Verify that the palette element on the process model editor looks like Figure 14:
Figure 14. Service Platinum Customer Request Local Task
10. Press CTRL+S to save the process model.
Create additional local tasks Now we’ll create the rest of the local tasks, using the same steps as in the previous sections. We’ll skip the detailed steps and just show you the values to fill in on each tab. 1. Create a new local task called Service Gold Customer Request using the values in
Table 11: Table 11. Service Gold Customer Request values
Tab Field Value General Name Service Gold Customer Request Inputs Name Req. Associated data Request Outputs Name Resp. Associated data Request Technical Attributes View -
Interface Target namespace http://Processes/RewardsHandling/Serv
iceGoldCustomerRequestInterface PortType name ServiceGoldCustomerRequest Technical Attributes View -
Request Operation name serviceGold
Message name ReqMsg Part name ReqPart Activity display name Service Gold Customer Request Activity name ServiceGoldCustomerRequest_ReqCrit Technical Attributes View -
Response Message name RespMsg
Part name RespPart Technical Attributes View –
Implementation Component display name Service Gold Customer Request
Component name ServiceGoldCustomerRequest Implementation type Java
2. Create a new local task called Service Silver Customer Request using the
values in Table 12: Table 12. Service Silver Customer Request values
Tab Field Value General Name Service Silver Customer Request Inputs Name Req. Associated data Request Outputs Name Resp. Associated data Request Technical Attributes View –
Interface Target namespace http://Processes/RewardsHandling/Serv
iceSilverCustomerRequestInterface PortType name ServiceSilverCustomerRequest Technical Attributes View -
Request Operation name serviceSilver
Message name ReqMsg Part name ReqPart Activity display name Service Silver Customer Request Activity name ServiceSilverCustomerRequest_ReqCrit Technical Attributes View -
Response Message name RespMsg
Part name RespPart Technical Attributes View –
Implementation Component display name Service Silver Customer Request
Component name ServiceSilverCustomerRequest Implementation type Java
3. Create a new local task called Gold Customer Request Processing using the
values in Table 13: Table 13. Gold Customer Request Processing values
Tab Field Value General Name Gold Customer Request Processing Inputs Name Req. Associated data Request Outputs Name Resp. Associated data Request Technical Attributes View –
Interface Target namespace http://Processes/RewardsHandling/Gold
CustomerRequestProcessingInterface PortType name GoldCustomerRequestProcessing Technical Attributes View -
Request Operation name goldCustProcess
Message name ReqMsg Part name ReqPart Activity display name Gold Customer Request Processing Activity name GoldCustomerRequestProcessing_ReqCritTechnical Attributes View -
Response Message name RespMsg
Part name RespPart Technical Attributes View –
Implementation Component display name Gold Customer Request Processing
Component name GoldCustomerRequestProcessing Implementation type Java
4. Create a new local task called Silver Customer Request Processing using the values in Table 14: Table 14. Silver Customer Request Processing values
Tab Field Value General Name Silver Customer Request Processing Inputs Name Req. Associated data Request Outputs Name Resp. Associated data Request Technical Attributes View –
Interface Target namespace http://Processes/RewardsHandling/Silv
erCustomerRequestProcessingInterface PortType name SilverCustomerRequestProcessing Technical Attributes View -
Request Operation name silverCustProcess
Message name ReqMsg Part name ReqPart Activity display name Silver Customer Request Processing Activity name SilverCustomerRequestProcessing_ReqCr
it Technical Attributes View -
Response Message name RespMsg
Part name RespPart Technical Attributes View –
Implementation Component display name Silver Customer Request Processing
Component name SilverCustomerRequestProcessing Implementation type Java
5. Create a new local task called Risk Assessment By Specialist using the values in Table 15: Table 15. Risk Assessment By Specialist values
Tab Field Value General Name Risk Assessment By Specialist Inputs Name Req Associated data Risk Assessment Report Name Req_1 Associated data String Outputs Name Resp Associated data String Technical Attributes View –
Interface Target namespace http://Processes/RewardsHandling/Risk
AssessmentBySpecialistInterface PortType name RiskAssessmentBySpecialist Technical Attributes View -
Request Operation name riskAssess
Message name ReqMsg Part name ReqPart Activity display name Risk Assessment By Specialist Activity name RiskAssessmentBySpecialist_ReqCrit Technical Attributes View -
Response Message name RespMsg
Part name RespPart Technical Attributes View –
Implementation Component display name Risk Assessment By Specialist
Component name RiskAssessmentBySpecialistHTM Implementation type Human Task
6. Create a new local task called Risk Assessment By Specialist using the values in Table 16: Table 16. Silver Customer Request Processing values
Tab Field Value General Name Notify And Complete Service
Fulfillment Inputs Name Req Associated data Risk Assessment Report Name Req_1 Associated data String Outputs Name Resp Associated data String Technical Attributes View –
Interface Target namespace http://Processes/RewardsHandling/Noti
fyAndCompleteServiceFulfillmentInterface
PortType name NotifyAndCompleteServiceFulfillment Technical Attributes View -
Request Operation name notifyNcomplete
Message name ReqMsg Part name ReqPart Activity display name Notify And Complete Service
Fulfilment Activity name NotifyAndCompleteServiceFulfillment_I
nputCriterion Technical Attributes View -
Response Message name RespMsg
Part name RespPart Technical Attributes View –
Implementation Component display name Notify And Complete Service
Fulfilment Component name NotifyAndCompleteServiceFulfillment Implementation type Java
You now should have eight local tasks defined.
Creating simple decisions In this section we’ll create two simple decisions: • Determine Customer Status • Acceptable Risk?
Create the Determine Customer Status decision
Click the Create multiple-choice decision palette element , and drop it onto the Process Model editor so that it looks like Figure 15.
Figure 15. Process Model Editor with a decision element
7. Click the General tab. For the Name specify Determine Customer Status. 8. Click the Inputs tab. For the Name specify Req. Click Browse… and for
Associated data select Request. 9. Click the Outputs tab. We’ll create three Outputs on this tab. For the first Name
specify RespPlatinum. Click Browse… and for Associated data select Request. For the second output specify RespGold for the Name. Click Browse… and for Associated data select Request. For the third output, for the Name specify RespSilver. Click Browse… and for Associated data select Request.
10. Click the Output branches tab and select the RespPlatinum branch entry. Scroll down in the view and click the Edit button. Compose the expression 'Processes.Rewards Handling.Determine Customer Status.Req.Level' is equal to "PLATINUM" as Figure 16 shows:
Figure 16. RespPlatinum Expression Builder
11. Click the Output branches tab and select the RespGold branch entry. Scroll down in the view and click the Edit button. Compose the expression 'Processes.Rewards Handling.Determine Customer Status.Req.Level' is equal to "GOLD" as Figure 17 shows:
Figure 17. RespGold Expression Builder
12. Click the Output branches tab and select the RespSilver branch entry. Scroll down in the view and click the Edit button. Compose the expression 'Processes.Rewards Handling.Determine Customer Status.Req.Level' is equal to "SILVER" as Figure 18 shows:
Figure 18. RespSilver Expression Builder
13. Click the Technical Attributes View -> General tab. Check Represent exclusive decision as BPEL Switch activity. For the Activity display name specify Determine Customer Status. For the Activity name specify DetermineCustomerStatus.
14. Verify that your element on the Process Model editor looks like Figure 19:
Figure 19. Multiple Choice Decision – Determine Customer Status
15. Press CTRL+S to save the process model.
Create the Acceptable Risk? simple decision:
1. Click the Create multiple-choice decision palette element , and drop it onto the Process Model editor.
2. Click on General tab. For the Name specify Acceptable Risk?. 3. Click on Inputs tab. For the Name specify Req. Click Browse… and for Associated
data specify String. 4. Click on Outputs tab. We’ll specify two Outputs. For the first Name specify
RespYes. Click Browse… and for Associated data specify String. For the second Name specify RespNo. Click Browse… and for Associated data specify String.
5. Click on Output branches tab and select the RespYes branch entry. Scroll down in the view and click on the Edit button. Compose the expression 'Processes.Rewards Handling.Acceptable Risk?.Req' is equal to "Accept" as in Figure 20:
Figure 20. RespYes Expression Builder
6. Click on Output branches tab and select the RespNo branch entry. Scroll down in the
view and click the Edit button. Compose the expression 'Processes.Rewards Handling.Acceptable Risk?.Req' is not equal to "Accept" as in Figure 21:
Figure 21. RespNo Expression Builder
7. Click on Technical Attributes View -> General Tab. Check Represent exclusive decision as BPEL Switch activity. For the Activity display name specify Acceptable Risk?. For theActivity name specify AcceptableRisk. Verify that the element on the Process Model editor looks like Figure 22: Figure 22. Multiple Choice Decision – Acceptable Risk
8. Press CTRL+S to save the Process Model.
Creating maps In this section we’ll create these maps:
o Generate Platinum Customer Response o Prepare Gold Response Generation o Prepare Silver Response Generation o Generate Gold Customer Response o Prepare Silver Customer Additional Processing o Generate Silver Customer Accept Response o Generate Silver Customer Reject Response
As with the local tasks, we’ll show you the details of how to do the first two, and then just show the data to enter for the additional maps. Create the Generate Platinum Customer Response map
1. Click the Create map palette element and drop it onto the Process Model editor so that it look Figure 23: Figure 23. Creating a map element in the Process Model editor
2. Click the General tab. For the Name, specify Generate Platinum Customer
Response. 3. Click the Inputs tab. For the Name, specify Req. Click Browse… and for
Associated data specify Request. 4. Click the Outputs tab. For the Name, specify Resp. Click Browse… and for
Associated data specify Response. 5. Verify that the element on the Process Model editor looks like Figure 24:
Figure 24. Generate Platinum Customer Response Map
6. Save the model.
Create the Prepare Gold Response Generation map 1. Click the Create map palette element and drop it onto the Process Model editor. 2. Click the General tab. For the Name, specify Prepare Gold Response
Generation. 3. Click the Inputs tab. For the Name, specify Req. Click Browse… and for
Associated data specify Request. 4. Click the Outputs tab. . For the Name, specify Resp. Click Browse… and for
Associated data specify Response. 5. Verify that the element on the Process Model editor looks like Figure 25:
Figure 25. Prepare Gold Response Generation map
6. Save the model. Create additional maps Now we’ll create the rest of the maps, using the same steps as in the previous sections. We’ll skip the detailed steps and just show you the values to fill in on each tab. 1. Create a new map called Prepare Silver Response Generation using the values
in Table 17: Table 17. Service Gold Customer Request values
Tab Field Value General Name Prepare Silver Response Generation Inputs Name Req. Associated data Request Outputs Name Resp. Associated data Response
2. Create a new map called Generate Gold Customer Response using the values in
Table 18: Table 18. Service Gold Customer Request values
Tab Field Value General Name Generate Gold Customer Response Inputs Name Req Associated data Request Outputs Name Resp Associated data Response
3. Create a new map called Prepare Silver Customer Additional Processing using the values in Table 19: Table 19. Prepare Silver Customer Additional Processing values
Tab Field Value General Name Prepare Silver Customer Additional
Processing Inputs Name Req. Associated data Response Outputs Name Resp_1 Associated data Risk Assessment Report Name Resp_2 Associated data String
4. Create a new map called Generate Silver Customer Accept Response using the
values in Table 19: Table 20. Generate Silver Customer Accept Response values
Tab Field Value General Name Generate Silver Customer Accept
Response Inputs Name Req Associated data String Outputs Name Resp Associated data Response
5. Create a new map called Generate Silver Customer Reject using the values in
Table 21: Table 21. Generate Silver Customer Reject values
Tab Field Value General Name Generate Silver Customer Reject Inputs Name Req Associated data String Outputs Name Resp Associated data Response
You now should have six maps defined in your Process Model editor.
Creating merges O.K. we’re down to the last set of process constructs to create for our application. In this section we’ll create two merges:
o Merge o Merge:2
Create the first Merge element
1. Click on Create merge palette element and drop it onto the Process Model editor (see Figure 26): Figure 26. Creating a merge
2. Right-click the Merge element and select Add Branch to add a third branch. 3. Click the General tab. For the Name specify Merge. 4. Click the Inputs tab. We need three inputs for this merge. For the first Name specify
ReqPlatinum. Click Browse… and for Associated data specify Response. For the second Name specify ReqGold. Click Browse… and for Associated data specify Response. For the third Name specify ReqSilver. Click Browse… and for Associated data specify Response.
5. Click the Outputs tab. For the Name specify Resp. Click Browse… and for Associated data specify Response.
6. Verify that the element on the Process Model editor looks like Figure 27: Figure 27. First Merge element
7. Save your model.
Create the Merge:2 element 1. Click the Create merge palette element, and drop it onto the Process Model editor. 2. Click the General tab. For the Name specify Merge:2. 3. Click the Inputs tab. For this merge we just need two inputes. For the first Name
specify ReqAccept. Click Browse and for Associated data specify Response. For the second Name specify ReqReject. Click Browse… and for Associated data specify Response.
4. Click the Outputs tab. For the Name specify Resp. Click Browse… and for Associated data specify Response.
5. Verify that the element on the Process Model editor looks like Figure 28: Figure 28. Second Merge element
6. Save your model.
Creating business measures To create business measures, you use the WebSphere Business Measures view in Modeler. It lets you specify the operational values that you want WebSphere Business Monitor to collect. You can then bring these values back into Modeler for accurate and realistic simulation data that helps you continuously improve and manage your business processes. Business measures can be:
• Instance metrics - compute results from one specific instance of process execution
• Aggregate metrics - compute calculations across multiple instances of process execution, providing the ability to compute averages, maximum, minimum, sum or number of occurrences.
• KPIs - facilitate tracking of business objectives and encapsulate targets, ranges, or both to measure business performance while the business process is executing. KPIs are computed from multiple instance runs of process execution.
• Unspecified - a business measure is not one of above type
Next we’ll specify some values to be collected by WebSphere Business Monitor for later use in WebSphere Business Modeler. We want to know how many path executions are occurring for Platinum, Gold and Silver customers respectively. We also want to know how many requests are deemed unacceptable versus acceptable risk. Finally, we want to know the individual task processing times as well as process execution time.
Specifying process elements to monitor 1. Open WebSphere Business Monitor and select the Business Measures –>
Monitored Values tab. 2. Check the following Process Elements (see Figure 29).
• % Per Branch • Processing Time • % Per Branch • Processing Time • Processing Time • Processing Time • Processing Time • Processing Time • Processing Time • Processing Time • Processing Time
3. Save your model. Figure 29. WebSphere Business Modeler – Monitored Values
Creating instance metrics Instance metric measures help us understand the details of individual requests. In this section we’ll create the following instance metric measures: • RequestId • City • State • Country • RequestDate • RequestStatus • BusinessVolumeAmount 1. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values (Figure 30) and click the OK button: • Name = RequestId • Type = Instance metric • Description = RequestId • Check Specify a default value and type • Type = Integer • Default value: = 0.
Figure 30. Business Measure Details for RequestId
4. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values: • Name = City • Type = Instance metric • Description = City – Location Cube • Check Specify a default value and type • Type: = String • Default value: = ‘Leesburg’, • Check Specify the aspects that will be available in the Dimensional view for
analysis of the metric. • Click the Add button and select Reward Handling Dimension to rename it to
City. • Click the OK button (see Figure 31).
Figure 31. Business Measure Details for City
5. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values: • Name = State • Type = Instance metric • Description = State – Location Cube • Check Specify a default value and type
• Type: = String • Default value: = ‘VA’ • Check Specify the aspects that will be available in the Dimensional view for
analysis of the metric. • Click Add button and select Reward Handling Dimension to rename it to
State. • Click the OK button (see Figure 32).
Figure 32. Business Measure Details for State
6. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values: • Name = Country • Type = Instance metric • Description = Country – Location Cube, • Check Specify a default value and type
• Type = String • Default value: = ‘USA’ • Check Specify the aspects that will be available in the Dimensional view for
analysis of the metric. • Click the Add button and select Reward Handling Dimension to rename it to
Country. • Click the OK button (see Figure 33).
Figure 33. Business Measure Details for Country
7. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values: • Name = RequestDate • Type = Instance metric • Description = RequestDate – Time Cube Dimension • Check Specify a default value and type • Type: = Date
• Default value: = January 1, 2007 • Check Specify the aspects that will be available in the Dimensional view for
analysis of the metric. • Click the Add button and select Reward Handling Dimension to rename it to
RequestDate. • Click the OK button (see Figure 34).
Figure 34. Business Measure Details for RequestDate
8. Select Business Measures -> Business Performance Indicators and click the Add… button. Specify these values: • Name = RequestStatus • Type = Instance metric • Description= RequestStatus
['Started','PlatinumCustomerProcessing','GoldCustomerProcessing','GoldCustomerProcessingComplete','SilverCustomerProcessing','SilverCustomerProcessingComplete','SilverCustomerAcceptRisk','SilverCustomerRejectRisk','Completed']
• Check Specify a default value and type • Type: = String • Default value: = ‘Started’ • Check Specify the aspects that will be available in the Dimensional view for
analysis of the metric. • Click the Add button and select Reward Handling Dimension to rename it to
RequestStatus. • Click the OK button (see Figure 35).
Figure 35. Business Measure Details for RequestStatus
9. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values and click the OK button (see Figure 36): • Name = BusinessVolumeAmount • Type = Instance metric • Description = BusinessVolumeAmount.
Figure 36. Business Measure Details for BusinessVolumeAmount
Creating unspecified metrics Next we’ll create an unspecified metric measure to help us determine the amount of time a process takes to fulfill a request. We just need one unspecified metric, called RequestFulfillmentTimer. 1. Select Business Measures -> Business Performance Indicators and click the Add…
button. 2. Specify these values (see Figure 37):
• Name = RequestFulfillmentTimer • Type = Unspecified • Description = RequestFulfillmentTimer
Figure 37. Business Measure Details for RequestFulfillmentTimer
10. Click the OK button.
Creating aggregate metrics Next we’ll create aggregate metric measures to help us determine: • What percentage of requests received are being fulfilled on an actual and average
basis • On an average, how much time does the process take to fulfill a request • Total and average amount of customer business generation in dollars • Total number of requests received, rejected, successful and • Counters for successful and rejected requests. We’ll need to create the following aggregate metrics:
• RequestFulfilledPercentage • AverageRequestFulfillmentTime • TotalBusinessVolumeAmount • AverageBusinessVolumeAmount • TotalNumberOfRequests • AverageRequestFulfilledPercentage • TotalRejectedRequests • TotalSuccessfulRequests • RejectedRequestsCounter • SuccessfulRequestsCounter 1. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values (see Figure 38) and click the OK button. • Name = RequestFulfilledPercentage • Type = Aggregate metric • Description =
((SuccessfulRequestsCounter/RejectedRequestsCounter)*100)
Figure 38. Business Measure Details for RequestFulfilledPercentage
2. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values (see Figure 38) and click the OK button. • Name = AverageRequestFulfillmentTime • Type = Aggregate metric • Description = AverageRequestFulfillmentTime • Click Specify how this measure is aggregated across multiple runs of the
process • Function: = Average. Click OK button (see Figure 39).
Figure 39. Business Measure Details for AverageRequestFulfillmentTime
11. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values and click the OK button. • Name = TotalBusinessVolumeAmount • Type = Aggregate metric • Description = TotalBusinessVolumeAmount • Click Specify how this measure is aggregated across multiple runs of the
process: • Function: = Sum.
12. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values and click the OK button. • Name = AverageBusinessVolumeAmount • Type = Aggregate metric • Description = AverageBusinessVolumeAmount
• Click Specify how this measure is aggregated across multiple runs of the process:
• Function: = Average. 13. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values and click the OK button. • Name = TotalNumberOfRequests • Type = Aggregate metric • Description = TotalNumberOfRequests • Click Specify how this measure is aggregated across multiple runs of the
process: • Function: = Count.
14. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values and click the OK button. • Name = AverageRequestFulfilledPercentage • Type = Aggregate metric • Description = AverageRequestFulfilledPercentage • Click Specify how this measure is aggregated across multiple runs of the
process: • Function: = Average
15. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values and click the OK button. • Name = TotalRejectedRequests • Type = Aggregate metric • Description = TotalRejectedRequests • Click Specify how this measure is aggregated across multiple runs of the
process: • Function: = Count
16. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values and click the OK button. • Name = TotalSuccessfulRequests • Type = Aggregate metric • Description = TotalSuccessfulRequests • Click Specify how this measure is aggregated across multiple runs of the
process: • Function: = Count
3. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values and click the OK button. • Name = RejectedRequestsCounter • Type = Aggregate metric
• Description = RejectedRequestsCounter • Click Specify how this measure is aggregated across multiple runs of the
process: • Function: = Count.
17. Select Business Measures -> Business Performance Indicators and click the
Add… button. Specify these values and click the OK button. • Name = SuccessfulRequestsCounter • Type = Aggregate metric • Description = SuccessfulRequestsCounter • Click Specify how this measure is aggregated across multiple runs of the
process: • Function: = Count
Creating KPI metrics Next we’ll create the KPI metric measures. We want some of these metrics to be within business determined goals. These measures track overall business performance on an aggregation and hence needs to be within some desirable bounds. We want our process to:
• Average some desirable business dollar turnover within a specified range • Total some desirable number of total requests completed • Average request fulfillment duration within specified range boundaries, etc.
We’ll need the following KPI metrics: • AverageBusinessVolumeAmount(US $) • TotalRequests(Completed) • AverageRequestFulfillmentDuration • PercentageOfRequestsFulfilledCurrentMonth • RejectedRequestsCurrentMonth • TotalBusinessVolumeAmountCurrentYear(US $) • TotalBusinessVolumeAmountCurrentYearCanada(US $) • TotalBusinessVolumeAmountCurrentYearUSA(US $) • TotalRequests(Gold) • TotalRequests(Platinum) • TotalRequests(Silver) • TotalRequests(Started) • TotalRequestsCurrentMonth 1. Select Business Measures - Business Performance Indicators and click the Add…
button. Specify these values as Figure 40 shows, and click the OK button. • Name = AverageBusinessVolumeAmount(US $) • Type = KPI
• Description = AverageBusinessVolumeAmount(US $) • Check Specify a target value and type. • Type = Number • Target value = 1000.0 • Check Specify range details and select the Actual value button. • Click Add to specify the values in Table 22.
Table 22. Ranges for AverageBusinessVolumeAmounts Range name Start value End value PlatinumBusinessVolume 1000 < 10000 GoldBusinessVolume 750 < 1000 SilverBusinessVolume 0 < 750
Figure 40. AverageBusinessVolumeAmount Performance Indicators
18. Select Business Measures - Business Performance Indicators and click the Add…
button. Specify these values and click the OK button.
• Name = TotalRequests(Completed) • Type = KPI • Description = TotalRequests(Completed) • Click Specify a target value and type. • Type = Number • Target value = 0.0 • Check Specify range details and select the Actual value button. • Check Select the dimensions across which to calculate the KPI value and
check the RequestStatus dimension. 2. Select Business Measures - Business Performance Indicators and click the Add…
button. Specify these values, and click the OK button. • Name = AverageRequestFulfillmentDuration • Type = KPI • Description = AverageRequestFulfillmentDuration • Check Specify a target value and type. • Type: Duration • Target value = 5 Milliseconds • Check Specify range details and select the Actual value button. • Click Add to specify the values in Table 23.
Table 23. Ranges for AverageRequestFulfillmentDuration Range name Start value End value PlatinumService 0 < 0.005 seconds GoldService 0.005 seconds < 0.025 seconds SilverService 0.025 seconds < 0.045 seconds
3. Select Business Measures - Business Performance Indicators and click the Add…
button. Specify these values, and click the OK button. • Name = PercentageOfRequestsFulfilledCurrentMonth • Type = KPI • Description = PercentageOfRequestsFulfilledCurrentMonth • Check Specify a time period over which the business measure will be
monitored and select the Repeating radio button. • Period Type = Monthly • Base period on = Period in progress • Check Specify range details and select the Actual value button. • Click Add to specify the values in Table 24.
Table 24. Ranges for PercentageOfRequestsFulfilledCurrentMonth Range name Start value End value Excellent 45 < 50 Good 35 < 45 Average 25 < 35
• Check Select the dimensions across which to calculate the KPI value and check the RequestDate dimension.
4. Select Business Measures - Business Performance Indicators and click the Add…
button. Specify these values, and click the OK button. • Name = RejectedRequestsCurrentMonth • Type = KPI • Description = RejectedRequestsCurrentMonth • Click Specify a target value and type. • Type = Number • Target value = 5.0 • Check Specify a time period over which the business measure will be
monitored and select the Repeating radio button. • Period Type = Monthly • Base period on = Period in progress • Check Specify range details and select the Actual value button. • Click Add to specify the values in Table 25.
Table 25. Ranges for RejectedRequestsCurrentMonth Range name Start value End value Not Acceptable 5 < 12 Acceptable 0 < 5
• Check Select the dimensions across which to calculate the KPI value and
check the RequestDate dimension. 5. Select Business Measures - Business Performance Indicators and click the Add…
button. Specify these values, and click the OK button. • Name = TotalBusinessVolumeAmountCurrentYear(US $) • Type = KPI • Description = TotalBusinessVolumeAmountCurrentYear(US $) • Click Specify a target value and type. • Type = Number • Target value = 50000.0 • Check Specify a time period over which the business measure will be
monitored and select the Repeating radio button. • Period Type = Yearly • Base period on = Period in progress • Check Specify range details and select the Actual value button. • Click Add to specify the values in Table 26.
Table 26. Ranges for TotalBusinessVolumeAmountCurrentYear Range name Start value End value Excellent 45000 < 50000 Good 26250 < 45000 Average 0 < 26250
• Check Select the dimensions across which to calculate the KPI value and
check the RequestDate dimension. 6. Select Business Measures - Business Performance Indicators and click the Add…
button. Specify these values, and click the OK button. • Name = TotalBusinessVolumeAmountCurrentYearCanada(US $) • Type = KPI • Description = TotalBusinessVolumeAmountCurrentYearCanada(US $) • Click Specify a target value and type. • Type = Number • Target value = 10000.0 • Check Specify a time period over which the business measure will be
monitored and select the Repeating radio button. • Period Type = Yearly • Base period on = Period in progress • Check Specify range details and select the Actual value button. • Click Add to specify the values in Table 27.
Table 27. Ranges for TotalBusinessVolumeAmountCurrentYearCanada Range name Start value End value Excellent 9000 < 10000 Good 525 < 9000 Average 0 < 5250
• Check Select the dimensions across which to calculate the KPI value and
check the RequestDate dimension. 7. Select Business Measures - Business Performance Indicators and click the Add…
button. Specify these values, and click the OK button. • Name = TotalBusinessVolumeAmountCurrentYearUSA(US $) • Type = KPI • Description = TotalBusinessVolumeAmountCurrentYearUSA(US $)Click
Specify a target value and type. • Type = Number • Target value = 40000.0 • Check Specify a time period over which the business measure will be
monitored and select the Repeating radio button. • Period Type = Yearly • Base period on = Period in progress
• Check Specify range details and select the Actual value button. • Click Add to specify the values in Table 28.
Table 28. Ranges for TotalBusinessVolumeAmountCurrentYearUSA Range name Start value End value Excellent 36000 < 40000 Good 21000 < 36000 Average 0 < 21000
• Check Select the dimensions across which to calculate the KPI value and
check the RequestDate dimension. 8. Select Business Measures - Business Performance Indicators and click the Add…
button. Specify these values, and click the OK button. • Name = TotalRequestsCurrentMonth • Type = KPI • Description = TotalRequestsCurrentMonth • Click Specify a target value and type. • Type = Number • Target value = 50.0 • Check Specify a time period over which the business measure will be
monitored and select the Repeating radio button. • Period Type = Monthly • Base period on = Period in progress • Check Specify range details and select the Actual value button. • Click Add to specify the values in Table 29.
Table 29. Ranges for TotalRequestsCurrentMonth Range name Start value End value Excellent 45 < 50 Good 35 < 45 Average 25 < 25
• Check Select the dimensions across which to calculate the KPI value and
check the RequestDate dimension. 9. Select Business Measures - Business Performance Indicators and click the Add…
button. Specify these values, and click the OK button. • Name = TotalRequests(Gold) • Type = KPI • Description = TotalRequests(Gold) • Click Specify a target value and type. • Type = Number • Target value = 0.0 • Check Select the dimensions across which to calculate the KPI value and
check the RequestDate dimension.
10. Select Business Measures - Business Performance Indicators and click the Add… button. Specify these values, and click the OK button. • Name = TotalRequests(Platinum) • Type = KPI • Description = TotalRequests(Platinum) • Click Specify a target value and type. • Type = Number • Target value = 0.0 • Check Select the dimensions across which to calculate the KPI value and
check the RequestDate dimension. 11. Select Business Measures - Business Performance Indicators and click the Add…
button. Specify these values, and click the OK button. • Name = TotalRequests(Silver) • Type = KPI • Description = TotalRequests(Silver) • Click Specify a target value and type. • Type = Number • Target value = 0.0 • Check Select the dimensions across which to calculate the KPI value and
check the RequestDate dimension. 12. Select Business Measures - Business Performance Indicators and click the Add…
button. Specify these values, and click the OK button. • Name = TotalRequests(Started) • Type = KPI • Description = TotalRequests(Started) • Click Specify a target value and type. • Type = Number • Target value = 0.0 • Check Select the dimensions across which to calculate the KPI value and
check the RequestDate dimension. 19. Verify that you have defined all of the Business Performance Measures shown in
Figure 41. They are also listed at the beginning of this section.
Figure 41. WebSphere Business Modeler – Business Performance Measures
Export the completed project To complete the process and business measures model for our project, you need to switch back to WebSphere Business Modeler and verify that the project workbench is in WebSphere Process Server mode and not reporting any errors in errors view. To validate the process model:
1. Click on menu toolbar drop-down . Verify that WebSphere Process Server entry is checked.
2. Select Window -> Show View -> Other… -> Business modeler views -> Error View. Click OK button.
3. Verify that there are no errors in Error View. Now we’ll export the completed project as three types of projects:
• WebSphere Business Modeler project for future review, modification and maintenance
• WebSphere Integration Developer project for IT handoff, IT composition and implementation
• WebSphere Business Monitor project for business performance measurement and monitoring.
To export the project: 1. Right-click CustomerRewards and select Export… -> WebSphere Business
Modeler project (.mar). Click Next. 2. For the Target directory, enter C:\Bhar\devWorks\4-6-2007, and for the Project
enter CustomerRewards. Select Export entire project, and check Include
simulation snapshots. For Export file name enter 4-6-2007-MOD-CustomerRewards (see Figure 42). Click the Finish button.
Figure 42. Exporting as a Modeler project
3. Now we’ll export as a WebSphere Process Server project. Right-click
CustomerRewards and select Export… -> WebSphere Process Server. Click Next.
4. For Target directory enter C:\Bhar\devWorks\4-6-2007, and for Project enter CustomerRewards. Select Export entire project. Check Module project name and specify 4-6-2007-MODWID-CustomerRewards. Check Project interchange name
and specify 4-6-2007-MODWID-CustomerRewards. Check Enable default events (see Figure 43). Click the Finish button.
Figure 43. Exporting from Monitor to Process Server
5. Finally we’ll export as a WebSphere Business Monitor project. Right-click
CustomerRewards and select Export… -> WebSphere Business Monitor Development Toolkit (.mm). Click Next.
6. For the Target directory enter C:\Bhar\devWorks\4-6-2007, and for the Project enter CustomerRewards. Select Export entire project and click the Finish button (see Figure 44).
Figure 44. Exporting from Modeler to Monitor
Conclusion Congratulations, you have successfully designed a basic CustomerRewards business process model from the ground up using WebSphere Business Modeler. Additionally you have provided a detailed set of key business performance and monitoring measures to track business performance, with near real-time as well as historic perspectives, and to gather some operational metrics for continuous business process/performance improvements. You have defined business measures using WebSphere Business Modeler. After validating the process model, you have exported the process model project in
various formats for business to IT handoff and IT refinement and realization. In future articles, we will use Modeler developed projects to jump start IT implementations and IT realizations.
Acknowledgements The authors would like to gratefully thank Rick Osowski, Software Engineer for IBM Business Monitor, for comprehensively reviewing the article and providing the authors with thoughtful suggestions, and Sujatha Perepa, Software IT Architect for carefully reviewing this article for accuracy and providing us with constructive ideas for improvement.
Resources
• IBM WebSphere Business Process Management Version 6.0 information center • Using Loops in WebSphere Business Modeler v6 to improve simulations and
export to BPEL (developerWorks, March 2007) • Process anti-patterns: How to avoid the common traps of business process
modeling, Part 1 (developerWorks, February 2007) • Business Process Execution Language for Web Services version 1.1
(developerWorks, February 2007) • Transforming models from WebSphere Business Modeler to WebSphere
Integration Developer (developerWorks, May 2005) • Using WebSphere Business Modeler, Monitor, and Process Server for BPM
(WB170 or VB170) • WebSphere Business Modeler: Process Mapping, Simulation, and Analysis
(WB182 or VB182) • WebSphere Business Modeler: Process Mapping and Analysis (BI184 or VB184) • Designing for Performance Measurement Using WebSphere Business Monitor
(WB189 or VB189) • WebSphere Business Modeler information • WebSphere Integration Developer information • Redbook: Business Process Management: Modeling through Monitoring Using
WebSphere V6 Products • Redbook: Best Practices for Using WebSphere Business Modeler and Monitor • Redbooks: Patterns: SOA Foundation - Business Process Management Scenario • IBM Modeler User's Group (IMUG) • Sharing business processes in a team environment using WebSphere Business
Modeler and CVS (developerWorks, February 2007) • developerWorks WebSphere development tools • developerWorks Websphere business integration
About the authors Bhargav Perepa is a WebSphere IT Specialist at IBM Federal Software Group in Washington D.C. area. He was a WebSphere developer in IBM Austin WebSphere Development Lab and had previous Smalltalk, C++ development experience in IBM Chicago. Bhargav holds a Masters degree in Computer Sciences from IIT, Chicago and an MBA degree from UT-Austin, Texas. You can reach Bhargav at [email protected]. Stephanie Parkin is a Senior Software Developer working on the IBM developerWorks site. She currently works on information architecture, and content editing and acquisitions for the WebSphere development tools zone. Stephanie has co-authored several books on visual programming with IBM development tools. She holds a B.S. in Computer Science from the College of William and Mary in Williamsburg, VA. You can reach Steph at [email protected]. Trademarks • IBM and WebSphere are trademarks or registered trademarks of IBM Corporation in
the United States, other countries, or both. • Java and all Java-based trademarks and logos are trademarks or registered trademarks
of Sun Microsystems, Inc. in the United States, other countries, or both. • Other company, product, and service names may be trademarks or service marks of
others. IBM copyright and trademark information: http://www.ibm.com/legal/copytrade.phtml