In April of this year at the Impact 2011 conference, IBM announced a new software offering, IBM Business Process Manager Version 7.5, hereafter called Business Process Manager. This new offering represents the merger of IBM's WebSphere Process Server (hereafter called Process Server) and WebSphere Lombardi Edition (hereafter called Lombardi Edition) into a single software offering.
In a previous developerWorks column, I discussed how Process Server and Lombardi Edition had different takes on BPM, and were complementary to each other. Business Process Manager now enables you to use the best features from each of the previous offerings, combined together into a single solution.
Business Process Manager Express and Business Process Manager Standard run BPMN processes, providing the functionality of Lombardi Edition. Business Process Manager Advanced adds the ability to run BPEL processes, providing the functionality of both Lombardi Edition and Process Server. This article focuses on Business Process Manager Advanced.
A key concept from Lombardi Edition that is expanded on in Business Process Manager is that of a central repository for all process artifacts, called the Process Center. All of the items you build are stored and governed by the Process Center. The Process Center is a process repository, focusing on assets at the process level. It can work with WebSphere Service Registry and Repository, which provides governance at the service level.
The tool used by BPMN process designers who formerly used the Lombardi Authoring Environment is now called the IBM Process Designer (hereafter called Process Designer). The tool used by BPEL developers who previously used WebSphere Integration Developer is now called the IBM Integration Designer (hereafter called Integration Designer).
In a previous developerWorks article, I showed how you could create a human-centric process in Lombardi Edition, and invoke an integration-centric process in Process Server. In this article, you'll see how the same scenario can be performed using Business Process Manager V7.5, and how having the Process Center as a common repository makes the development and deployment effort easier. The first scenario will show a top-down design, where you start with a BPMN process in Process Designer and create a new service to be implemented in Integration Developer. The second scenario will show a bottoms-up design, where you create an asset in Integration Developer and make it available to Process Designer for use in a BPMN process.
Working with the BPEL process
For the purposes of this article, a pre-built process is provided. You'll begin by importing the process, exploring it, and exposing it as a Web service. A project interchange file is provided for you to download and unzip.
Import the process
The Process Center manages process applications. You can access the Process Center from Process Designer, Integration Designer, or from a web browser. Since you'll begin with a BPEL process, you'll use Integration Designer for this section. Process applications consist of artifacts created in Process Designer, Integration Designer, or both. This enables you to manage all relevant artifacts in a single container, the Process App.
- Start Process Designer.
- The Process Center screen is displayed. If it is not, navigate to the Process Center by clicking the button labeled Process Center at the top right of the screen.
- Click Import Process App to import an existing process application. Click Browse and navigate to the BPM75Integration.twx file you downloaded and unzipped. Select the file, then click Open.
- Click Next, and wait for the file to be uploaded.
Click OK to complete the import.
Figure 1. Creating a new process application
- Click OK to complete the import.
Explore the process
Now let's explore the BPEL process you just imported.
- Start Integration Designer. If it opens up in a workspace, click the Process Center icon at the top right.
- Find the BPM75Integration process application and click Open in workspace.
- Expand BPM75Integration_Implementatoin =gt; Integration Logic
=> BPEL Process, then double-click
BPEL_Process_Process. The process editor opens,
as shown in Figure 2.
Figure 2. The BPEL process
- The process has three invoke activities that invoke three different services. BPEL processes in Process Server can be transactional, short-running (microflow) processes, which are run in memory for maximum performance, or can be long-running, stateful processes. The BPMN processes you'll explore later in this article are always long-running.
- In the BPM75Integration_Implementation folder, double-click Assembly Diagram. The assembly editor opens with a view of the integration components from the project. As Figure 3 shows, the process is wired to three components representing the services to be invoked. The process is wired on the left side to an SCA Export, which exposes the process as a service to other applications. The export uses Advanced Integration binding, which is new to Business Process Manager V7.5.
Figure 3. Assembly diagram
In the previous developerWorks article, you needed to add a web services interface for the process, store the URL for the WSDL, then paste it into the BPMN development tool. In the next section, you'll see how items from the Integration Designer are available for use in the Process Designer. This enables the integration eveloper to create services in Integration Designer and store them in the Process Center, so that BPMN process developers can access them through drag-and-drop. The Advanced Integration binding enables you to use the BPEL implementation, without having to know the URL for the WSDL as you did in previous versions.
In previous versions, after you imported a project interchange file into Integration Developer, it was only stored in the workspace and still needed to be deployed to the server. Business Process Manager uses the shared model architecture from Lombardi Edition, which means that when you store a Process App in the Process Center, it is both stored for development and deployed to runtime. Since you imported the process application in a previous step, you don't need to do anything now to deploy it.
Building the BPMN process
You'll now use the Process Designer tool to create a BPMN process that calls the BPEL process you just explored.
- Start Process Designer.
- Click the Process Center icon to navigate to the Process Center, if you are not already there.
- In the Process Center, find the BPM75Integration process application,
and click Open in Designer to the right of it, as
shown in Figure 4.
Figure 4. Opening the process application
- Hover over Processes on the left. When the +
appears, click it, then click Business Process
Definition to add a new process. Name the process
Request Approval, and click Finish.
- Drag-and-drop a swimlane from the palette on the right, into the process diagram.
- Drag-and-drop four tasks from the palette on the right into the
process diagram, as shown in Figure 5.
Figure 5. Tasks added to the process
- Click on the first task. Change the name to
Enter Request Data.
- Change the name of the second task to
- Change the name of the third task to
Send For Processing.
- Change the name of the last task to
- Click the Sequence Flow icon to change from select
mode to wiring mode, as shown in Figure 6. Click the first task, move
the mouse to the second task and click again to wire them together.
Similarly, wire the other tasks and the Start and End events, until
your process looks like Figure 6.
Figure 6. Process with tasks wired
- Click on the top swimlane with the two tasks. Change the name to Requester.
- Click on the swimlane with the Validate Request task, and rename it
- Click Ctrl-S to save.
You have now completed the BPMN diagram. Next, you'll implement the tasks.
Implement the tasks
Three of the tasks are steps performed by people. For these steps, you'll create human task services. A Lombardi Edition style human task service in a BPMN process is similar to a Process Server style human task, in that they present work to people using a web-based task list along with forms for displaying data and enabling user input so that you can perform your business task. However, there is one major difference: whereas a Process Server style human task generally shows a single form, a Lombardi Edition human task service often uses multiple forms (called “coaches”), along with conditional logic, and the ability to invoke services in between the coaches. For example, you might first display a screen of instructions, with an input field and a Next button to navigate forward. A service step might look up information from the input field, then navigate to a different coach screen, depending on the outcome of the lookup. Figure 7 shows an example of a more complex human task service.
Figure 7. Complex human task service
To keep things simple for this article, the human task services will be single coach screens, without any extra logic or service invocations. A wizard generates the human task services for you. All you need to do is to specify the input and output for the task. In order to do this, you first need to add a variable.
- Click the Variables tab at the top, and click Add Private.
- Change the name of the new variable to
- By default, the variable is a String, but the human task services
need to show request data. The Request data type was defined in the
BPEL process, which is part of the overall Process App. To select the
Request data type, click Select to see all of the
available data types. Type
REQto filter the list, until you see the data type you are searching for. Click Request to select it.
- Check Has Default. This initializes the complex
variable type for use in the process. The variable should now look
like Figure 8.
Figure 8. requestData variable
- Click the Diagram tab to return to the process
diagram, then right-click Enter Request Data and
select Activity Wizard. The Activity wizard displays,
as shown in Figure 9. Click Next. The activity needs
an input and an output. Since there is only one variable defined in
the process, input and output are both set to
true. If you had multiple variables, you can select which ones to use. Keep the defaults and click Finish.
Figure 9. Activity wizard
- The wizard generates the implementation, including data mapping.
Double-click Enter Request to edit the
implementation. You'll see the diagram, as shown in Figure 10. A
generated coach is wired to the start and stop nodes. The only button
in the coach is OK, which you see on the wire going
Figure 10. Generated human task servic
- To see the coach, double-click Coach. You'll see the
generated form, as shown in Figure 11.
Figure 11. Generated coach screen
- In a real implementation, you would modify the default coach screen.
Make a simple change to the form. Click the Type
field to select it. In the properties, notice that it has a control
Input Text. Click the Control Type drop-down menu, and choose Single Select. This changes this field from simple text to a drop-down menu.
- To define the options in the menu, click the
Presentation tab, then click
Add. Change the value to
Newand the display text to
New Request. Add a second option with a value of
Updateand a description of
Update Request. Your screen should now look similar to Figure 12.
Figure 12. Setting up the dropdown list
- Click Ctrl-S to save. When you save an item in Process Designer, it is stored to the Process Center, which means it is saved and deployed at the same time. You can now play back the coach by clicking the Run Service icon at the top right. This will open the coach in a web browser. You can try out the dropdown and enter values in the other fields. When you click OK, you'll be asked whether you want to close the window. Click Yes.
- Close the coach by clicking X on the tab with the name. You are now back at the process.
- Repeat step 5 for the Validate Request and View Results tasks.
You have now generated the human task services for the process. All that remains is to specify the advanced integration service (AIS) for the Send for Processing step.
- Right-click Send For Processing, and select
Activity Wizard. Since this task is in the System
swimlane, the choices are different. For Service
Type, select Advanced Integration Service.
Select Attach an existing service, then click
Select. From the list, select
BPEL_Process, as shown in Figure 13.
Figure 13. Selecting the AIS
- Click Finish. The task in the process is now set up to invoke the AIS.
- In the properties of Send For Processing, click the Data Mapping tab. For the input, change tw.local.Input to tw.local.requestData, or use the selection icon to select it.
- Change tw.local.Output to tw.local.requestData.
Expose the process
The last thing to do is to expose the process so that users can start it from the Process Portal.
- Click the Overview tab at the top.
- In the Exposing section, for Expose to Start, click Select, then click All Users.
- Repeat for Expose business data and Expose
performance metrics. Your screen should now look similar
to Figure 14.
Figure 14. Process overview settings
- The process is now complete. Click Ctrl-S to save.
Versioning of Process Apps is provided through snapshots which, as the name implies, are simply images of everything that you have at a point in time. It is a snapshot of a Process App that gets deployed to a server. It is therefore best to give a snapshot a useful name, to enable easier version management:
- Click the camera icon at the top right of the screen, labeled Snapshot.
- Enter the name
Completed Process Version 1then click OK.
In previous versions, for Lombardi Edition to call Process Server you needed to create an integration service which called a web service, discover the WSDL for the service, then connect it all up. With Business Process Manager V7.5, connecting the two systems is much simpler, since all artifacts are stored in the shared repository of the Process Center.
In addition, the Process Center provides governance. Process Apps are deployed as a unit, and versioned. If you make a change to the BPEL process, a new version of the Process App is deployed, keeping everything in sync. In previous versions without this governance, you could make a change to the BPEL process that could break the integration with the BPMN process.
Test the process
Now let's test the process, first using the Process Portal.
- Select Start => All Programs => IBM => BPM Advanced 7.5 => Profiles => ProcCtr01 => Process Portal.
- Log in as
- To start a new process, under Inbox click
New, as shown in Figure 15, then click
Request Approval. The process starts and a
message is displayed.
Figure 15. Starting from the Process Portal
- You'll see a window telling you the process has been started. Close the window. You'll see an Enter Request Data task appear under Instances. Click the green arrow in the Run column at the right to run this task. When prompted whether the task should be assigned to you, click OK.
- The Enter Process Data coach is displayed. Enter a name, type and amount, then click OK.
- A Validate Request task appears. As above, run the task. You may have to click Inbox again to refresh the screen if the task was not ready when the screen refreshed.
- The automatic Send For Processing task is run. This may take a few minutes the first time. You may need to refresh your Process Portal in order to see the last process task. When View Results appears in your task list, run the task as above. The process is now complete.
- Repeat step 3 to start another process instance.
Using the federated task list
Now let's explore a new feature of Business Process Manager V7.5: a federated task list available in Business Space. IBM Business Space is not a separate product, but rather a Web 2.0 front-end used by applications across the IBM BPM portfolio. Each product provides a set of widgets that are built using the iWidget standard. The widgets previously provided with WebSphere Process Server enabled you to view and process tasks assigned to you. These widgets have been extended to enable both Process Server style human tasks, as well as Lombardi Edition style human task services.
- Open a web browser, and navigate to http://localhost:9080/mum/resources/bootstrap/login.jsp.
- Log in with a user ID of
adminand a password of
- Click Manage Spaces => Create Space.
- Enter the name
Workflow, then select Create a new space using a template.
- In the dropdown list, select Advanced Task and Process Management, then click Save. Your new space now appears in the list. Click Workflow to open it. When the space opens, click on the Manage Tasks tab.
- In the Tasks widget, you'll see an Enter
Request Data task. Click the icon to the right to
Accept and edit the task, as shown in Figure 16.
Figure 16. Opening the task
- In the Task Information widget, the coach is rendered. Enter some values and click OK.
This federated task list enables you to process human tasks from both BPMN and BPEL style processes in a single place. Customers using both heritage products (WebSphere Process Server and WebSphere Lombardi Edition) now have a single place to do their work. You can also create customized solutions by customizing your own spaces, or creating your own widgets.
You've seen now how Process Designer can easily access artifacts created in Integration Designer. This is an example of bottoms-up development, where service artifacts are created first, then are used by the BPMN process developers. There are also cases where a BPMN process is being created, and the developer realizes that a step of the process needs to perform integration work. A typical user of Process Designer is not technical enough to design a WSDL document for a service. In the past, communicating what was needed to the more technical developers required manual effort, and much work on both sides. In this section, you'll learn how you can specify what is needed for a new service, in a top-down development scenario.
Add a new process step
- In the BPMN business process diagram, drag and drop a new task into the System swimlane at the end of the process.
- Name the new task
Update System. Wire the process so that Update System follows the View Results step. Your process should now look like Figure 17.
Figure 17. Process with new step added
Define a new advanced integration service
In this scenario, as a non-technical BPMN process designer, you don't know how to go out to a backend system to perform an update. You do know what the inputs and outputs are from the process data, and you'd simply like to have a technical developer do the work required for this step. To do so, you'll simply create a new AIS, which can be implemented by the technical developers.
- Right-click Update System and select Activity Wizard.
- For Service Type, select Advanced Integration Service.
- For Service Selection, ensure that Create
New Service is selected, then click
Finish. By default, the only local variable
requestData) is used for the input and output. If you have multiple variables, you can specify which ones are to be used for input and output.
- Click Ctrl-S to save the process.
That's it! You have created the AIS, which the technical developers can now go off and implement. Even though the service is not yet implemented, you can still play back your process to test it.
Develop the advanced integration service
You'll now play the role of the technical developer and implement the service.
- If not already open, start Integration Designer. From the Process Center, select Open in workspace for BPM75Integration.
- The process application has been updated since you last worked with
it. Integration Developer detects that something has changed.
Right-click BPM75Integration and select
Refresh from Process Center. This goes out to the
repository and brings back the updates. As shown in Figure 18, an
unimplemented AIS named Update System now appears in
Figure 18. Project with unimplemented AIS
- Right-click Update System and select
Implement. As Figure 19 shows, you are presented
with a list of options for how you want to implement the AIS.
Figure 19. Implementation options
- For this example, select Java component and click Finish. The Java™ editor opens.
- At the bottom of the Java code, replace
return nullwith the two lines shown in Listing 1.
Listing 1. Lines of Java code
requestData.setString(“Type”,”Completed”); return requestData;
- Click Ctrl-S to save, then close the Java editor by clicking the X at the top of the tab.
- The code is complete and can be tested in Integration Developer, but one last step remains: it has to be sent back to the repository. Right-click BPM75Integration and select Refresh and Publish. The Java component is published to the Process Center, and is deployed to the server.
Test the completed process
Now that the BPMN process has been updated and deployed, including the new service component, run a new instance of the Request Approval process. You can use Business Space, Process Portal or the Inspector view in Process Designer. Figure 20 shows the results in the Inspector view, with the Type field updated to Completed by the Java code in the AiS.
Figure 20. Completed process
In this article, you learned how IBM Business Process Manager Advanced V7.5 is the next step in IBM's BPM evolution, bringing together the capabilities of both Process Server and Lombardi Edition into a single product, with many new features and functions. You learned how integration between BPMN and BPEL processes has been simplified by IBM Business Process Manager V7.5, and how the Process Center provides a central repository for process applications, along with governance. You learned how the non-technical BPMN process developers and more technical integration designers can collaborate together to create a process application. You also learned about the federated task list available in Business Space.
|Project interchange file||BPM75Integration.zip||507KB|
- IBM Business Process Manager home page
- Using Business Space to manage business process management applications
- developerWorks BPM zone: Get the latest technical resources on IBM BPM solutions, including downloads, demos, articles, tutorials, events, webcasts, and more.
- IBM BPM Journal: Get the latest articles and columns on BPM solutions in this quarterly journal, also available in both Kindle and PDF versions.