IBM WebSphere Business Modeler (hereafter called Modeler) is a powerful tool for creating process models. You can use it to document and simulate business processes, and perform analysis to enable process improvement. You can export business models to WebSphere Process Server and other IBM runtime environments.
As someone who has worked with Modeler for a long time, I receive email questions about certain aspects of Modeler. Over time, I have noticed that many of the questions are repeated. In this article, I answer the top ten questions I receive. If you're new to Modeler, this article will answer some of the questions you may have as you get started. If you're experienced with Modeler, you can test your knowledge by seeing how many of the answers you know off the top of your head.
Number 10: How do I simulate a process with multiple inputs and outputs?
Not all processes begin at a single point. Depending on the business logic, a process may start at different points. Other processes may have multiple channels that could trigger a process to run. Simulating a process like this requires a couple of extra steps that you don’t need for a straight line process. Figure 1 shows an example process with an input for paper requests, and another input for Web requests.
Figure 1. Process with multiple inputs
In this process, if a request arrives in paper form, a person with the role “Receiving” needs to enter the data from the form into a system. If the request arrives from the Web, an automatic program does the same job. The request then continues to the next step, performed by the "Processing" role, then the process ends. The human resources are available on the day shift only on weekdays.
If you attempt to simulate this process with 10 total tokens for each input, the simulation appears to work. However, the statistics only show the results for 10 instances of the process, not 20 as you would expect. You'll also see an error indicating that the simulation ended, but not all tasks completed successfully. What’s the matter?
A process has input logic, which you can see if you are in intermediate mode or higher. The input logic is used to determine how a process starts. By default, when a process has multiple inputs an AND operation is performed on the inputs. You must change this to an OR, in order to correctly simulate the process, by completing the following steps:
- Switch to intermediate or advanced mode.
- On the Attributes tab, then click the Input Logic tab,
as shown in Figure 2. The current criterion is Input AND
Figure 2. Set the input logic
- In order to change AND to OR, each input needs its own entry in the list. Click Add. A second row is added to the input logic, called Input Criterion:2.
- Uncheck Input:2 from the Input Criterion line, then check
Input:2 in the Input Criterion:2 line. The input logic
should now look like Figure 3. This indicates in the model that the
process can start from Input Criterion OR Input Criterion:2.
Figure 3. Updated input logic
- Strictly speaking, a process does not need a start node in order to
simulate. If you do opt to use start nodes, you will need one start
node to correspond with every input in your process.
Make sure you're in intermediate or advanced mode, then click on a start node.
- On the Attributes tab, select which input corresponds to the start node, as shown in Figure 4.
- Repeat this for all start nodes in the process.
Figure 4. Start node settings
If your process has multiple outputs, but only one of them will be used each time, you face a similar problem. The default behavior is to perform an AND on the two output criteria. In order to make the simulation work, you need to do the following:
- On the Output Logic tab, make sure to select one output criteria on each line, so that an OR operation is performed.
- For each stop node, associate the stop node with the appropriate output criteria. Unlike start nodes, stop nodes are required.
You can now simulate your process with multiple inputs and outputs.
Number 9: Why do I get extra inputs and outputs when I model?
Have you ever created a model where you end up with extra inputs and outputs on gateway constructs such as decisions and merges? Figure 5 shows an example with extra inputs on for both branches, and two extra outputs. For larger models with many paths, having an abundance of extra inputs and outputs takes up room, and can cause problems with simulation and exporting the model.
Figure 5. Model with extra inputs and outputs on merge element
More often than not, the culprit turns out to be the combination of business items and basic mode. In trying to make things easier for you, basic mode sometimes does things automatically that don't occur in other modes. At times, this is helpful to you, but in this case, basic mode’s behavior might not be what you want. Let's walk through an example:
- Begin with three tasks to be merged together. Make sure you're in
basic mode. Connect the first task to the merge, then add a business
item to the new connection, as shown in Figure 6.
Figure 6. Modeling in basic mode
- Connect Task:2 to the merge.
- The middle port of the merge now has an extra input, as shown in
Figure 7. Connection added
Why did this occur? Basic mode made an assumption in this case which did not work in our favor.
- When you added the business item RequestData to the link from Task to the merge, each of the inputs on the merge was set to expect an input with RequestData.
- When you connected Task:2 to the merge, there was no data on the link.
- Basic mode decided for you that you must want a new input on the merge.
If you add the RequestData business item to the new link you just added, you see a pop-up menu asking you to select a source output and a target input, as shown in Figure 8. You can now select which of the inputs to use in the merge: the current output with no business item associated or the existing one with RequestData. What you typically want is the second choice. However, the default value is to use the input with no business item associated.
Figure 8. Select source and target
Using intermediate mode
When you use intermediate mode or higher, the behavior of Modeler is slightly different. Rather than making an assumption on what you want to do, these modes give you more direct control. Let's see how it works:
- Undo the previous steps until the process looks like Figure 6 again.
- Switch to intermediate or advanced mode. The diagram changes to show the input and outputs.
- Create a connection from Task:2 to the middle of the second input of
the merge, circled in red in Figure 9. The connection is created, the
business item RequestData is associated, and no extra inputs are added
to the merge.
Figure 9. Modeling in intermediate mode
- Create a connection from Task:3 to the bottom input. This time connect to the bottom of the input, shown in the blue oval in Figure 9. The connection is created with no business item associated, and an extra input is created.
- Figure 10 shows the process after the connections have been added.
Figure 10. Process with connections added
As you can see, when you use intermediate mode or higher, you can control the behavior, rather than having Modeler make an assumption of what you want to do. Extra inputs are created only if you want them.
Number 8: How does Modeler XML import and export work?
When first setting up a modeling project, a common request is to populate the catalog with information that may already exist in your organization, rather than having to input it all manually. One of the options on the input menu is WebSphere Business Modeler XML. Will any XML work? What are the limitations? How can you get started?
It turns out that Modeler includes a couple of sample XML files to help you
begin. You can find these files at
[Modeler install directory]\samples\xml. You'll
see two files: types.xsd and wbimodeler.xsd. An XSD file is an XML Schema
Definition. These files specify how a file should be formatted. However,
if you’re not an XML expert, looking through an XSD can be a bit
Rather than dealing with the schema, an easier way to understand Modeler XML is to begin with a simple export. Let's say you want to import information on roles in your organization. Begin by defining a role:
- Create a role called
Data Processing. Add any attributes you might need, such as cost and availability.
- Save the new role.
- In the project tree, right-click the role and select Export.
- Click Next.
- Select the directory you want to export the file to. Confirm that only the Data Processing role is selected, then click Finish.
- A file with the same name as the modeling project is created, with type XML, as shown in Listing 1.
Listing 1. Role exported to XML
<?xml version="1.0" encoding="UTF-8"?> <wbim:model xmlns:wbim="http://www.ibm.com/wbim/bomSchema1.0" schemaVersion="6.1.2"> <wbim:catalogs> <wbim:resourceCatalogs> <wbim:catalog id="Rsrcs" name="Resources"/> </wbim:resourceCatalogs> <wbim:businessServiceCatalogs/> <wbim:businessServiceObjectCatalogs/> </wbim:catalogs> <wbim:resourceModel> <wbim:roles> <wbim:role name="Rsrcs##Data Processing"> <wbim:costPerTimeUnit timeUnit="PT1H"> <wbim:costValue currency="USD">18.0</wbim:costValue> </wbim:costPerTimeUnit> </wbim:role> </wbim:roles> </wbim:resourceModel> </wbim:model>
This listing hows what the XML needs to look like. You can use this as a template for other roles you want to add to your model. To test this function, do the following:
- Use a text editor open the XML file.
- Change the role name from
- Change the
- Save the changes.
- In Modeler, right-click your modeling project, and select Import.
- Select WebSphere Business Modeler XML, then click Next.
- Browse to find your source directory, then select your file from the list. Ensure that your project is selected as the target, then click Finish.
- In your Resources folder, you should see the role Quality Control, with a cost defined at 22.5 USD per hour.
Modeler V6.1.2 can also import from spreadsheets. You should also consider this option for bringing in your existing data to the modeling project.
Number 7: How do I print a model with subprocesses and loops expanded?
Business processes can often be decomposed into subprocesses. Modeler calls these local processes, and enables you to drill down into them to define the details. A local process might contain another local process and so on, to any number of levels. You can also drill down into loops in Modeler. Figure 11 shows an example of a process decomposed into three local processes.
Figure 11. Process with local processes
Often times, you want to create a printout of the process. While the ideal situation is to use WebSphere Business Modeler Publishing Server to eliminate paper printouts, there are still times when you may need a hardcopy. A printout of Figure 11 would show just the high-level view. You could drill down into each local process and print it out as well, but then you lose the high-level view. How can you create a printout showing both the high level view and the details inside each local process?
The trick to creating a printout with both the high-level and detailed view is to create a simulation snapshot. To do this, complete the following steps:
- Right-click your process in the project tree, and select Simulate. The simulation opens.
- Right-click in the whitespace of the simulation diagram, and select Expand All. All levels of the process expand out to show you the detail within, as shown in Figure 12.
- Right-click in the whitespace of the simulation diagram and select
Figure 12. Expanded process partial screen
This view is available in the simulation view, so that you can see all of the tasks in the process if you have animation on. As it turns out, the view is also useful if you want to print out your process with all of the container activities expanded.
Note: Modeler V6.2 can expand loops and local processes in place, which eliminates the need to use this trick.
Number 6: How can I add multiple tasks at one time?
When creating the initial model for a process, users often click on the task icon from the palette, then click in the process diagram to add the task. Then they click on the task icon again, and click in the diagram again. Then again, and again. The question is: how can you add multiple tasks (or other constructs) to a model without having to use two clicks every time?
The answer is simple: use the Shift key.
- Click the task icon on the palette. Move the mouse pointer over the process diagram. The pointer changes to the add icon.
- Hold down the Shift key.
- Click to place a task into the process diagram. A task is added.
- Move the mouse and click somewhere else in the diagram. Another task is added.
As long as you hold down the Shift key, you'll keep on adding more tasks into the model. When you're done, release the Shift key, and you return to the normal pointer.
Number 5: How do I export to Rational Software Architect?
After you create a business model, you may find a candidate for a reusable service, which you need to create. Rational® Software Architect (hereafter called Software Architect) is IBM®’s tool for UML2 modeling, used in the design phase. It generates a code skeleton based on the UML2 model, which can then be coded and tested in Rational Application Developer. Elements from the business model are translated into elements of the UML model. For example, a business process becomes a business use case. A role becomes a business actor, or a business worker with an interface. A business item becomes a business entity, and so on. The question is: there's no option on the Export menu for Rational Software Architect, so how do you export to Rational Software Architect?
Question #5 is a trick question -- you don’t export to Software Architect! Instead, Software Architect directly reads a Modeler workspace. Once Software Architect is pointed to the Modeler workspace, elements from the business model can be dragged and dropped into the UML2 model. No export is needed.
Note: If Software Architect is installed on a different machine, you can use a source control repository such as Rational Clear Case to store the project from Modeler, then access it from Rational Software Architect.
Number 4: How can I attach files for documentation?
One of the advantages of a business model as compared to a flow chart diagram, is that the model contains metadata, as well as a visual representation. Sometimes there is other documentation which would be useful to include along with the model. The question is: how can you attach an existing file to a model?
You can use the Specification tab for a process shown in Figure 13 to add file attachments. You can add one or more attachments by clicking Add. The file is then included with the model, and can even be viewed when the model is published to WebSphere Business Modeler Publishing Server. The attachment is added at the process level; you cannot attach files to other constructs such as roles business items.
Figure 13. Specification tab
Number 3: How can I import WSDL so that works when I export out to WebSphere Integration Developer?
You can import a Web Services Definition Language (WSDL) file into Modeler using the Import menu. If you use the WebSphere Service Registry and Repository, you can also import a service by performing a business service search. In either case, the business services catalog is populated with the imported service, with the related XSDs going into the business service objects catalog. If you want to use the business service, there are a number of levels at which you can drag and drop into the business model. What is the correct way to do it, so that when you export to Integration Developer, it works properly?
The answer is that what you want to drag and drop is the operation for the business service, not the WSDL file itself. To do this, complete the following steps:
- Right-click your modeler project and select Import.
- Select Business services and service objects (.wsdl, .xsd), then click Next.
- Click Browse, and navigate to the directory where the .wsdl file is located. Select the directory, and you'll see a list off all .wsdl and .xsd files it contains. Click the checkbox for the ones you want to import, then click Finish.
- The files are imported into your modeling project.
Figure 14 shows an example of an imported service. In this example, the ABCBankServices folder represents the WSDL file itself. The ABCBank folder represents the WSDL port, while checkCompanyCredit and checkCompanyHealth are operations. CompanyInfo is an external XSD referenced by the WSDL file.
Figure 14. Imported business service
Figure 14. Imported business service
For this example, you would drag and drop one of the operations, checkCompanyCredit or checkCompanyHealth into the process to represent the business service being called. When the process is exported to Integration Developer, the WSDL and XSD are included in the export. The business service becomes a BPEL invoke. In the SCA diagram, the reference for the invoke is wired to an import with Web services binding.
Note: Not all WSDLs are supported, but this process will work for many of them.
Number 2: How do I get work to queue up in front of a task?
When performing a simulation with animation turned on, the normal behavior is as follows:
- A token reaches a task.
- The number of active task instances (the number in the box above the task when the simulation is active) increases.
- When the task is complete, the number decreases as the token flows out and on to the next step.
The trouble is, if you have a limited number of resources, some of the active instances are being worked on, and some are waiting for a resource to free up. The question is: how can you set up your model, so that you can see the work queuing up when waiting for a resource?
Figure 15 shows an example of a simple process with two steps. Both steps use different roles, set to two for each role in the resource pool. The number above Step 1 shows that there are three active instances. However, one of them is waiting for a resource. There's no way to see which instances are active and which are waiting.
Figure 15. Simulation with unlimited simultaneous tasks
The answer is to use the setting for maximum number of simultaneous tasks. By controlling this parameter, you can tell the simulation engine that only a specific number of tasks can be active at one time. Any incoming tokens will have to queue up in front, as they wait their turn. To set this parameter, do the following:
- In the simulation snapshot, click Step 1.
- On the General tab of Attributes view, set the maximum
number of simultaneous tasks to
2. The default of 0 means an unlimited number.
- Repeat for Step 2.
- Save your changes, then start the simulation from the simulation
Figure 16. Simulation with maximum number of simultaneous tasks set to two
Figure 16 shows the same simulation with both tasks set to a maximum number of two simultaneous tasks. Two instances of Step 1 are active, with the other incoming tokens having to wait in the queue in front of the task. As the queue builds up, the depth is shown graphically as well as numerically. If more than twenty tokens are in the queue, the color goes to red to indicate a large back-up.
By setting the maximum number of simultaneous tasks, you can visually see the work backing up for your tasks.
And the number 1 top ten Modeler question: How do I enable multiple simulation runs?
Figure 17 shows an example of a simple process. After creating the model, if you decide to simulate the process you have a problem: how can you run multiple simulations? If you start the simulation from the control panel, only one token will flow through the process. This is not enough to understand where the work backs up, process cases, and other important information for analysis. The question is: how can you enable multiple simulation runs?
Figure 17. Simple process
The answer is that, in order to run multiple simulations, something needs to flow into the first task of the process. Figure 15 shows a similar process, with an input to the process flowing to Step 1. To create this input, do the following:
- In the process editor, move the mouse pointer to the far left edge of the process until the pointer changes to an icon indicating that you're adding a connection. Click to start the connection, then move the pointer to Step 1 and click again.
- A connection is made from the edge of the process to Step 1. By default, a business item of type Text is added to the connection to indicate a data flow.
- Optionally, drag and drop a business item onto the new connection to replace Text with something more meaningful.
- Right-click the process in the process tree, and select Simulate. Click OK in the Add Elements window to continue.
- In the simulation Attributes view, select the Inputs
tab. Click Input to select it, as shown in Figure 18.
Figure 18. Simulation input attributes
- Click Edit to set the total number of tokens. Each token represents an input to the process. If the process inputs arrive in a size other than 1, click Edit to set the number of tokens per bundle. A token bundle represents a batch of work arriving at the same time. Optionally, click Edit to select a one-time cost per token, if there is a cost associated with each input to your process.
- Tokens can be created by a time trigger, which is the default. You can set the time interval between tokens, or use the default of one minute.
- If the time between tokens varies, you can use a random time trigger, using a distribution to vary the time.
- If the time between tokens varies according to the time of day, you can use a timetable trigger. You could break up the day into intervals, each of which has a different rate for token creation.
- Click Save to save the updates.
When you start the simulation from the control panel, multiple instances of the process will now run.
How did you do?
How many of the top ten Modeler questions did you know?
0-3 – You’re off to a good start.
4-6 – You’re getting good with Modeler.
7-9 – You’re an expert.
10 – Perfect!
- Advanced simulation (developerWorks 2007): This article....
- WebSphere Business Modeler: Get product information, including features, benefits, demos and trial downloads.
- WebSphere Business Modeler V6.1.2 Information Center: Get complete product documentation.
- WebSphere Business Modeler forum: Share your experiences and questions with other WebSphere Business Events users.
- developerWorks BPM zone: Get the latest technical resources on IBM BPM solutions, including downloads, demos, articles, tutorials, events, webcasts, and more.
- Business Process Management enabled by SOA: Get product information, including features and benefits.