Beruflich Dokumente
Kultur Dokumente
March 2011
Introduction
With the introduction of WebSphere Enterprise Service Bus v7.0 (WESB), there are
multiple ways to select dynamic endpoints within a mediation flow using SOAP
Action/PortType etc., using information stored in WebSphere Service Registry and
Repository (WSRR). Equally, any endpoints selected can be checked against any Service
Level Agreements (SLA) in WSRR. However, what cannot be done out of the box, as yet,
is endpoint selection based on general Governance Enablement Profile (GEP) objects in
WSRR; this paper shows you how to do this. This paper serves as a step by step account
of how to create a Service Gateway Mediation Flow in WESB which will allow for endpoint
selection based upon an active SLA between a particular consumer and an agreed
endpoint. Moreover, it shows how to define the meta-data objects in WSRR and govern
them so that the whole scenario, from governance master to ESB accessed run-time is
successfully implemented.
This paper makes use of WebSphere Enterprise Service Bus v7.0 (WESB) and
WebSphere Service Registry and Repository v7.0 (WSRR).
The paper is divided into two main sections, covering activities in the two products, WESB
and WSRR. The first part deals with the construction of a WESB mediation flow which will
allow for endpoint selection based on a service consumer->service provider relationship
via a Service Level Agreement (SLA). The second deals with the governance story;
defining the service consumer, the service provider and all of the artifacts associated with
them.
* Whether the Consumer of the endpoint has a valid SLA for the endpoint
* Whether the particular SLA is active
* Whether the endpoint is on-line
* Whether the endpoint has a certain desired classification; whether it is Production or
Development for example.
This is a much more business-centric view of the world, rather than a more IT-centric view.
For example in the GEP there are a number of key objects; considering the following
Figure.
Figure 1. Governance Enablement Profile objects
Looking at the scenario overall, the consumer makes a request via a specific WESB
Mediation which is acting as a Service Gateway for all requests requiring validation via the
WSRR GEP. The Mediation consults the registry to check on the inter-relationships shown,
moreover, some of the objects have to be in the correct states and have the correct
classifications for the endpoint selection to be successful. However, if all of these checks
pass, the Mediation knows the final target for the consumer, and routes the request
accordingly. This paper explores, in a step by step fashion, this scenario in detail.
Figure 2 illustrates the meta-data, in their appropriate life-cycle states, that must be
contained in the Service Registry.
In Figure 3(a) there is a single Custom Mediation Primitive, called Route Message, which
extracts the information from the SOAP Header, having previously been seeded by the
JAX-RPC handler and uses this information to query WSRR to find where to route the
request. Alternatively, when using the HTTP Header, in Figure 3(b) there are two Custom
Mediation Primitives, the first extracts information from the HTTP authentication header
and places it in the SOAP header; this code is explained later in Listing 4. The second
uses this information to query WSRR to find where to route the request.
Figure 3(a). Elements for endpoint selection using SOAP Header
In this particular example there are two endpoints for the same provider of the temperature
converter service, where one endpoint (the internal one) is proxied by gateway mediation
whose endpoint is the exposed endpoint.
Now we will examine each of the three elements in the solution in detail.
Named Query
As stated earlier, the Named Query is going to look for those endpoints which have an
active SLA in play for the particular consumer and that the particular endpoint(s) conform
to some required set of classifications, which in this example could be PRODUCTION and
INTERNAL. Additionally, the endpoint is required to be ONLINE.
The Named Query gathers three pieces of information in order to perform this look-up:
The actual query string needs to be placed inside of the xpath tags. The query depth for
our named query SLAEndpontLookup is set to a depth of 0, which means that the
endpoints would be returned with just properties and classifications; no relationships would
be populated. For this example we are only concerned with the endpointAddress, so a
depth of 0 will result in a much quicker query. The non-zero queryDepth may be needed
for different scenarios.
It is also important to note here that the Named Query stated here assumes that the GEP
supplied with WSRR has not been customised in any way. If the GEP has been
customised, the query will need to be modified accordingly. Isolating the query into a
Named Query gives much greater flexibility when it comes to customising models in
WSRR.
Mediation
The next part of the solution is the WESB Mediation; this is developed using WebSphere
Integration Developer (WID).
This will create a service gateway mediation flow with a single custom mediation primitive
to contain the routing logic. We will, however, have to change this for one of the two
alternative patterns, namely, the HTTP Header variant.
Figure 11. Mediation Flow
Before we can update the java code in the custom mediation primitive, we must do the
following:
Now select the Terminal section, change name of the first out terminal to found. Next add
in a new out terminal called, notFound.
The notFound terminal will be used when there is no matching SLA found; the fault
conditions for the flow should really match your local installation policies for fault handling,
but for this example, we simply wire the notFound terminal to the Input Response, and the
fail terminal to the Input Fault.
Figure 14. Updated Mediation Flow
1. Extracts the three parameters for the Named Query from specific locations in the
SOAP Header. It is important to note that this should not be seen as prescriptive, this
information can be transmitted and extracted in whatever method suits your enterprise; in
this example, the location matches what is set up with the Handler, described in the next
section.
2. Uses these three parameters to call the named query SLAEndpointLookup. These are
loaded into the call in the same order as that expected by the named query we have
already loaded into WSRR. It should also be noted that the name of the query is the same
as it was loaded into WSRR in the previous section.
3. Checks the return from the named query, if there is an object returned, it assumes it is
a Service Endpoint, which has a name which is the target endpoint required.
4. If the target has been found, it is loaded into the correct part of the SMO to activate
the dynamic routing, and the found terminal is fired.
5. If the named query does not return an object, the notFound terminal is fired.
Adding the schema for the SOAP Headers
In order for the service gateway to be able to parse the headers in the request message,
the schema for those headers needs to be available at run-time; we must define the
Business Object. Under the gateway project in the Business Perspective select the Data
Types section. Now right click and select New and then Business Object. A new business
object has to be created with the correct namespace and the correct parameters to
represent the SOAP header.
We must now look at the two alternative ways of extracting the information needed in the
named query which map to the fields in the GEPGatewayHeader.
Alternative 1: Using a JAX-RPC Handler
The final part of the picture is the piece of code which will add in the SOAP Header at the
client/consumer site. In this example, we have implemented this as a JAX-RPC handler,
but as was stated earlier, this can be done in whatever way suits your enterprise
installation with whatever bindings you have implemented.
import javax.xml.namespace.QName;
import javax.xml.rpc.handler.GenericHandler;
import javax.xml.rpc.handler.HandlerInfo;
import javax.xml.rpc.handler.MessageContext;
import javax.xml.rpc.handler.soap.SOAPMessageContext;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPHeader;
SOAPElement headerElement =
sFactory.createElement("GEPGatewayHeader",
"gep",
"http://com.ibm.sample.gepgateway");
SOAPElement contextElement =
sFactory.createElement("contextID",
"gep",
"http://com.ibm.sample.gepgateway");
contextElement.addTextNode(contextID);
headerElement.addChildElement(contextElement);
SOAPElement consumerElement =
sFactory.createElement("consumerID",
"gep",
"http://com.ibm.sample.gepgateway");
consumerElement.addTextNode(consumerID);
headerElement.addChildElement(consumerElement);
SOAPElement endpointClassificationElement =
sFactory.createElement("endpointClassification",
"gep",
"http://com.ibm.sample.gepgateway");
endpointClassificationElement.addTextNode(endpointClassification);
headerElement.addChildElement(endpointClassificationElement);
header.addChildElement(headerElement);
}
} catch (SOAPException soapEx) {
throw new RuntimeException(soapEx.toString());
}
return true;
}
}
1. Initialises the handler with the values for the three parameters to be used in the
named query called from the mediation. In a JAX-RPC handler these are supplied as part
of the deployment file, so can be tied specifically to the particular cient/consumer. The xml
for this example is shown below.
2. Creates an element in the SOAP Header which represents the business object we
defined previously in the mediation flow. The namespace and name should match the
previously defined business object, which in our case are
http://com.ibm.sample.gepgateway and GEPGatewayHeader.
3. Populates this element with three text elements containing the three named
parameters, which in our case are:
▪ consumerID
▪ contextID
▪ endpointClassification
We now have the three major elements in play, the Handler at the client/consumer site
which populates a SOAP Header so when the request message arrives at the WESB
service gateway, the parameters can be extracted by the Routing Mediation Primitive, and
used to call a Named Query on WSRR to extract the relevant Service Endpoint; allowing
WESB to dynamically route to that endpoint.
Looking at a WESB trace with this configuration in play we can see the SOAP Header
which will be interpreted by the custom mediation code.
The RouteMessage mediation primitive has already covered in Listing 2. What we now
need to cover is the code for PopulateGEPHeader .
Consumer ID
The Consumer ID is obtained from the clients HTTP Authentication Header.
/**
* This string appears as "Basic 64BitEncryptedUserIdAndPassword"
*/
consumerID = consumerID.substring(6);
/**
* Decode the Base64 encoded ID.
* Set the GEPGatewayHeader with the consumer ID
*/
String decodedText=new String(Base64.decodeBase64(consumerID.getBytes()));
int myInt = decodedText.indexOf(":");
decodedText = decodedText.substring(0, myInt);
System.out.println("###" + decodedText + "###");
smo.setString("/headers/SOAPHeader[name='GEPGatewayHeader']/value/consumerID", decodedText);
} else {
smo.setString("/headers/SOAPHeader[name='GEPGatewayHeader']/value/consumerID",
"Consumer ID not provided");
}
The code performs the following function:
Context ID
The Context ID is obtained from the message payload; specifically, the target namespace
of the service being invoked. This process requires parsing of the message payload as
illustrated in Listing 4.
String ns = "xmlns:"+namespacePrefix+"=";
int nsLength = ns.length();
smo.setString("/headers/SOAPHeader[name='GEPGatewayHeader']/value/contextID", message);
} else {
smo.setString("/headers/SOAPHeader[name='GEPGatewayHeader']/value/contextID",
"Context ID not provided");
}
out.fire(smo);
http://www.huntington.com/esb/interface/CustomerInqService/v1_3
The first part of this paper showed how to create a service gateway in WESB which
extracts an endpoint to dynamically route to, based on a query of GEP objects defined in
WSRR. The solution consists of three major elements:
It showed a simple temperature conversion WebService, accessed via the WESB service
gateway, showing how the SOAP header was populated and then interpreted by a WESB
Mediation so that WESB could route to the correct endpoint for that service, based on pre-
selected GEP criteria.
Part 2: Configuring the environments and Governing
the Service meta-data
Figure 2 illustrated the meta-data required in the Service Registry for this scenario. This
part of the paper looks at how these objects get created and how they are transitioned into
the correct states in a governed fashion.
This section describes how to use the WebSphere administrative console hosting WESB
to import the WSRR public certificate. This step is required when WESB is connecting to a
secure WSRR configuration, and WSRR / WESB are NOT running in the same
WebSphere ND cell. This is the most typical configuration found in customer
environments.
(1) As an ‘administrator’ ID, login to the WebSphere administrative console in the WESB
environment.
(2) Navigate to Security à SSL Certificates and key management à Key stores and
certificates
(4) Under the ‘Additional Properties’ on the right side of the pane, section, select
‘Signer certificates’. Here, you will see a list of the client certificates that have been
imported into your trust store.
The next step is to import the WSRR signer certificate into the WESB trust store.
(5) Click on the button labeled ‘Retrieve from port’.
• Provide the correct Host and SSL port of the WSRR server.
• Provide an ‘Alias’ name for the certificate. The example here uses ‘wsrr_70’.
NOTE: As shown below, if the connection information you entered was correct, the signer
information will be displayed.
Figure 23. Retrieve signer information
(6) Click the button labeled ‘OK’ to add the certificate to the trust store.
The ‘wsrr_70’ signer certificate is now saved in the WESB server’s trust store.
Once the signer certificate from the WSRR server is saved in the WESB trust store, we are
able to configure the WSRR connection information.
The benefits of using the ServiceRegistryProxyFactory are that it obtains the WSRR
connection information saved in the WebSphere configuration. Therefore hard coded
connections are not required in the Java code. The configuration definition in WebSphere
also provides for time based caching capabilities. As such the data returned from the
Custom Mediation Primitive is cached in a WebSphere managed cache.
The following code snippet from the Custom Mediation Primitive will return the ‘DEFAULT’
WSRR definition defined in the WebSphere Administrative console of the WESB server.
srProxy = ServiceRegistryProxyFactory.getInstance().getDefaultServiceRegistryProxy();
It is possible to have multiple WSRR connections defined in WebSphere, and the custom
Java mediation can use any of them, as illustrated in the code snippet below.
srProxy = ServiceRegistryProxyFactory.getInstance().getServiceRegistryProxy(registryName);
These are shown in the code snippet tagged as Listing 2 and since the registryName
User property is blank in our example, the Custom Mediation Primitive will use the default
registry. In order that this to be successful, we must define this default registry definition to
the WebSphere environment.
This step describes how to configure a default WSRR registry connection in the
WebSphere environment hosting WESB.
(1) As an administrator user, login into the WebSphere Administrative console (WESB
server)
(2) Navigate to Service Integration à WSRR Definitions
(3) Click the button labeled ‘New’ to create a new WSRR definition.
NOTE: The timeout is specified in seconds based on the time of the last server restart.
Figure 26. WSRR Definition details
◦ Modify the Registry URL by specifying the correct hostname and port number of
the WSRR server.
TIP: Only change the host and port number in the registry URL.
◦ SSL Configuration: Select NodeDefaultSSLSettings (This is the same SSL
configuration that we added the WSRR signer certificate).
(7) Click the button labeled ‘Apply’ to save the current configuration.
We must first setup a JAAS J2C authentication alias before we can select set the
Authentication Alias property.
(8) Under the ‘Related Items’ section, select ’JAAS – J2C Authentication data’.
Here, we will configure a user ID and password used to connect to the WSRR registry.
Your secured WSRR configuration should already be configured with specified users
which are mapped to the Administrator or Users J2EE role. By default, these are
configured to ALL AUTHENTICATED USERS. In other words, any valid user ID in the
security server configured for WSRR is authenticated to login and accesses the repository
data.
If your WSRR server is configured with LDAP, then specify a valid user ID in the LDAP
server. Otherwise, you may have configured a federated repository and specified local
user IDs in a file based repository (For testing purposes).
Figure 28. WSRR Definition authentication data
NOTE: The Alias field can be any unique value. However the User ID and Password must
be valid in your security server.
(10) Click the ‘OK’ button to save the authentication alias.
Assuming the configuration is correct, the test connection should pass the test.
Figure 33. WSRR Definition test result
If errors occur, consult the SystemOut.log on the WebSphere server hosting WESB.
TIP:
(1) Go to a Web Browser on the WSRR server, and paste the connection URL you
specified in the WSRR definition into a web browser to verify a web service port is active.
You should get a security warning about the certificate, Click ‘Continue to this Web Site’
Figure 34. Certificate Error
(2) Enter your valid security credentials to the WSRR server.
(3) Finally, the response from the Web Service Engine stating that you hit a valid web
service port.
All of the activity in this section will be performed from the WSRR Web UI. If you have
defined security roles in WSRR and mapped to specific security server groups, you will be
required to login to the WSRR web UI as a member of the group specified for the activity.
However, if you have the WSRR roles mapped to ‘ALL AUTHENTICATED USERS’, then
you will not be required to login as different users, but may need to select the appropriate
perspective in the Web UI to perform the task.
Note: The purpose of the Web UI perspectives is to define a collection of views and tasks
that the specific role should be allowed to perform when logged into WSRR.
Governing the Service Provider in WSRR
The WESB dynamic service gateway will route the service request to the service
provider’s endpoint based on the results of the WSRR named query. As stated earlier, the
query expects to find specific objects the registry, moreover, these objects must be in the
correct governance state in order for the query to succeed.
The rest of this paper describes how to load the appropriate meta-data, and navigate the
governance process to achieve the desired state. In the end, the TemperatureConverter
service will be invoked, but only when we provide the adequate governed data in the
registry.
GovernanceEnablementProfile_v7.0.zip
Governance
enablement profile
Note: When the governance enablement profile is loaded and WSRR security is enabled,
you must ensure that the user ID that is assigned to the Administrator RunAs role, for the
ServiceRegistry application in WebSphere® Application Server, is also assigned to the
WSRRAdmin role.
Load the Governance Enablement Profile
Note: The status of the newly loaded profile will be set to "Archived".
Note: The status of the newly activated profile changes to "Active", and the status of
the previously active profile changes to "Archived".
Figure 38. Configuration perspective with GEP loaded and activated
Govern an existing service
In this section, we will use the governance enablement profile to govern an existing
service, and control its visibility and use across the organization.
This process includes the following activities:
• Register an existing service and endpoint in WSRR.
• Identify and define the business capability that the service provides.
• Provide scoping and planning information to support this version of the service.
• Provide a complete specification of this service version, including the service level
definition that can be consumed by other services.
• Complete the service life cycle, to ensure that the service endpoints are visible and
enabled in the various environments.
The first step in registering a new service is to load the WSDL that defines the service,
and associate it with a service version that is used to govern that service.
To load a WSDL document by using the web UI, perform the following actions:
1. Switch to the Development perspective
2. Click Actions > Load Documents in the menu bar.
3. Identify the file to load by performing one of the two following options:
o Select Local file system and browse to find the WSDL file to load.
o Select Remote file location and enter the URI from where the WSDL file
can be downloaded.
4. Select WSDL for the Document type.
5. Optional: Enter a document description in the supplied field.
6. Enter 1.0 for the version.
7. Press the ‘OK’ button.
This will take to you the summary page of documents to be loaded.
8. On the ‘Documents to be loaded’ page, click on the ‘Finish’ button to load the
WSDL.
Note: If the WSDL has dependencies, the dependent file will also need to be loaded.
Our Temperature Converter WSDL contains no dependencies
Figure 39. Load Temperature Converter WSDL
The new WSDL document will be loaded into the registry. At this time, the WSDL is parsed
into many logical objects, including a SOAP service endpoint, which will be referenced
later in the governance process.
Figure 40. WSDL document successfully loaded
Identifying the business capability provided by a service
An important part of scoping a service is to identify how it adds value to the business.
WSRR uses business capabilities to define the business view of a service.
(1) Create a business service.
◦ Switch to the Business perspective, if necessary, by selecting Business from the
Perspective list.
◦ Click Actions > Create > Business Service.
◦ Enter ‘Temperature Converter’ in the Name field
◦ Enter a Description for the business service.
◦ Click Finish.
NOTE: The details page for the new business service is displayed, and the governance
state, visible under Governance State, is Business Capability Identified.
◦ Click the New Capability Version button located on the Business Service Details
Page. This action triggered a modifier to execute which created a new Service
Version, an generated a relationship between the business service and the new
service version.
◦ The Web UI remains at the business service details page. Under the
Relationships section, the Versions relationship contains the new version that
was automatically created.
Figure 46: Business service with relationship to the new service version
◦ Click the Temperature Converter link located under the Relationships section.
◦ Click the Edit Properties link on the service version details page.
◦ Set the Name, version, and description fields as shown in the figure below.
◦ Click the OK button to save the changes. The button is located at the bottom of the
page.
After defining and approving a business service, and relating it to a service version, we
must identify other planning and governance information for the service version.
(1) Define and agree the Temperature Converter service version scope.
This process ensures that the specific functional requirements and ownership for this
version of the service are documented. With proper WSRR security roles defined and
mapped, this section will require switching of UI roles and perspectives in order to perform
the tasks.
Note: The following steps assume that WSRR security roles are mapped to specific
groups. Therefore you must be logged into WSRR in an appropriate role to perform the
tasks. If security roles are mapped to ALL AUTHENTICATED, switching users is not
required, but you may still want to switch to the appropriate perspective identified.
(2) Define and approve the Temperature Converter service version planning
information.
This process ensures that any dependencies are agreed, and availability and costing
information is provided.
◦ Switch to the Development perspective and navigate back to the service version
detail page
◦ Click Edit Properties.
◦ Change the Version Availability Date field to today's date, and the Version
Termination Date field to one year from now.
◦ Click OK to save your changes.
◦ Click Propose Plan, and note that the new governance state is Plan Review.
◦ Switch to the SOA Governance perspective and navigate back to the service
version detail page
◦ Click Approve Plan, and note that the new governance state is Planned.
Figure 49: Service version in Planned state
At this stage of the life cycle, the detailed consumption specification of the service starts.
Providing a specification and service level definition for the service
(1) Create the SLD for the Temperature Converter service version.
This encapsulates the endpoints, protocols and interfaces that consumers can use to
access the service.
◦ Switch to the Development perspective
◦ Navigate to View > Technical Governance > Capability Versions > Service
Versions.
◦ Click Temperature Converter (1.0) service to display the service version details.
◦ Click the New SLD button. A new SLD is created called SLD – Temperature
Converter (1.0)
◦ The SLD is displayed as a link under the Provides relationship.
(4) Define the bound web service port, and hence the binding protocol used to
access the SLD.
We are still updating the SLD, so remain in the development perspective.
◦ Click Edit Relationships on the SLD.
◦ Click Add Service Port alongside the Bound Web Service Port relationship.
◦ Enter Temp* in the Name field, and click the Search button.
◦ Select the radio button alongside TemperatureConverter, and click Apply
Selected Targets.
Figure 53: SLD with related endpoint and bound web service port
(6) Complete the SLD specification.
Remain in the Development perspective
◦ Click Propose Specification, and note the new governance state is SLD Review.
◦ Switch to the SOA Governance perspective, and navigate back to the SLD.
◦ Click Approve Specification, and note the new governance state is SLD
Subscribable.
Note: The SLD is subscribable, meaning that service level agreements can now be
requested against it. Service Level Agreements are created by service consumers to show
their intent on consuming the service.
Figure 55: Service Version with the Provided Web Service referenced
(8) Complete the Temperature Converter (1.0) service version specification
◦ Click Propose Specification, and note the new governance state is
Specification Review.
◦ Switch to the SOA Governance perspective, and navigate back to the
Temperature Converter (1.0) service version
◦ Click Approve Specification, and note the new governance state is Specified.
NOTE: At this point in the life cycle, we are ready to register the endpoints that are used in
any given environment, and to enable the endpoints as the service completes its life cycle.
Activating the Service Endpoint
After we have described the service in sufficient detail for it to be consumed and
programmed against, and have deployed an implementation of the service, we must
declare the endpoint in the registry so that it is promoted to, and therefore visible in, the
appropriate environments.
(1) Identify the endpoint for use in the staging environment
• Switch to the Operations perspective
• Navigate to View > Technical Governance > Capability Versions > Service Versions
• Click SLD – Temperature Converter (1.0) under the Provides relationship to display
the SLD details.
• Click http://localhost:9080/TemperatureConverterRouterWeb/services/TemperatureConverter
under the Available Endpoints relationship to display the endpoint details.
NOTE: At this stage, any other classifications that are needed by the endpoint can be
added. In the example named query we also added an extra environmental classification
indicating whether the endpoint is INTERNAL or EXTERNAL. This is entirely down to your
own enterprise and how endpoints are classified.
(3) Activate the endpoint
◦ Remain in the Operations perspective
◦ Click Approve for Use, and note that the endpoint governance state changes to
Online.
Note: The Operations team now has the opportunity to check that the information in the
governance registry is correct for deployment to the staging registry.
◦ Click Approve Staging Deployment, and note the new governance state is
Staged.
The primary difference in between an application and service as defined in WSRR, is that
an application does not have SLDs or endpoints. They are also not required to have
specifications. However, in the Governance Enablement profile, an application and service
share the same life cycle.
In this service consumer scenario, we will assume that we are developing and application
that will consume the temperature Converter service. As such, we will model an application
as the consumer. As mentioned above, the process of governing a service consumer is
very similar to governing a service provider. To avoid redundancy in this article, we will not
elaborate on the governance steps for the service consumers that are already described in
governing the service provider. We will note the steps that need to be performed, without
going into great detail.
Overview:
In this section, we will use the governance enablement profile to govern an application
(service consumer).
This process includes the following activities:
• Identify and define the business capability that the Business Application provides.
• Provide scoping and planning information to support this version of the
application.
• Define a DOU and SLA between the application (consumer) and the service
provider.
• Complete the application version life cycle, to ensure that the SLA is activated to
access the service provider endpoints in the various environments.
Identify and define the business capability that the
Business Application provides
(1) Create a Weather business application
◦ Switch to the Development perspective
◦ Navigate to Actions > Create > Business Application
◦ Specify a name and description for the weather application
◦ Click Finish to save the changes
Figure 65: Weather Business application related to a new version (1.0) of the
application
Provide scoping and planning information to support this
version of the application
(1) Add a unique Consumer ID for the Application Version
The Application Version contains a property labeled Consumer Identifier. This property
should uniquely identify this specific application version in the registry. In this example, we
will use the combination of the Application version name and version number.
Figure 66: Application Version with its unique Consumer Identifier set
(2) Define and agree the Weather application version scope
◦ Propose Scope
◦ Approve Scope
(3) Define and approve the Weather application version planning information
◦ Propose Plan
◦ Approve Plan
Creating the service level agreement (SLA) is the responsibility of the development
organization of the service consumer.
The service version consumer (Weather Application) selects from the subscribable service
level definitions that the provider has made available.
The consumer then defines the specific quality of service and resource requirements for
the service subscription to use.
At this time, the provider can negotiate, and thus approve, reject, or refine the request.
Figure 71: SLA with the reference to the Temperature Converter SLD (Agreed
Endpoint)
(5) Add a unique Context ID for the SLA
The SLA contains a property labeled Context ID. This property should uniquely identify the
specific service version that the application intends to consume. In this example, we will
set the value of the context ID to the target Namespace of the service version that is
consumed by this SLA.
1.
(6) Request SLA Approval
◦ Remain in the Development perspective and ensure you are at the SLA details
page as shown in the figure above
◦ Click the Request SLA button from the SLA details page, and note the new
governance state is SLA Requested.
◦ Switch to the SOA Governance perspective
◦ Navigate to View > SOA Governance > Service Level Agreements and select the
SLA from the list
◦ Click the Approve SLA Request button, and note the new governance state is
SLA Inactive.
The scenario demonstrates how WESB can make use of the Governance Enablement
Profile objects so that routing decisions are made on the governance states of the meta-
data objects that reflect the business.