One way that WebSphere eXtreme Scale can be integrated with BPM is a tight coupling where the eXtreme Scale is installed into the BPM installation and the BPM Process Server profiles are augmented with eXtreme Scale capabilities. This is the preferred method of integration for BPM V8 customers. An advantage of the augmented configuration is that the eXtreme Scale configuration can take advantage of built in WebSphere Application Server high availability and security functionality.
In this scenario, high availability is enabled by creating a set of clusters, as shown in Figure 1, each spread over more than one physical host, and then separating the catalog service, container service and applications onto separate clusters. This article walks you through the steps to achieve this.
Figure 1. Cluster topology
Security consists of authentication security, provided by internal WebSphere Application Server WSToken functionality, and transport security, provided partly by WebSphere Application Server Common Secure Interoperability Protocol Version 2 (CSIV2) functionality and partly by eXtreme Scale Secure Sockets Layer (SSL) functionality.
Following are the prerequisites for setting up the example:
- IBM Business Process Manager Advanced, V8, including IBM Integration Designer, with fix IFPM63787
- DB2 Enterprise Server Edition 9.7
- WebSphere eXtreme Scale, V7.1.1
Install IBM BPM and create the profiles for the clustered environment
This section guides you through installing IBM BPM Advanced and creating the profiles to support a clustered environment.
- On the DB2 database server, create a common database using the
following command:
db2 create database CMNDB automatic storage yes using codeset
UTF-8 territory US pagesize 32768 - On each of the physical host systems, install IBM BPM as follows:
- From the BPM install image, start the launchpad.
- Click Custom Installation.
- Click Install to start the IBM Installation Manager.
- On the Install Packages, deselect DB2 Express and click Next.
- Accept the license agreement and click Next.
- Make sure that the Installation Manager install directory is correct and click Next.
- Note the installation directory because eXtreme Scale will be installed into the same directory later. Click Next.
- Select languages, then click Next.
- Check the disk space information, and click Next.
- Click Install.
- Following installation, leave Profile Management Tool to create a profile selected and click Finish.
- Designate one of the physical hosts as the primary node. This is where you'll create the deployment manager profile.
- On the primary node, do the following in the Profile Management Tool:
- Click Create.
- Expand WebSphere Enterprise Service Bus and select Enterprise service bus deployment manager, then click Next.
- Select Advanced profile creation, then click Next.
- Leave Deploy the administrative console checked, and click Next.
- Accept the default profile name and directory, and click Next.
- Accept the default node, host and cell names, and click Next.
- Provide an administrative user name and password, and click Next.
- Accept the default certificate settings, and click Next.
- Accept the default certificate settings, and click Next.
- Accept the default port assignments, and click Next.
- Accept the default Run as operating system service settings, and click Next.
- Leave Use a database design file unchecked, and click Next.
- Set the database product to DB2.
- Select Use an existing local or remote database.
- Set the common database name to the one you previously created (CMNDB).
- Leave Run database scripts to create the database tables checked, and click Next.
- Set the DB2 user name and password for accessing the database.
- Set the DB2 server host name, port and schema (for example, DB2ADMIN), and click Next.
- Click Create.
- Leave Launch the First steps console checked, and click Finish.
- Select Start the deployment manager in the First Steps console.
- Once the deployment manager has started, exit the First Steps console.
- On both the primary and secondary hosts, create custom profiles
federated with the deployment manager using the Profile Management
Tool, as follows.
- Click Create.
- Expand WebSphere Enterprise Service Bus and select Enterprise service bus custom profile, then click Next.
- Select Advanced profile creation, and click Next.
- Accept the default profile name and directory, and click Next.
- Accept the default node and host names,and click Next.
- Set the host name of the deployment manager (the primary node).
- Set the deployment manager administrator user name and password, and click Next.
- Accept the default certificate settings, and click Next.
- Accept the default certificate settings, and click Next.
- Accept the default port assignments, and click Next.
- Leave the database product as DB2, and click Next.
- Click Create.
- Uncheck Launch the First Steps console, and click Finish.
- Exit the Profile Management Tool.
To provide high availability for the eXtreme Scale services, you need to create a clustered environment. A cluster is a centrally managed set of application servers spread across multiple physical hosts. Each application server in the cluster has an identical configuration, which enables high throughput of client requests and high availability in case of a server crash. The easiest way to achieve this in IBM BPM is to create a deployment environment with a standard pattern of application cluster, messaging cluster and support cluster. To do this complete the following steps:
- Log in to the IBM BPM Process Server administrative console in your browser.
- Select Servers => Deployment Environments.
- Click New.
- Set a Deployment environment name, such as
MYDEand click Next. - Select WESB, and click Next.
- Select Remote Messaging and Remote Support, and click Next.
- Select both nodes and click Next.
- Ensure that there is a 1 in each box for both nodes, and click Next.
- Accept the default application cluster name, and click Next.
- Accept the default messaging cluster name, and click Next.
- Accept the default support cluster name, and click Next.
- Accept the default REST settings, and click Next.
- Leave the Import database configuration file field blank, and click Next.
- Ensure that all of the database names point to the database created earlier (CMNDB) and that the other database parameters are correct, then click Next.
- Check that the security parameters are correct, and click Next.
- Check the summary data and click Finish and Generate Environment.
- Once you've finished creating the deployment environment, click Save Changes.
In order to enable the eXtreme Scale grid definition to be deployed to the
support cluster, you must prepare it to host the messaging engines. Do
this using the wsadmin command line tool on the
deployment manager as follows:
- Start the deployment manager
wsadmincommand line tool in Jython mode, for example:
BPM_INSTALL_DIR/profiles/Dmgr01/bin/wsadmin.sh -lang jython
-username adminUser -password adminPassword - Run the following commands to enable the cluster to host the messaging
engines:
AdminTask.configSCAAsyncForCluster('-clusterName MYDE.Support -remoteMELocation WebSphere:cluster=MYDE.Messaging') AdminTask.configSCAJMSForCluster('-clusterName MYDE.Support -remoteMELocation WebSphere:cluster=MYDE.Messaging') AdminConfig.save()
- Exit the
wsadmincommand line tool by enteringquit
Once you've installed IBM BPM, and created the required profiles and deployment environment, you can install eXtreme Scale on top of IBM BPM and augment the profiles to support eXtreme Scale.
First, stop the deployment manager and all node agents. Then on each host, do the following:
- From the eXtreme Scale install image, run install.
- On the Welcome screen click Next.
- Accept the license agreement and click Next.
- Change the default Product installation location to point to the directory where BPM was installed, and click Next.
- On the Confirm the selected installation directory screen, click Next.
- Ensure that both the eXtreme Scale server and client are selected, and click Next.
- Ensure that all profiles on the current node are selected, and click Next.
- On the Installation Summary, click Next.
- Once installation has completed, click Finish.
Configure the eXtreme Scale catalog service
The catalog service provides an interface for clients to request access to the eXtreme Scale container service. It requires a properties file, which describes its configuration and a Service Domain, which can contain multiple catalog services.
- Create a catalog service properties file called
objectGridServer.propertiesin the properties directory of the deployment manager, as shown here:BPM_INSTALL_DIR/profiles/Dmgr01/properties/objectGridServer.properties
Following is an example set of properties:
#Catalog Service properties traceSpec=ORBRas=all=enabled,SSL=all=enabled,ObjectGridSecurity=all=enabled traceFile=/tmp/WXS/WXSCSTrace.log serverName=myhostCatalogService listenerPort=9809 listenerHost=myhost.mycompany.com catalogClusterEndPoints=myhostCatalogService:myhost.mycompany.com:6601:6602 isCatalog=true securityEnabled=false transportType=TCP/IP JMXServicePort=1099
The listener port 9809 is the deployment manager's default bootstrap port, which gets assigned to the catalog service automatically. The client listener port 6601 is arbitrary, as long as it does not clash with an existing port, but it is required by the service domain definition.
- Restart the deployment manager and all node agents.
- Next you need to create the catalog service domain, which should
demonstrate that the catalogue service is running:
- In the administrative console, select System Administration => WebSphere eXtreme Scale => Catalog service domains, and click New.
- Specify a name for the domain, such as
myDomain. - The default endpoint points to the deployment manager (for
example,
myhostCell01\myhostCellManager01\dmgr). Select this endpoint. - Set the client port to what was set in the properties file (6601 in the example above).
- Click OK and Save.
- Click on your domain. It may take a few seconds, but when it opens up the status should be green.
- Check the endpoint box and click Test connection to make sure that the connection is working.
Configure the eXtreme Scale container service
There are two aspects to defining and starting an eXtreme Scale container service. The first, described in this section, is to create a properties file used to configure the container service's connectivity (its ports and how it connects to the catalog service). The second deals with XML files that describe how the eXtreme Scale ObjectGrid is to be configured; these are deployed to IBM BPM in an EAR file. This step is described in Create the IBM BPM eXtreme Scale definition.
- In the properties directory of each custom node, create an
objectGridServer.properties file for the container services as
follows:
BPM_INSTALL_DIR/profiles/Custom01/properties/objectGridServer.propertiesFollowing is an example set of properties:#Container properties traceSpec=*=all=disabled serverName=myhostXSContainer catalogServiceEndPoints=myhost.mycompany.com:9809 securityEnabled=false transportType=TCP/IP JMXServicePort=1098 listenerPort=2890 listenerHost=myhost.mycompany.com
ThecatalogServiceEndpointshould point to the deployment manager host and catalog service port. ThelistenerHostparameter is the custom node host you're setting up, and the other ports can be set arbitrarily as long as they don't clash with existing ports. - Restart the deployment manager and all nodes and servers.
Configure an eXtreme Scale ObjectGrid
This section describes how to configure an eXtreme Scale ObjectGrid and start it. It requires that you have IBM Integration Designer V8 installed and running.
- In Integration Designer, create a new module by selecting File
=> New => Module and call it
gridMap. This is a dummy EAR that contains only the eXtreme Scale configuration XML files. - Select Project => Clean.
- In the Clean dialog, select Clean projects selected below, select your new project, then click OK.
- Go to the Java perspective.
- Expand the web module (for example, gridMapWeb), then expand WebContent => META-INF.
- Right-click META-INF and create a new file called
objectGrid.xmlwith the following example content:<?xml version="1.0" encoding="UTF-8"?> <objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd" xmlns="http://ibm.com/ws/objectgrid/config"> <objectGrids> <objectGrid name="MyGrid"> <backingMap name="Map1" ttlEvictorType="LAST_UPDATE_TIME" lockStrategy="PESSIMISTIC"/> </objectGrid> </objectGrids> </objectGridConfig>
Note that thelockStrategy PESSIMISTICis important in order for the cache time to live parameter specified in the IBM BPM eXtreme ScaleStoreprimitive to be honored. - Right-click META-INF and create a new file called
objectGridDeployment.xmlwith the following example content:<?xml version="1.0" encoding="UTF-8"?> <deploymentPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ibm.com/ws/objectgrid/deploymentPolicy ../deploymentPolicy.xsd" xmlns="http://ibm.com/ws/objectgrid/deploymentPolicy"> <objectgridDeployment objectgridName="MyGrid"> <mapSet name="sessionMapSet"> <map ref="Map1"/> </mapSet> </objectgridDeployment> </deploymentPolicy>
Note that this file references the map name from the objectGrid.xml file. - Create an EAR file from this module, the XML files should be present in the .war component of the EAR.
- Deploy the EAR file to the support cluster, synchronize the nodes, and start the EAR file.
Create the IBM BPM eXtreme Scale definition
To allow the IBM BPM eXtreme Scale primitives to access the eXtreme Scale catalog service (refer to Configure IBM BPM eXtreme Scale mediation), you must create a definition in BPM to provide the connectivity information as follows:
- In the IBM BPM administrative console, select Service integration => WebSphere eXtreme Scale definitions, and click New.
- Specify a definition name, such as
myWXSDefinition. - Specify a catalog service endpoint, such as
myhost.mycompany.com:9809. - Specify the name of the grid defined in your objectGrid.xml file, for
example,
MyGrid. - Leave Security enabled unchecked, then click OK and then Save.
Configure IBM BPM eXtreme Scale mediation
For a particular web service that is invoked by a client, you can enable eXtreme Scale functionality by putting a BPM mediation flow containing eXtreme Scale primitives between the client and the web service. There are two key eXtreme Scale aspects to the flow.
In the request part of the flow, shown in Figure 2, the eXtreme Scale
Retrieve primitive is used to check whether
data relevant to the current request message is stored in the eXtreme
Scale grid. If it is, it is obtained and passed back to the calling
client. If it is not, the target web service is called to obtain the
relevant data.
Figure 2. Request flow with eXtreme Scale Retrieve
If the target service is called, the response flow is initiated. In this
part of the flow, shown in Figure 3, the eXtreme Scale
Store primitive is used to put the response
message relating to the original request into the eXtreme Scale grid. The
data from the service is then returned to the requesting client.
Figure 3. Request flow with eXtreme Scale store
Import the WSDL for the web service into Integration Designer so that the mediation flow can use it, by doing the following:
- In Integration Designer, create a new library by selecting File => New Library.
- Specify an name for the library and click Finish.
- Expand the new library, then right-click Interfaces and select Import.
- In the Import dialog, expand Business Integration and select WSDL and XSD, click Next.
- Select Remote WSDL or XSD file, and click Next.
- Open a browser and put the URL of the service in the address field and
append it with
?wsdl'; for example:
http://myhost.mycompany.com/webservice?wsdl - Copy the generated URL from the address field.
- In Integration Designer, in the URL field of the dialog, paste the copied URL and click Next.
- The WSDL and XSDs to be downloaded are displayed. Click Finish.
- You can now use the library in a mediation module by doing the
following:
- In Integration Designer, create a new mediation module by selecting File => New => Mediation Module.
- Give the moduled a name and set the target runtime environment IBM BPM Server v8.0), then click Next.
- Select the library you just created and click Finish.
- Set up the connectivity in the mediation module as follows:
- Right-click the mediation flow in the assembly diagram and select Add => Interface.
- In the dialog, select the interface for the target web service and click OK.
- Right-click the mediation flow again and select Generate Export => Web Service Binding.
- In the dialog, select the transport protocol that matches the target web service (for example, SOAP 1.1/HTTP), and click Finish.
- Right-click the mediation flow again and select Add => Reference.
- In the dialog, select the interface for the target web service and click OK.
- Drag an Import from the Components section of the palette onto the canvas and connect the new reference to it.
- Right-click the Import and select Generate Binding => Web Service Binding.
- Select Use an existing web service port and click Browse.
- In the dialog, select the port for the target web service and click OK.
- Select the transport appropriate to the target web service and click Finish.
- Click OK.
- With the Import selected, in the Properties tab select the Binding tab.
- In the Address field, check that the URL is correct for invoking the target web service.
- Create the flow in the mediation module as follows:
- Double-click the mediation flow in the assembly diagram.
- Click Yes to implement it and click OK in the folder location dialog.
- In the flow overview, click the request operation for the web service and select Blank Mediation Flow.
- Drag a Callout from the Service Invocation section of the palette onto the canvas.
- Select the operation from the dialog and click OK.
- On the right side of the canvas, click the green plus (+) sign in the Transient Context section.
- Select the data type that will be returned by the target web service (the response data rather than the request data), and click OK.
- Drag an eXtreme Scale Retrieve primitive from the WebSphere eXtreme Scale section of the palette onto the canvas.
- Connect the flow input to the eXtreme Scale Retrieve primitive input.
- Connect the Not Found output terminal of the eXtreme Scale Retrieve primitive to the Callout node.
- Connect the Out terminal of the eXtreme Scale Retrieve primitive to the Input Response node.
- Select Transform the message using an XSL Transformation primitive.
- The XSLT primitive is used to put cache data from the Transient Context into the response message body. On the Properties tab, select the Details tab, then and click New.
- In the New XML Map dialog, click Next.
- Set the Message Root to
/and click Finish. - In the XSLT mapper, connect the headers of the source to the headers of the target.
- Expand the context => transient section of the source.
- Fully expand the body section of the target.
- Connect the fields from Transient Context to the corresponding fields in the target body.
- Save the map, which should now look similar to Figure 4.
Figure 4. Mapping
- Back in the flow, select the eXtreme Scale Retrieve primitive and on the Properties tab, select the Details tab.
- Leave the eXtreme Scale definition as <Use default eXtreme Scale definition>, which will use the definition you created in Configure an eXtreme Scale ObjectGrid.
- Set the Map Name to the name of the backing map defined in objectGrid.xml, as described in the Create the IBM BPM eXtreme Scale definition (the same as the Retrieve primitive; Map1 in the example).
- Set the XPath of the key to a field in the request message that will be used to uniquely associate input request messages with response data stored in the cache.
- Set the XPath to store the result from the cache to
/context/transient. - Select the Response flow tab and drag an eXtreme Scale Store primitive from the WebSphere eXtreme Scale section of the palette onto the canvas.
- Connect the Callout Response node to the input of the eXtreme Scale Store primitive and the out terminal of the eXtreme Scale Store primitive to the Input Response node.
- On the Properties tab for the eXtreme Scale Store primitive, select the Details tab.
- Leave the eXtreme Scale definition as <Use default eXtreme Scale definition>. This will use the definition you created in Configure an eXtreme Scale ObjectGrid.
- Set the Map Name to the name of the backing map defined in the objectGrid.xml described in Create the IBM BPM eXtreme Scale definition (the same as the Retrieve primitive).
- Set the XPath of the key to a field in the request message that will be used to uniquely associate input request messages with response data stored in the cache (the same as the Retrieve primitive).
- Set the XPath to store the result from the cache to the target web service response message.
- Set the Time to live to a number of seconds after which
the eXtreme Scale cache is cleared and needs to be
repopulated,l such as
60. - Save the flow and the assembly diagram.
- Create an EAR file from the mediation module and deploy it to the application cluster.
At this point, you can test the flow by pointing the client at the endpoint URL for the mediation flow export.
Implement authentication security
Authentication security ensures that only clients that have the correct credentials can access the eXtreme Scale services. With all of the elements sharing the same WebSphere Application Server environment, these credentials can be provided implicitly be configuring WSToken authentication as follows:
- In the
objectGridServer.propertiesfor the catalog server, set the following (in addition to existing parameters):securityEnabled=true transportType=TCP/IP secureTokenManagerType=none authenticationSecret=ObjectGridDefaultSecret
- In the
objectGridServer.propertiesfor each container server node, set the following (in addition to existing parameters):securityEnabled=true transportType=TCP/IP secureTokenManagerType=none authenticationSecret=ObjectGridDefaultSecret
- For the catalog server, create a security.xml file containing the
following:
<securityConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ibm.com/ws/objectgrid/config/security ../objectGridSecurity.xsd" xmlns="http://ibm.com/ws/objectgrid/config/security"> <security securityEnabled="true"> <authenticator className= "com.ibm.websphere.objectgrid.security.plugins.builtins.WSTokenAuthenticator"> </authenticator> </security> </securityConfig>
- In the JVM for the deployment manager (accessed by selecting System
Administration => Deployment Manager => Java and Process
Management => Process definition => Java Virtual
Machine), point to the security.xml file by adding the following
to the generic JVM arguments:
-Dobjectgrid.cluster.security.xml.url= file:///opt/IBM/WebSphere/AppServer/profiles/Dmgr01/properties/security.xml
- Apply security configuration to the eXtreme Scale definition as
follows:
- Navigate to Service integration ? WebSphere eXtreme Scale definitions and select the definition you just created.
- Check Security enabled.
- In the Credential generator dropdown, select WSToken.
- Click OK and Save.
- Restart the deployment manager, the node agents and all servers, and ensure that the application still works.
It may be a requirement that the data sent between IBM BPM and eXtreme Scale should be encrypted, in which case you need to configure transport security. Certificate exchange between the deployment manager, which is running the catalog service, and the application servers is done automatically when each custom node is federated with the deployment manager. This means that the configuration is very simple because there is no need to create new keystores or manually exchange certificates.
Check that the transport type for CSIv2 inbound and outbound is set to SSL-Required (the default) by doing the following:
- Select Security => Global Security => RMI/IIOP Security => CSIv2 inbound communications.
- Ensure that the transport type under the CSIv2 Transport Layer to SSL-Required.
- Repeat this step for CSIv2 outbound communications.
- Edit the
objectGridServer.propertiesfor the catalog server (for example, in BPM_INSTALL_DIR/profiles/Dmgr01/properties). - Change the
transportTypeproperty fromTCP/IPtoSSL-Required. - Add the following properties:
alias=default contextProvider=IBMJSSE2 protocol=SSL keyStoreType=PKCS12 keyStore=BPM_INSTALL_DIR/ profiles/Dmgr01/config/cells/myhostCell01/nodes/myhostNode01/key.p12 keyStorePassword=WebAS trustStoreType=PKCS12 trustStore=BPM_INSTALL_DIR/ profiles/Dmgr01/config/cells/myhostCell01/nodes/myhostNode01/trust.p12 trustStorePassword=WebAS clientAuthentication=false
- Restart the deployment manager, the node agents, and all servers, and ensure that the application still works.
In this article, you learned how to set up a reliable and secure WebSphere eXtreme Scale cache for use with IBM Business Process Manager Advanced to provide a reliable, secure and high performance configuration.
- IBM Business Process Manager V8 Information Center
- IBM WebSphere eXtreme Scale V7.1 Information Center
-
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.






