- The Benefits of Inter-Portlet Communication
- The WebSphere Property Broker
- Creating a Service Provider
- Testing the Service Provider
- Creating a List Portlet
- Creating a Detail Portlet
- Configuring the WebSphere Property Broker
- Alternative Communication Methods
- When to Use Inter-Portlet Communication
- Summary
- Important Points
Creating a List Portlet
This section describes how to add another model to your project, which is surfaced to a portal server as a portlet. The portlet consumes the service created in the previous section, and displays a list of loans to the user. When a loan in the list is clicked, the ID of the loan is sent to the WebSphere Property Broker, which can then be read by other portlets. A screenshot of both the list and detail portlets is shown later in Figure 7.15.
The model uses the following builders to provide its functionality:
- Portlet Adapter
- Service Consumer
- View & Form
- Cooperative Portlet Source
Creating a Model
To build the list portlet, select File, New, WebSphere Portlet Factory Model from the File menu to bring up the WebSphere Portlet Factory Model dialog. On the next screen, select your WPF project and press Next. The next screen lists different types of models WPF can create for you automatically. You can create service consumers in WPF in two ways: the first is to let WPF create one for you, and the second is to create the service consumer manually. The builders you use to create the list portlet in this section are fairly standard, so you can opt for WPF to create them for you. Select List and Detail Service Consumer from the Service Consumers category and press Next.
Specifying the Service
The next screen asks you define a portlet name and service provider model for the consumer. The portlet name is also used as a prefix when the wizard names some of the builder calls in your model. Name the portlet loans and select chapter07/loansService as the service provider model. Click Next to continue.
Specifying List and Detail Operations
You now need to specify an operation to retrieve view data—the list portion of your portlet. Select getLoansList from the drop down and press the Next button to edit the detail portion of the portlet. Although the list portlet in this chapter is intended to be used as a list portlet only, defining the detail portion gives the loansList model the flexibility to be run as a list and detail portlet together if a separate detail portlet is unavailable. Fill out the settings on this screen, as shown in Figure 7.4. This converts the loanID column values into clickable links that run the getLoanDetail operation when clicked. Press Next when you are finished.
Figure 7.4 Configuring the detail portion of the loansList model.
Now, you need to define a uniquely identifying parameter that is used to open a loan when a loan ID is clicked. Enter in the loan ID from the loan on the currently selected row, as shown in Figure 7.5, and click the Next button.
Figure 7.5 Configuring input overrides for the loansList model.
Name the model loansList and make sure it is created in the directory models/chapter07, and then press Finish. This creates a new model called loansList in your WPF project, and opens the model in the Model Editor and Outline view. The loansList model contains three builder calls: a Portlet Adapter, a Service Consumer, and a View & Form.
Configuring the Portlet Adapter
The Portlet Adapter builder converts the model into a portlet, which can be viewed inside a portal. Note that if you make any changes to this builder call, including the changes you are about to make, you need to rebuild the deployed application before you can see the results of the changes. For more information on this process, see the example in Chapter 1. The Service Consumer builder makes the operations in the loansService service available in the current model, and the View & Form builder displays the list and detail data in the model to the screen.
You need to make two small changes to the Portlet Adapter builder call. Double-click the Portlet Adapter builder call to open it in the Model Editor, and then change the Portlet Title to Loans List and the Portlet Description to List of loans. Save the builder call when you are finished. The Portlet Title identifies the portlet inside the portal—it is actually displayed in the title bar of the portlet—and the Portlet Description appears on various administration screens inside the portal.
Defining the Portlet as a Cooperative Source
The final step in building the list portlet is to add a Cooperative Portlet Source builder call. This builder call defines the structure and content of the information to send to the Property Broker (for instance, the loan ID). A Cooperative Portlet Target builder call is then used in the detail portlet to receive the loan ID from the Property Broker.
Add a Cooperative Portlet Source builder call to the loansList model and then name it openLoanDetail. Change the Type input to Property Broker Link, which replaces the links created by the View & Form builder with links that send the loan ID to the Property Broker. Note that the links are replaced only when the model is viewed as a portlet and the Property Broker is correctly configured; otherwise, the links created by the View & Form builder call are retained.
In the Page location section of the Cooperative Portlet Source builder call, specify loansView_ViewPage as the Page and LoanID as the tag. This replaces the ID links created by the View & Form builder call with new links that publish information to the Property Broker.
For portlets to communicate via the Property Broker, they need to use the same namespace. In the example in this chapter, the Cooperative Portlet Source and Cooperative Portlet Target both need to have the same namespace defined. Leave the default value for the Namespace input.
The Output Definitions section defines the information that you send to the Property Broker. Fill out this section, as shown in Figure 7.6. Note that the Value input should read ${Variables/LoanLoopVar/Loan/LoanID}. This declares that whenever a loan ID link is clicked, the loan ID of the selected loan should be sent as a String called loanID to the Property Broker. Save the builder call when you are finished.
Figure 7.6 Configuring output definitions for the Cooperative Portlet Source builder call.
Your project now contains a list portlet. The next section describes how to test this portlet from your IDE.
Testing the List Portlet
Although you cannot test the communicative capabilities of the list portlet at this stage, because there is no detail portlet to communicate with, you should run the loansList model from the IDE to see if you are getting any errors. To do this, run the loansList model from the WPF Designer. You should see a list of loans in your default Web browser, as shown in Figure 7.7.
Figure 7.7 List of loans from the loansList model.
Notice that the ID of each loan is a clickable link. If you click on the ID link for a particular loan, you should see some details for that loan. For example, clicking on the ID for A Traveling Aunt should return the details shown in Figure 7.8.
Figure 7.8 Testing the getLoanDetail operation.
Note that currently the list portlet functions as both a list and detail portlet, because the View & Form builder call provides links that make it possible to open details on a loan from the loans list. However, when you deploy the loansList model as a portlet and configure the Property Broker, these links are replaced with links from the Cooperative Portlet Source builder call. When the links from the Cooperative Portlet Source builder call are used, the detail page in the list portlet cannot open when a loan ID is clicked. Close the loansList model when you've finished testing it.
You now have a list portlet that provides a list of loans by consuming the loansService service. The next section describes how to create a detail portlet that displays details for a loan clicked in the list portlet.