8  Managing SOA Composite Applications

This chapter describes how to manage SOA composite applications, including initiating a test instance of an application; managing faults, policies, and instance states; and testing SOA composite applications.

This chapter includes the following topics:

Note:

The procedures in this guide describe how to access Oracle Enterprise Manager Fusion Middleware Control Console pages from the SOA Infrastructure menu, soa-infra icon in the navigator, and SOA Composite menu. You can also access many pages from the Farm home page. For more information, see Section 2.2.5, "Navigating to the SOA Infrastructure or SOA Composite Application Home Page."

8.1 Initiating a SOA Composite Application Test Instance

This section describes how to initiate a test instance of a deployed SOA composite application.

To initiate a SOA composite application test instance:

  1. Access this page through one of the following options:

    From the SOA Infrastructure Menu... From the SOA Folder in the Navigator... From the Composite Menu...
    1. Select Home.
    2. Select the Deployed Composites tab.

    3. In the Composite section, select a specific SOA composite application.

    4. At the top of the page, click Test.

    1. Under soa-infra, select a specific SOA composite application.
    2. At the top of the page, click Test.

    1. Select Test Service > client.

    Note:

    The Test button is disabled in the following situations:
    • The SOA composite application revision is stopped or retired.

    • There are no Web services available for the application. Only composites having services with Web service bindings can be tested from this page.

  2. If the composite includes multiple services, the Test button has a drop-down list to select the service to test.

    The Test Web Service page for initiating an instance appears.

    This page provides many options for initiating an instance. At a minimum, you must specify the XML payload data to use in the Input Arguments section.

    The WSDL file and endpoint URL are populated automatically based on the service you selected to test. The endpoint URL is derived from the WSDL and can be overridden to invoke that service at a different location. If the service selected has multiple ports, a drop-down list is displayed. Otherwise, the port of the current service is displayed.

    Description of sca_test_payload.gif follows
    Description of the illustration sca_test_payload.gif

  3. Accept the default values for these fields or provide values appropriate to your test environment.

  4. If you change the WSDL file, click Parse WSDL to reload the WSDL file.

    If the WSDL URL does not contain the revision number, it is processed by the default composite application. For example, if there are two revisions of a composite application named HelloWorld, then the following endpoints are exposed by them:

    • http://host:port/soa-infra/services/default/HelloWorld!1.0/client

    • http://host:port/soa-infra/services/default/HelloWorld!2.0/client

    However, if the WSDL specified for Web service invocation does not contain the revision details (for example, http://host:port/soa-infra/services/default/HelloWorld/client), it is processed by the composite revision that is set as default.

  5. If you want to edit the endpoint URL, click Edit Endpoint URL and make appropriate changes.

    The lower part of the Test Web Service page consists of the Request tab. This tab enables you to specify security, quality of service, HTTP transport, stress testing options, and XML input arguments:

    Description of sca_test_payload2.gif follows
    Description of the illustration sca_test_payload2.gif

    The Security section includes the following fields for passing security properties with messages.

    Field Description
    WSS Username Token Inserts a WS-Security SOAP header. The Username field is required, and the Password field is optional.
    Http Basic Auth Inserts the username and password credentials in the HTTP transport header. Both the Username and Password fields are required.
    Custom Policy Uses a custom policy to authenticate the user (specifies the URI for the custom policy). The Username and Password fields are optional.
    None Select to not specify security credentials. This is the default selection.

  6. Accept the default values for these fields or provide values appropriate to your test environment.

    The Quality of Service section includes the following fields. Oracle Fusion Middleware uses a policy-based model to manage Web services. A policy applies behavior requirements to the delivery of messages. For additional details about using the Test Web Service page, see Oracle Fusion Middleware Security and Administrator's Guide for Web Services.

    Field Description
    WS-RM Select one of the following options for testing WS-Reliable Messaging (RM) protocol policies. Reliable messaging policies support this protocol, which guarantees the end-to-end delivery of messages.
    • WSDL Default: Executes the default behavior of the WSDL. For example, if the WSDL contains a reference to a WS-RM policy, then the policy is enforced. If the WSDL does not contain a reference to a WS-RM policy, then reliable messaging is not tested.

    • None: No policy for WS-RM is tested even if the WSDL contains a reference to a policy.

    • Custom: Enforces a custom policy. Specify the URI of the custom policy in the Policy URI field. If a WS-RM policy is referenced in the WSDL, it is ignored, and the policy specified in the Policy URI field is used instead.

    MTOM Select one of the following options for testing Message Transmission Optimization Mechanism (MTOM) policies. MTOM policies ensure that attachments are in MTOM format, a format for efficiently sending binary data to and from Web services.
    • WSDL Default: Executes the default behavior of the WSDL. For example, if the WSDL contains a reference to an MTOM policy, then the policy is enforced. If the WSDL does not contain a reference to an MTOM policy, then MTOM is not tested.

    • None: No policy for MTOM is tested, even if the WSDL contains a reference to a policy.

    • Custom: Enforces a custom policy. Specify the URI of the custom policy in the Policy URI field. If an MTOM policy is referenced in the WSDL, it is ignored, and the policy specified in the Policy URI field is used instead.

    WS-Addressing Select one of the following options for testing WS addressing policies. WS addressing policies verify that SOAP messages include WS-Addressing headers in conformance with the WS-Addressing specification.
    • WSDL Default: Executes the default behavior of the WSDL. For example, if the WSDL contains a reference to a WS-Addressing policy, then the policy is enforced. If the WSDL does not contain a reference to a WS-Addressing policy, then WS-Addressing is not tested.

    • None: No policy for WS-Addressing is tested even if the WSDL contains a reference to a policy.

    • Custom: Enforces a custom policy. Specify the URI of the custom policy in the Policy URI field. If a WS-Addressing policy is referenced in the WSDL, it is ignored, and the policy specified in the Policy URI field is used instead.


  7. Accept the default values for these fields or provide values appropriate to your test environment.

    The HTTP Transport Options section includes the following fields.

    Field Description
    Enable SOAP Action Specifies whether the WSDL soap:operation has a soapAction attribute. This flag is enabled if a soapAction attribute exists. If you do not want to send a request with the SOAP action HTTP header, then clear the check box.
    SOAP Action Displays the soapAction attribute of the WSDL soap:operation, if one exists. You may specify a different SOAP action in this text box.

  8. Accept the default values for these fields or provide values appropriate to your test environment.

    The Additional Test Options section includes the following fields. This section provides a simple stress test that simultaneously invokes multiple instances.

    Note:

    This is not a real stress test tool. Therefore, do not enter huge values for both concurrent threads and the number of times to invoke the operation. Doing so can result in errors.
    Field Description
    Enable Stress Test Click Enable to create a simple stress test. With this enabled, no conversation ID is displayed.
    Concurrent Threads Enter the number of concurrent threads on which the invocations should be sent. The default is 5 threads.
    Loops per Thread Enter the number of times to invoke the operation. The default is 10 times.
    Delay in Milliseconds Specify the delay of milliseconds to wait between operation invocations. The default is 1000 milliseconds (1 second).

  9. Accept the default values for these fields or provide values appropriate to your test environment.

    The Input Arguments section includes the following options for entering XML payload data.

    Field Description
    Tree View Displays a graphical interface of text fields in which to enter information. This option automatically generates the required headers and XML structure.
    XML View Displays the XML file format for inserting values. You can paste the raw XML payload of your message into this field.

    Note:

    If you are using Oracle Enterprise Manager Grid Control Console, you can save the payload you enter. This feature is not available with Oracle Enterprise Manager Fusion Middleware Control Console.
  10. Click Test Web Service.

    The test results appear in the Response tab upon completion.

    Description of soaapp_testresult.gif follows
    Description of the illustration soaapp_testresult.gif

    Note:

    The Response tab does not display payload data if you are performing a stress test or are testing an asynchronous service.
  11. Click Launch Message Flow Trace to access the flow trace of the instance.

  12. To return to the composite home page, click the name of the composite that appears at the top of the page or select Home from the composite target menu.

  13. Return to the Dashboard page of the SOA composite application.

    The Recent Instances table lists recent SOA composite application instances. Each created instance has its own unique ID.

For more information, see the following sections:

8.2 Managing the State of Deployed SOA Composite Applications

You can manage the life cycle state of deployed SOA composite applications from either of two pages:

  • From the Deployed Composites page of the SOA Infrastructure, which lists all SOA composite applications deployed to the SOA Infrastructure

  • From the application home page of a specific SOA composite application (all tabs)

The management tasks that you can perform are based on the page you are on. Table 8-1 provides details.

Table 8-1 Application State Actions

Action Perform in the Deployed Composites Page of the SOA Infrastructure? Perform on the Application Home Page (All Tabs)?

Shut Down and Start Up

Yes

Yes

Retire and Activate

Yes

Yes

Set as Default

Yes

  • No: If only one version of the composite application is set as the default.

  • Yes: If there are multiple versions of the same composite application, this option is visible for all other versions of the same composite expect the one that is the default.

Deploy

Yes

Yes (through the Composite menu by selecting SOA Deployment > Deploy Another Composite)

Undeploy

Yes

Yes (through the Composite menu by selecting SOA Deployment > Undeploy)

Redeploy

Yes

Yes (through the Composite menu by selecting SOA Deployment > Redeploy)

Test

No

Yes

Composite Audit Level

No

Yes

Payload Validation

No

Yes

Enable/Disable BPEL Sensors

No

Yes

Show WSDL and Endpoint URI (icon)

No

Yes

Show XML Definition (icon)

No

Yes


See the following section based on the action you want to perform:

For more information, see Section 1.2.2, "Understanding SOA Composite Applications."

8.2.1 Managing the State of All Applications at the SOA Infrastructure Level

You can manage the state of all SOA composite applications from the Deployed Composites page at the SOA Infrastructure level.

To manage the state of all applications at the SOA Infrastructure level:

  1. Access this page through one of the following options:

    From the SOA Infrastructure Menu... From the SOA Folder in the Navigator... From the SOA Composite Menu...
    1. Select Home.
    1. Click soa-infra.
    1. Select SOA Infrastructure.

  2. Click the Deployed Composites tab.

    The Deployed Composites page displays the following details:

    • A utility for searching for a specific SOA composite application by specifying a full or partial composite name and clicking Search.

    • A list of all SOA composite applications deployed in the SOA Infrastructure, including their current mode (active or retired), number of instances, number of faulted instances, and last modification date (deployment time, redeployment time, or any composite configuration change). The green dot to the left of the name indicates that this is the default revision of the application.

    Description of sca_deployedcomps.gif follows
    Description of the illustration sca_deployedcomps.gif

    Note:

    To always see the latest details about deployed SOA composite applications, click the Refresh icon in the upper right corner or navigate away from this page and return to it.
  3. Click Deploy to deploy a new application. For all other options listed above the Composite section, first select the composite application by clicking the column to the left of the name, then select a specific option to perform.

    Description of sca_selectinstance.gif follows
    Description of the illustration sca_selectinstance.gif

    The following table describes the available options.

    Action Description
    Shut Down Shuts down a running SOA composite application revision. Any request (initiating or a callback) to the composite is rejected if the composite is shut down.

    Note: The behavior differs based on which binding component is used. For example, if it is a Web service request, it is rejected back to the caller. A JCA adapter binding component may do something else in this case (for example, put the request in a rejected table).

    This option displays when the composite application has been started.

    Start Up Restarts a composite application revision that was shut down. This action enables new requests to be processed (and not be rejected). No recovery of messages occurs.

    This option displays when the composite application has been stopped.

    Retire Retires the selected composite revision. If the process life cycle is retired, you cannot create a new instance. Existing instances are allowed to complete normally.

    An initiating request to the composite application is rejected back to the client. The behavior of different binding components during rejection is as described above for the shut down option.

    A callback to an initiated composite application instance is delivered properly.

    This option displays when the composite application is active.

    Activate Activates the retired composite application revision. Note the following behavior with this option:
    • All composite applications are automatically active when deployed.

    • Other revisions of a newly deployed composite application remain active (that is, they are not automatically retired). If you want, you must explicitly retire them.

    This option displays when the application is retired.

    Set As Default Sets the selected composite application revision to be the default. Default revisions are indicated by a green dot in the Composite table. If a new request comes in for a specific composite application revision, that composite application revision is invoked. If a new request comes in without specifying a revision, the default revision is invoked. The default revision does not change when a composite application is retired. The default revision is changed automatically when a default composite application revision is undeployed.

    The default composite revision also changes automatically when you redeploy a composite. The newly redeployed revision automatically becomes the default revision, unless at the time of redeployment you specify to keep the previous default revision unchanged.

    Note that inbound adapters are only activated on the default revision.

    Deploy Deploys a revision. Deployment activates the composite application in the SOA Infrastructure. Use this selection when you want to deploy:
    • A new SOA composite application for the first time

    • A new revision (for example, 2.0) of a SOA composite application that has a different revision that is currently deployed (for example, 1.0). This option enables both revisions 1.0 and 2.0 to be deployed at the same time.

    If you specify a revision that exists, you receive an error. You must change this revision outside of the Deploy SOA Composite wizard.

    Note: Deploying multiple SOA composite applications at the same time is supported.

    For more information, see Section 5.1, "Deploying Applications."

    Undeploy Undeploys the selected composite application revision. The consequences of this action are as follows:
    • You can no longer configure and monitor this revision of the composite application.

    • You can no longer process instances of this revision of the composite application.

    • You cannot view previously completed processes.

    • The state of currently running instances is changed to stale and no new messages sent to this composite are processed.

    • If you undeploy the default revision of the composite application (for example, 2.0), the next available revision of the composite application becomes the default (for example, 1.0).

    Note: Undeploying multiple SOA composite applications at the same time is not supported.

    For more information, see Section 5.3, "Undeploying Applications."

    Redeploy Redeploys an existing revision of a SOA composite application. The consequences of this action are as follows:
    • A new version of a revision of a currently deployed SOA composite application is redeployed (for example, old version 1.0 is redeployed as new version 1.0).

    • The older, currently-deployed version of this revision is removed (overwritten).

    • If the older, currently-deployed version of this revision has running instances, the state of those instances is changed to stale.

    For more information, see Section 5.2, "Redeploying Applications."


    For more information, see Section 1.3.3.3, "Understanding the Life Cycle State of SOA Composite Applications."

8.2.2 Managing the State of an Application from the SOA Composite Application Home Page

You can manage the state of an individual SOA composite application from the application's home page.

To manage the state of an application from the SOA composite application home page:

  1. Access this page through one of the following options:

    From the SOA Infrastructure Menu... From the SOA Folder in the Navigator...
    1. Select Home.
    2. Select the Deployed Composites tab.

    3. Select a specific SOA composite application.

    1. Under soa-infra, select a specific SOA composite application.

    The Dashboard of the selected SOA composite application is displayed (for this example, AutoLoanComposite).

    Description of sca_helloworld.gif follows
    Description of the illustration sca_helloworld.gif

    Note:

    The Total field of the Recent Instances section sometimes does not display the correct number of total instances despite instances having completed successfully. In these cases, click the Refresh icon in the upper right corner to view the actual number of total instances.
  2. From the list of options at the top of the page, select a specific action to perform. These options also display at the top of the Instances, Faults and Rejected Messages, Unit Tests, and Policies pages of the SOA composite application.

Action Description
Shut Down See the table under Step 3 for a description of this option.
Start Up See the table under Step 3 for a description of this option.
Retire See the table under Step 3 for a description of this option.
Activate See the table under Step 3 for a description of this option.
Test Enables you to initiate a test instance from the Test Web Service page.

Note: This button is disabled when the SOA composite application is stopped or retired. This is because you cannot create an instance for a stopped or retired application. This button is also disabled when there are no Web services available for the application. Only composites having services with Web service bindings can be tested from this page.

For more information, see Section 8.1, "Initiating a SOA Composite Application Test Instance."

Settings: Composite Audit Level Sets the level of audit tracking to perform at the SOA composite application level. This setting can override the audit level defined at the SOA Infrastructure level. By default, the value is Inherit, which does not override the SOA Infrastructure level setting.

If you select to set the audit tracking level, the following options are available:

  • Inherit: Logging matches the SOA Infrastructure audit level that you set on the SOA Infrastructure Common Properties page. This is the default setting.

  • Production: Minimal information for SOA composite application instances is collected. For example, the BPEL process and Oracle Mediator service engines do not capture the payload. Therefore, the payload details are not available in the flow audit trails. The BPEL service engine collects payload details for all activities except assign activities. This level is optimal for most normal operations and testing.

  • Development: Complete information for SOA composite application instances is collected. This option allows both composite instance tracking and payload tracking. This setting may impact performance because the payload is stored at each step in the message flow. This setting is useful for debugging purposes.

  • Off: No logging is performed. Composite instance tracking and payload tracking information are not collected.

Setting audit level tracking at the SOA composite application level overrides the same tracking set at the SOA Infrastructure level. By default, the settings are the same at the SOA composite application and SOA Infrastructure levels. SOA composite application settings are automatically changed when the global SOA Infrastructure settings are changed. By choosing any other setting at the SOA composite application level, you are overriding the inherited settings.

One form of overriding is when you explicitly select the same local composite value that happens to be the current global value. If the SOA Infrastructure setting is then changed, this specific composite does not inherit the new value. For example, assume the SOA Infrastructure setting is Off. Therefore, all composites have their audit tracking set to Off. Then, you explicitly set composite XYZ to Off. Then, go to the SOA Infrastructure and change the setting to Production. The tracking levels for all composites are now Production; except for XYZ, which is still set to Off.

Note the following impact of instance tracking changes on message flows that span several SOA composite applications. For example, a composite invoking another composite through a reference binding component or an event published in one composite and subscribed to in another composite.

  • If an intermediate composite has disabled instance tracking, then a single message flow across multiple composite instances appears as separate, unconnected flows. For example, assume a message flows through composites C1, C2, and C3. C1 and C3 have enabled instance tracking, while C2 has disabled it. Two separate flows for C1 and C3 display in Oracle Enterprise Manager.

  • Sources or targets of events or messages may not display. For example, assume you have two composites: C1 and C2. If C1 has disabled instance tracking, the flow trace does not display the origin of message flow and makes it appear as if C2 was directly invoked.

Settings: Payload Validation Validates the XML schema-based payload at the inbound and outbound points of the composite revision. If you enable payload validation and there is an invalid payload (that does not follow the schema), a fault is generated for that message.

The exception to this is the response message of a synchronous service. That message is not validated, even with payload validation enabled. Note that the inbound message is still validated; only the outbound message is not.

Settings: Enable/Disable BPEL Monitors and Sensors Select an option to invoke a confirmation dialog that displays the current status of the sensors. Note that when BPEL sensors are disabled at the service engine level, you cannot enable or disable BPEL sensors at the SOA composite application level.
  • Disable: Select to disable BPEL sensors for all BPEL components in this SOA composite application.

  • Enable: Select to enable BPEL sensors for all BPEL components in this SOA composite application.

The Enable/Disable BPEL Sensors selection only displays for composites that have a BPEL service component, regardless of whether that component includes sensors.

For more information, see Section 8.10, "Exporting a Running SOA Composite Application."

Show WSDL and endpoint URI (icon) Click to display the endpoint addresses and WSDLs of all external services for this SOA composite application.
Show Composite XML Definition (... icon) Click to show the XML definition of the SOA composite application.

For more information, see the following sections:

8.2.3 Starting and Stopping a Managed Oracle WebLogic Server

If you start and stop a managed Oracle WebLogic Server on which the SOA Infrastructure is deployed in the middle of BPEL processing in a SOA composite application, note the following issues:

  • For synchronous BPEL processes

    The whole scenario is synchronous and the instances that are in a running state (after server restart) are pending in the BPEL wait activity. Therefore, the flow thread ends with the server (while sleeping in the wait activity). When the server is restarted, the same instance is not restarted because the flow is synchronous. Therefore, these instances always remain in a running state because no processing can happen on these after server restart.

  • For asynchronous BPEL process

    If server shutdown occurred in the middle of a BPEL invoke activity, the messages received by BPEL are not handled. BPEL does not automatically recover these messages during restart; these must be recovered manually using facade API calls.

8.3 Monitoring and Deleting SOA Composite Application Instances from the Application Home Page

Section 8.2, "Managing the State of Deployed SOA Composite Applications" describes how to manage the life cycle state of SOA composite applications. You can also monitor and delete specific SOA composite application instances from the Instances page of the application home page.

To monitor and delete SOA composite application instances from the application home page:

  1. Access this page through one of the following options:

    From the SOA Infrastructure Menu... From the SOA Folder in the Navigator...
    1. Select Home.
    2. Select the Deployed Composites tab.

    3. Select a specific SOA composite application.

    1. Under soa-infra, select a specific SOA composite application.

  2. Click the Instances tab.

    The Instances page displays the following details:

    • A utility for searching for a specific instance by specifying a criteria and clicking Search.

    • SOA composite application instance ID, name, conversation ID, most recent known state of each instance since the last data refresh of the page (for example, completed successfully, running, unknown, and so on), instance start time, and a log file describing any faults. A unique instance ID is created whenever a new instance of a SOA composite application is initiated either automatically by an external consumer of the application or manually by an administrator from the Test Web Service page.

      If a ? icon is displayed, the Capture Composite Instance State check box was not enabled on the SOA Infrastructure Common Properties dialog. Therefore, the instance state was not evaluated. Determining the composite instance state requires evaluating the states of the underlying component, Therefore, this can be disabled to improve performance.

    Description of soaapp_instance.gif follows
    Description of the illustration soaapp_instance.gif

    Note:

    It is possible to generate orphaned service component instances. These instances are generated without any associated composite application instances. The orphaned component instances are generated under the following circumstances:
    • The SOA Infrastructure audit level is set to Off or the composite audit level is set to Off. Even in such cases, the BPEL process service engine can generate instance data for the service components that are included in the SOA composite application.

    • The SOA Infrastructure audit level is set to Off. However, the BPEL process or Oracle Mediator service engine audit level is set to a value other than the Off.

    • All the audit levels are set to Off, but some faults are generated in one of the service engines. In these cases, the component instance gets generated.

    To delete orphaned instances or large numbers of instances, use the PL/SQL purge script described in Section 8.9, "Deleting Large Numbers of Instances." Selecting the Delete All Instance options in the Delete with Options dialog also deletes orphaned component instances. However, this method is not recommended for deleting large numbers of instances (for example, thousands), as the operation times out.

    If composite sensors are included in your SOA composite application, the Instances tab has the following differences:

    • The Add Fields button appears next to Search and Reset in the search utility. This button enables you to add sensor values to your search criteria.

    • A Composite Sensors column appears to the Instances table. Click the sensor icon in that column to display the details of sensor values available in a given instance of the composite.

  3. From the Add Fields list, select composite sensors to add to the search criteria. In this example, four have been selected (CustomerDetails, NameSensor, Datesensor, and Yearsensor).

  4. Input specific values by which each sensor searches. Only the composite instances in which the sensor values match your specified criteria are returned.

    Description of soaapp_instance2.gif follows
    Description of the illustration soaapp_instance2.gif

  5. Click Reset to remove all composite sensor fields from the search criteria or click the Remove icon to the right of the field to remove an individual sensor.

  6. Select a specific instance to delete by clicking a row in the Instances table. To select multiple instances, press Ctrl-Click or Shift-Click for the rows you want to select.

  7. Select a specific action to perform.

    Action Description
    Delete Selected Deletes the selected instance.

    After deleting an instance, instance details are no longer available for review.

    Delete with Options Prompts you to first specify a criteria for deleting the selected instance directly from the database:
    • Common Delete Options: Select a preset range of instances to delete from a list (for example, older than 24 hours).

    • Delete All Instances Of This Composite: Select to delete all instances of the composite. This option deletes the rejected messages associated and all component, service, and reference instances associated with the composite, including those not associated with any composite instance ID.

      Note: If this composite has thousands of instances to delete, do not use this option. Instead, use the purge script described in Section 8.9, "Deleting Large Numbers of Instances."

    • Delete All Instances That Match These Criteria: Specify a criteria for deleting instances, including the instance ID, conversation ID, start and stop times, and instance state.

    Any selections you may have made in the Instances page (such as specifying and executing a search criteria) are ignored for this operation.

    Abort Terminates the selected instance. However, instance details are still available for review.

  8. In the Instances table, perform the following additional tasks:

    1. In the Instance ID column, click a specific instance ID to show the message flow through the various service components and binding components. If an instance ID is listed as unavailable, you can click the Unavailable link for details.

    2. In the State column, if an instance state is marked as Unknown, click it to display more details.

    3. If the Composite Sensors column is available, click a sensor icon to display details about composite sensors included in the instance, such as name, location, and value.

    4. In the Logs column, click a specific log to access the Log Messages page with filtered messages specific to that instance.

    Note:

    Multiple revisions of a SOA composite application that includes inbound JCA adapters are displayed as running. However, only the most recent revision (the default version) is considered active. All previous revisions are not considered active. This is because for inbound JCA adapters, there can only be one active revision of a SOA composite application at any time. The JCA adapter endpoints in all previous revisions are de-activated.

For more information, see the following sections:

8.3.1 Mismatch Between the Number of SOA Composite Application Instances and Service Component Instances

The number of SOA composite application instances may not always match the number of service component instances displaying in Oracle Enterprise Manager Fusion Middleware Control Console.

A SOA composite application instance is first created when the composite is invoked. When the service components within the composite receive a subsequent invocation, a corresponding service component instance is created that refers to the composite instance ID previously created.

There can be scenarios under which the composite instance is created, but the underlining service component instance is not created. For example:

  • The composite instance is created, but the invocation has not yet reached the service component due to a system failure.

  • The composite instance is created, but the invocation fails payload validation and is rejected. In this case, invocation does not reach the underlining service components.

You can also have orphaned service component instances for which no SOA composite application instance has been created.

8.3.2 Setting the Composite Instance Name at Design Time

You can set the instance name of a SOA composite application during design time in Oracle Mediator and Oracle BPEL Process Manager. The instance name appears as a Name column on the Instances page of a SOA composite application. When you specify a search criteria on the Instances page of a SOA composite application or the SOA Infrastructure, you can specify this name in the Name field.

8.3.2.1 Setting the Composite Instance Name in Oracle Mediator

  1. Set the composite instance name through one of the following options:

8.3.2.2 Setting the Composite Instance Name in a BPEL Process

  1. Use the Java BPEL exec extension bpelx:exec. This extension includes the built-in method setCompositeInstanceTitle(String title)for setting the instance name.

    For more information, see Oracle Fusion Middleware Developer's Guide for Oracle SOA Suite.

8.4 Monitoring and Deleting SOA Composite Application Instances at the SOA Infrastructure Level

Section 8.2, "Managing the State of Deployed SOA Composite Applications" described how to manage the life cycle state of all instances of a specific SOA composite application. You can also monitor and delete any number of instances across all deployed SOA composite applications from the Instances page of the SOA Infrastructure home page. This page lists all SOA composite application instances deployed to the SOA Infrastructure.

To monitor and delete SOA composite application instances at the SOA infrastructure level:

  1. Access this page through one of the following options:

    From the SOA Infrastructure Menu... From the SOA Folder in the Navigator... From the SOA Composite Menu...
    1. Select Home.
    1. Click soa-infra.
    1. Select SOA infrastructure.

  2. Click the Instances tab.

    The Instances page displays the following details:

    • A utility for searching for a specific instance by specifying a criteria and clicking Search.

    • All SOA composite application instances in the SOA Infrastructure, including instance and conversation IDs, composite name and revision, SOA composite application instance state, and instance start time.

    Description of sca_instances.gif follows
    Description of the illustration sca_instances.gif

    You can also terminate and delete instances from this page.

  3. Select a specific instance by clicking a row in the Instances table. To select multiple instances, press Ctrl-Click or Shift-Click for the rows you want to select.

  4. Select a specific action to perform.

    Action Description
    Delete Selected Deletes the selected instance.
    Delete with Options Prompts you to first specify a criteria for deleting the selected instance directly from the database.
    • Common Delete Options: Select a preset range of instances to delete from a list (for example, older than 24 hours).

    • Delete All Instances That Match These Criteria: Specify a criteria for deleting instances, including the instance ID, conversation ID, start and stop times, and instance state

    Any instance state selections you made at the top of the Instances page are ignored for this operation.

    Notes:

    • If this composite has thousands of instances to delete, do not use this option. Instead, use the purge script described in Section 8.9, "Deleting Large Numbers of Instances."

    • If you delete an instance with faults, those faults no longer display in the Faults and Rejected Messages page.

    Abort Terminates the selected instance. However, instance details are still available for review.

    Note: If you delete an instance with faults, those faults no longer display in the Faults and Rejected Messages page. In addition, if a terminated instance (shown as aborted) had a fault, it is not added to the fault count.


  5. In the Instance ID column, click a specific instance ID to show the message flow through the various service components and binding components. If the instance ID is unavailable, the message flow cannot be accessed. However, you can still click the link for details.

  6. In the Composite column, click a specific SOA composite application to access its home page.

  7. In the Logs column, click a specific log to access the Log Messages page with filtered messages specific to that instance.

8.5 Recovering from SOA Composite Application Faults at the SOA Infrastructure Level

You can monitor and perform individual and bulk fault recoveries for BPEL process and Oracle Mediator service components across any number of your SOA composite applications. For BPEL process faults to be identified as recoverable, there must be a fault policy defined that is bound to the fault (through the fault-bindings.xml file) and which triggers the action ora-human-intervention. However, without defining any fault policies, the fault takes its normal course as either a recoverable or nonrecoverable fault. Examples of performing both individual and bulk recovery are provided in this section. Human task service component or human workflow service engine faults are recovered from the Oracle BPM Worklist.

To recover from SOA composite application faults at the SOA Infrastructure level:

  1. Access this page through one of the following options:

    From the SOA Infrastructure Menu... From the SOA Folder in the Navigator... From the SOA Composite Menu...
    1. Select Home.
    1. Click soa-infra.
    1. Select SOA infrastructure.

  2. Click the Faults and Rejected Messages tab.

    The Faults and Rejected Messages page displays the following details for all SOA composite application faults:

    • A utility for searching for a specific fault by specifying a criteria and clicking Search. Click the Help icon for details.

    • Faults and rejected messages, including the error message, whether you can recover from the fault, the time of the fault, if the fault message is classified as a rejected message (if so, a check mark is displayed), the SOA composite application in which the fault occurred, the fault location, and the instance ID.

    Description of sca_faultandmanage.gif follows
    Description of the illustration sca_faultandmanage.gif

    Note:

    You cannot search for human workflow error messages by entering details in the Error Message Contains field because these faults are not persisted in the dehydration store.

    Faults identified as recoverable can be recovered.

  3. Select faults for recovery using one of the following options. Note that fault recovery selection at the SOA Infrastructure level matches the SOA composite application level and BPEL process and Oracle Mediator service component levels.

    For... Then...
    Single fault recovery There are three options from which to choose for single-fault recovery:
    1. Click the row of the fault that has been identified as recoverable. With the row highlighted, select a specific action from the Recovery Action list, as described in Step 4.

    2. In the Recovery column, click the Recover link to access the Faults page of the instance audit trail to perform fault recovery.

    3. In the Error Message column, click the message of a fault that has been identified as recoverable. This displays complete fault details, including the fault ID, fault time, fault location, fault type, and error message text. A Recover Now option displays for recoverable faults. Click Recover Now to access the Faults page of the instance audit trail to perform fault recovery.

    Bulk fault recovery There are two options from which to choose for bulk-fault recovery:
    1. Use Shift+Click or Control+Click to select specific faults in the rows.

      or

    2. From the Select menu, choose Select All Recoverable. Then use Shift+Click or Control+Click to deselect the faults to not include in the recovery operation.

      Then:

    3. Select an action from the Recovery Action list, as described in Step 4.

      Note: Only the actions applicable to all selected faults are available.

    Recovery of all faults
    1. From the Select menu, choose Select All Recoverable.
    2. Select an action from the Recovery Action list, as described in Step 4.

      Note: Only the actions applicable to all selected faults are available.


  4. Select an action from the Recovery Action list.

    Action Description Action is Available for...
    Retry Retries the instance directly. An example of a scenario in which to use this recovery action is when the fault occurred because the service provider was not reachable due to a network error. The network error is now resolved. BPEL process and Oracle Mediator
    Abort Terminates the entire instance. BPEL process and Oracle Mediator
    Replay Replays the entire scope again in which the fault occurred. BPEL process
    Rethrow Rethrows the current fault. BPEL fault handlers (catch branches) are used to handle the fault. By default, all exceptions are caught by the fault management framework unless an explicit rethrow fault policy is provided. BPEL process
    Continue Ignores the fault and continues processing (marks the faulting activity as a success). BPEL process

    Note:

    In most cases, fault policy actions are automatically executed. The only exception is if you defined a fault policy that uses the action ora-human-intervention. This action creates a recoverable fault that can be recovered from Oracle Enterprise Manager Fusion Middleware Control Console.
  5. If you want to delete rejected messages, click Delete Rejected Messages.

    This displays the Delete: Rejected Messages dialog for specifying a criteria for deleting rejected messages of all the composites directly from the database.

    Description of bp_delrejmess.gif follows
    Description of the illustration bp_delrejmess.gif

  6. Specify a criteria and click Delete.

  7. If you want to perform a bulk recovery of messages, click Recover with Options.

    This displays the Recover with Options dialog for specifying a criteria for recovering BPEL and mediator messages of all composites directly from the database. Human workflow messages can be recovered manually from Oracle BPM Worklist. Business event and business rule messages cannot be recovered.

    Description of soaapp_recovwithopts.gif follows
    Description of the illustration soaapp_recovwithopts.gif

  8. Specify a criteria. Retry and Abort are the only recovery actions permitted.

    Note:

    For bulk fault recovery at the SOA Infrastructure level, a check of the state of composites cannot be performed. If the state of a composite is set to off, a recovery of its faults cannot be performed. However, no error or warning message is displayed. Upon submission of the bulk fault recovery request, the server checks if the originating composite's state is set to off. That fact is then noted in the log, and the fault is skipped.

    You are also not notified when a fault has been skipped during recovery for any other reason (for example, an unsupported service engine, an unrecoverable fault, and so on).

  9. Click Recover. Depending upon the number of messages, recovery can take some time.

  10. Perform the following additional tasks from within the faults table:

    1. From the View list, select Columns > Fault ID to display the fault IDs for each error message. The fault ID is automatically generated and uniquely identifies a fault. The fault ID also displays when you click an error message.

    2. In the Composite column, click a specific SOA composite application to access its home page.

    3. In the Fault Location column, click a specific location to access the faults page for the location of the fault. The location can be a service, service component, or reference.

    4. In the Composite Instance ID column, click a specific ID to access the flow trace of the instance.

    5. In the Logs column, click a specific log to access the Log Messages page with filtered messages specific to that instance.

  11. See the following sections for examples of single and bulk fault recovery with BPEL processes and Oracle Mediator.

For more information about concepts and instructions on designing a fault policy, see the following documentation:

8.5.1 Examples of Fault Recovery for BPEL Processes

This section provides examples of how to define a fault policy that enables human intervention on a BPEL process fault and perform single and bulk fault recovery on a BPEL process service component.

In this example, you define a fault policy specifying that a fault be manually recovered through human intervention. If an invalid social security number is submitted from a loan broker BPEL process to a credit rating service, the credit rating service returns a negative credit fault. This human intervention action is defined with the ora-human-intervention action in the fault-policies.xml file. Without fault policies, BPEL instances do not generate recoverable faults (instead they are nonrecoverable); the ora-human-intervention action makes the fault recoverable.

<faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
<faultPolicy version="2.0.1"
           id="CRM_ServiceFaults"
           xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://schemas.oracle.com/bpel/faultpolicy"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <Conditions>
               <faultName xmlns:credit="http://services.otn.com" 
               name="credit:NegativeCredit">
               <!-- we get this fault when SSN starts with 0-->
                  <condition>
                     <test>$fault.payload="Bankruptcy Report"</test>
                     <action ref="ora-human-intervention"/>
                  </condition>
               </faultName>
            </Conditions>
</faultPolicy>
</faultPolicies>

The fault-bindings.xml file associates the fault policies defined in the fault-policies.xml with the CRM_ServiceFaults composite.

<faultPolicyBindings version="2.0.1"
 xmlns="http://schemas.oracle.com/bpel/faultpolicy"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <composite faultPolicy="CRM_ServiceFaults"/>
</faultPolicyBindings>

Since human intervention is defined as an action, you perform BPEL process fault recovery in Oracle Enterprise Manager Fusion Middleware Control Console.

For more information about creating and designing fault-policies.xml and fault-bindings.xml files, see Oracle Fusion Middleware Developer's Guide for Oracle SOA Suite for specific details.

8.5.1.1 Example: Single Fault Recovery for BPEL Processes

This example assumes the following:

To perform single fault recovery for BPEL processes:

  1. From the SOA Infrastructure menu, select Home.

  2. Click the Faults and Rejected Messages tab.

  3. In the faults table, locate the fault that has been identified as recoverable. You can use the search utility to locate the specific fault.

  4. In the Recovery column, click Recover. If you first want to see details about the fault, click the error message. Then, click Recover Now.

    The Faults page for that BPEL process instance is displayed.

  5. In the Recovery column, click Recoverable.

    The page refreshes to display the fault recovery section at the bottom of the page.

    Description of sca_faults2.gif follows
    Description of the illustration sca_faults2.gif

  6. From the Recovery Action list, select Retry.

  7. Select None from the Chain Action Upon Successful Retry list. This list enables you to select Java callout recovery actions. For more information, see Oracle Fusion Middleware Developer's Guide for Oracle SOA Suite.

  8. Select a variable from the Variable list. The content of this variable displays in the Value field. For this example, the variable crInput is selected. This variable is used in an invoke activity and contained an incorrect social security number value.

  9. Enter the correct value in the Value field. For this example, the social security number is edited to begin with 1:

    <ssn xmlns="http://service.otn.com">123456789</ssn>
    
  10. Click Set Value, and click Yes when prompted to continue.

  11. Click Recover to recover from the fault, then click Yes when prompted to continue.

    The page refreshes to indicate that no faults occurred.

8.5.1.2 Example: Bulk Fault Recovery for BPEL Processes

For the social security number example, selecting Retry is not an option for performing a bulk recovery, since the value for the social security number is incorrect and requires correction. An example of performing a bulk recovery with the Retry option is if the social security number is correct, but the system providing the credit rating service was temporarily unavailable and caused a composite reference fault. This prevents the messages from being delivered. Once the credit rating service is available again, selecting Retry re-attempts the invocation to the credit rating service through the composite reference.

To perform bulk fault recovery for BPEL processes:

  1. Perform Steps 1 through 2 of Section 8.5.1.1, "Example: Single Fault Recovery for BPEL Processes."

  2. In the search utility, enter a criteria based on known fault parameters (for example, the time range, composite name, component type (BPEL process), and so on).

  3. If the search returns too many results, limit it by selecting the Show only recoverable faults check box.

  4. From the Select list, choose Select All Recoverable.

  5. From the Recovery Action list, select Abort.

    All selected faults are manually terminated.

8.5.2 Examples of Fault Recovery for Oracle Mediator

This section provides an example of how to perform single and bulk fault recovery on an Oracle Mediator service component.

In this example, an inbound Siebel adapter service binding component submits a payload message to Oracle Mediator for transformation. The processed payload message is then delivered to an outbound file adapter reference binding component. However, the outbound directory into which to write the payload message is not configured with write permissions. This causes a fault to occur. The fault policy defined during design time specifies that the fault be manually recovered through human intervention. Note that three retries are attempted, as defined with the retryCount attribute. The condition and action are defined as follows in the fault-policies.xml file.

Recoverable Oracle Mediator faults do not require a fault policy (though it is one way to make faults recoverable, as described through an ora-human-intervention action). Any parallel routing rule that receives a remote fault from the outbound endpoint also creates a recoverable fault (in this specific example, the fault policy is not required if the Oracle Mediator uses a parallel routing rule to invoke the outbound file adapter).

<faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
<faultPolicy version="2.0.1"
           id="ConnectionFaults"
           xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://schemas.oracle.com/bpel/faultpolicy"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
              <Conditions>
                <faultName xmlns:medns="http://schemas.oracle.com/mediator/faults"
                name="medns:mediatorFault">
                   <condition>
                      <test>contains($fault.mediatorErrorCode, "TYPE_FATAL_
                         MESH")</test>
                      <action ref="ora-retry"/>
                   </condition>
                </faultName>
              </Conditions>
. . .
. . .      <Action id="ora-retry">
        <retry>
          <retryCount>3</retryCount>
          <retryInterval>5</retryInterval>
          <retryFailureAction ref="ora-human-intervention"/>
          <retrySuccessAction ref="ora-terminate"/>
        </retry>
      </Action>
   </Actions>
</faultPolicy>
</faultPolicies>

Note that processing is set to retry 3 times before terminating.

The fault policies are associated with the ConnectionFaults composite in the fault-bindings.xml file:

<faultPolicyBindings version="2.0.1" xmlns="http://schemas.oracle.com/bpel/fault
policy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <composite faultPolicy="ConnectionFaults"/>
</faultPolicyBindings>

8.5.2.1 Example: Single Fault Recovery for Oracle Mediator

For this example, the sap output directory is made read-only. An inbound file adapter retrieves the sender.xml file from the siebel directory and the message is routed through Oracle Mediator to an outbound file adapter reference for placing a file in the sap directory.

To perform single fault recovery for Oracle Mediator:

  1. Change the directory permissions at the operating system command prompt.

    chmod 000 sap
    cp sender.xml siebel/
    
  2. From the SOA Infrastructure menu, select Home.

  3. Click the Faults and Rejected Messages tab.

    Note that three faults appear, based on three retries being attempted. In this case, you see three retries only because the fault policy on the Oracle Mediator interaction with the outbound file adapter defines three retries. Without the fault policy, there is only one fault (no automated retries).

  4. Click the specific instance ID in the Composite Instance ID column.

    The Flow Trace appears. The faults table at the top of the page displays the fault messages. If you want to see where the faulted Oracle Mediator instance is located in the overall message flow, select the fault in the faults table. This highlights the associated instance in the trace table. You can then click the instance to access its audit trail to see more details about the faulted flow.

    Note:

    Steps 4 through 10 represent one way to recover this single fault. The fault can also be recovered directly from the Oracle Mediator faults page through the Recovery Action list.
  5. Locate the Oracle Mediator component instance fault you want to recover in the Faults table and click Recover in the Recovery column.

  6. Select Sender from the Payload Part list.

    The payload is automatically displayed in the Payload field. If necessary, payload modifications can be performed in this field. For this example, payload modification is not necessary.

  7. Change the sap directory to be writable at the operating system command prompt.

    chmod 777 sap
    
  8. Return to the Faults tab and click the Refresh icon in the upper right corner of the page.

  9. Click Retry.

  10. Click Yes when prompted to resubmit the selected fault for recovery.

    The page refreshes to indicate that no faults occurred.

  11. Click the Audit Trail tab.

    The final message indicates that manual recovery was successful and the message payload was written to the sap directory.

    Description of bp_flt29.gif follows
    Description of the illustration bp_flt29.gif

8.5.2.2 Example: Bulk Fault Recovery for Oracle Mediator

Assume the sap directory to which to write the sender.xml payload message is again configured with read-only permissions at the operating system command prompt. Three copies of the sender.xml file are placed in the siebel directory of the inbound Siebel adapter service binding component. This creates three instances.

chmod 000 sap
cp sender.xml siebel/
cp sender.xml siebel/
cp sender.xml siebel/

To perform bulk fault recovery for Oracle Mediator:

  1. Change the sap directory to be writable.

  2. From the SOA Infrastructure menu, select Home.

  3. Click the Faults and Rejected Messages tab.

  4. In the search utility, enter a criteria based on known fault parameters (for example, the time range, composite name, and so on).

  5. If the search returns too many results, limit it by selecting the Show only recoverable faults check box.

  6. Change the sap directory to be writable at the operating system command prompt.

    chmod 777 sap
    
  7. Select all the faults to be recovered.

  8. Select Retry from the Recovery Action list.

  9. Select Yes when prompted to perform fault recovery.

  10. Click the Audit Trail tab.

    The final message indicates that manual recovery was successful and the message payload was successfully written to the sap directory.

8.6 Recovering from SOA Composite Application Faults in the Application Home Page

You can monitor and perform individual and bulk fault recoveries in your SOA composite application. For BPEL process faults to be identified as recoverable, there must be a fault policy defined that is bound to the fault (through the fault-bindings.xml file) and which triggers the action ora-human-intervention. However, without defining any fault policies, the fault takes its normal course as either a recoverable or nonrecoverable fault. Human workflow faults can also be recovered, but not directly from Oracle Enterprise Manager Fusion Middleware Control Console. Instead, the audit trail provides a link to the Oracle BPM Worklist, from which the fault can be addressed.

To recover from SOA composite application faults in the application home page:

  1. Access this page through one of the following options:

    From the SOA Infrastructure Menu... From the SOA Folder in the Navigator...
    1. Select Home.
    2. Select Deployed Composites.

    3. In the Composite section, select a specific SOA composite application.

    1. Under soa-infra, select a specific SOA composite application.

  2. Click the Faults and Rejected Messages tab.

    The Faults and Rejected Messages page displays the following details for the selected SOA composite application:

    • A utility for searching for a specific fault by specifying a criteria and clicking Search. Click the Help icon for details.

    • Faults and rejected messages in SOA composite application instances, including the error message, whether you can recover from the fault, the time of the fault, if the fault message is classified as a rejected message (if so, a check mark is displayed), the fault location, the composite instance ID, and links to log files that describe the fault.

    Description of sca_soaapp_search.gif follows
    Description of the illustration sca_soaapp_search.gif

    Note:

    You cannot search for human workflow error messages by entering details in the Error Message Contains field because these faults are not persisted in the dehydration store.

    Faults identified as recoverable can be recovered.

  3. Select faults for recovery. As with fault recovery at the SOA Infrastructure level and BPEL process and Oracle Mediator service component levels, you can perform single fault recovery, bulk fault recovery, and recovery of all faults. See Step 3 of Section 8.5, "Recovering from SOA Composite Application Faults at the SOA Infrastructure Level" for instructions on selecting faults to perform these types of recovery.

  4. Select an action from the Recovery Action list.

    Action Description Action is Available for...
    Retry Retries the instance directly. An example of a scenario in which to use this recovery action is when the fault occurred because the service provider was not reachable due to a network error. The network error is now resolved. BPEL process and Oracle Mediator
    Abort Terminates the entire instance. BPEL process and Oracle Mediator
    Replay Replays the entire scope again in which the fault occurred. BPEL process
    Rethrow Rethrows the current fault. BPEL fault handlers (catch branches) are used to handle the fault. By default, all exceptions are caught by the fault management framework unless an explicit rethrow fault policy is provided. BPEL process
    Continue Ignores the fault and continues processing (marks the faulting activity as a success). BPEL process

    Note:

    In most cases, fault policy actions are automatically executed. The only exception is if you defined a fault policy that uses the action ora-human-intervention. This action creates a recoverable fault that can be recovered from Oracle Enterprise Manager Fusion Middleware Control Console.
  5. If you want to delete rejected messages, click Delete Rejected Messages.

    This displays the Delete: Rejected Messages dialog for specifying a criteria for deleting rejected messages of the current composite directly from the database.

    Description of bp_delrejmess.gif follows
    Description of the illustration bp_delrejmess.gif

  6. If you want to perform a bulk recovery of messages, click Recover with Options.

    This displays the Recover with Options dialog for specifying a criteria for recovering BPEL and mediator messages of the current composite directly from the database. Human workflow messages can be recovered manually from Oracle BPM Worklist. Business event and business rule messages cannot be recovered.

    Description of soaapp_recovwithopts.gif follows
    Description of the illustration soaapp_recovwithopts.gif

  7. Specify a criteria. Retry and Abort are the only recovery actions permitted.

    Note:

    For bulk fault recovery at the SOA composite application level, a check of the state of the composite is performed. If the state of the composite is set to off, a message is displayed warning you that a recovery cannot be performed.

    You are not notified when a fault has been skipped during recovery for any reason (for example, an unsupported service engine, an unrecoverable fault, and so on).

  8. Click Recover. Depending upon the number of messages, recovery can take some time.

  9. Perform the following additional monitoring tasks from within the faults table:

    1. From the View list, select Columns > Fault ID to display the fault IDs for each error message. The fault ID is automatically generated and uniquely identifies a fault. The fault ID also displays when you click an error message.

    2. In the Fault Location column, click a specific location to access the faults page for the location of the fault. The location can be a service, component, or reference.

    3. In the Component Instance ID column, click a specific service component ID to access task details about the instance (for example, the current state of a task). Note that rejected messages do not have a component instance ID.

    4. In the Logs column, click a specific log to access the Log Messages page with filtered messages specific to that instance.

For more information, see the following sections:

8.7 Automating the Testing of SOA Composite Applications

You can create, deploy, and run test cases that automate the testing of SOA composite applications. Test cases enable you to simulate the interaction between a SOA composite application and its Web service partners before deployment in a production environment. This helps to ensure that a process interacts with Web service partners as expected by the time it is ready for deployment to a production environment. You create test cases in Oracle JDeveloper and include them in a SOA composite application that is then deployed and administered from Oracle Enterprise Manager Fusion Middleware Control Console.

To test SOA composite applications:

Note:

Before testing SOA composite applications from Oracle Enterprise Manager Fusion Middleware Control Console, see Oracle Fusion Middleware Developer's Guide for Oracle SOA Suite for instructions on creating test cases.
  1. Access this page through one of the following options:

    From the SOA Infrastructure Menu... From the SOA Folder in the Navigator... From the SOA Composite Menu...
    1. Select Home.
    2. Select Deployed Composites.

    3. In the Composite section, select a specific SOA composite application.

    4. Click the Unit Tests tab.

    1. Under soa-infra, select a specific SOA composite application.
    2. Click the Unit Tests tab.

    1. Select Unit Test.

    The test cases that display were designed in Oracle JDeveloper and included in a deployed SOA composite application.

  2. Select the entire test suite or individual tests of a suite to run, and click Execute.

    Description of sca_unittest.gif follows
    Description of the illustration sca_unittest.gif

    You are prompted to create a test.

  3. Enter the following values, and click OK.

    Field Description
    Test Run Name Enter a name for the test instance. When testing is complete, report details are captured under this name.
    Timeout Enter a value in seconds in which to complete this test. If the test does not complete within this time limit, then testing is terminated.
    Number of Concurrent Test Instances Enter the number of test instances to create.

    The Test Runs page automatically displays for tracking the running tests.

    The Test Runs page enables you to track running test cases and view test results. Test suites consist of a logical collection of one or more test cases. Each test case contains a set of commands to perform as the test instance is executed. The execution of a test suite is known as a test run.

    Description of sca_unittest2.gif follows
    Description of the illustration sca_unittest2.gif

  4. In the Test Run Name column, click a specific test run to display details in the Results of Test Run section. If you want to create more test runs, you can switch back to the Test Cases page at any time.

    The Results of Test Run sections displays details about the executed test run, such as a test summary and the success rate. Click the Help icon for additional details.

  5. View assertion details at the bottom of the page. Assertions enable you to verify variable data or process flow.

    Description of sca_unittest3.gif follows
    Description of the illustration sca_unittest3.gif

  6. Click a composite instance number to view specific test details.

    The composite instances created by executing unit test runs display with a yellow square next to the instance ID in the Instances page of a SOA composite application and in the Recent Instances tables of the SOA Infrastructure and SOA composite application. This yellow box distinguishes these instances from test instances created on the Test Web Service page or automatically created by external consumers of the application.

For more information, see the following documentation:

8.8 Managing SOA Composite Application Policies

You can attach or detach security policies to and from currently deployed SOA composite applications. Policies apply security to the delivery of messages.

Note:

Before attaching policies, see Oracle Fusion Middleware Security and Administrator's Guide for Web Services for definitions of available policies and details about which ones to use in your environment.

To manage SOA composite application policies:

  1. Access this page through one of the following options:

    From the SOA Infrastructure Menu... From the SOA Folder in the Navigator... From the SOA Composite Menu...
    1. Select Home.
    2. Select Deployed Composites.

    3. In the Composite section, select a specific SOA composite application.

    4. Click the Policies tab.

    1. Under soa-infra, select a specific SOA composite application.
    2. Click the Policies tab.

    1. Select Policies.

    The Policies page enables you to attach and detach policies to and from BPEL process service components. The policies table displays the attached policy name, the component to which the policy is attached, the policy reference status (enabled or disabled) that you can toggle, the category (Management, Reliable Messaging, MTOM Attachment, Security, or WS Addressing), the violations, and the authentication, authorization, confidentiality, and integrity failures since the SOA Infrastructure was last restarted.

    Description of sca_policy.gif follows
    Description of the illustration sca_policy.gif

  2. Click Attach/Detach To.

    If multiple services or components are available, you are prompted to select the service or component for which to perform the attachment or detachment.

  3. Select the component to which to attach or detach a policy.

    Description of soaapp_policy1.gif follows
    Description of the illustration soaapp_policy1.gif

    This invokes a dialog for attaching or detaching policies.

    Currently attached policies appear in the Attached Policies section. Additional policies available for attachment appear in the Available Policies section.

    Description of soaapp_policy2.gif follows
    Description of the illustration soaapp_policy2.gif

  4. Select policies to attach that are appropriate to your environment.

  5. Click Attach.

    The attached policy appears in the Attached Policies section.

    Description of soaapp_policy3.gif follows
    Description of the illustration soaapp_policy3.gif

  6. Attach additional policies as needed.

  7. When you are finished attaching policies, click Validate.

  8. If an error message appears, make the necessary corrections until you no longer have any validation errors.

  9. Click OK.

    The attached policy displays in the policies table.

    Description of soaapp_policy4.gif follows
    Description of the illustration soaapp_policy4.gif

For more information about policies, see the following documentation:

8.8.1 WS-RM Sessions

Multiple requests from Oracle SOA Suite in a single WS-RM session are not currently supported. Each request is in an individual WS-RM session.

8.8.2 Policy Attachments and Local Optimization in Composite-to-Composite Invocations

OWSM supports a SOA local optimization feature for composite-to-composite invocations in which the reference of one composite specifies a Web service binding to a second composite. Local optimization enables you to bypass the HTTP stack and SOAP/normalized message conversions during run time. Local optimization is not used if the composites are in different containers. If a policy is attached to the Web service binding, the policy may not be invoked if local optimization is used.

By default, an OWSM security policy includes a local-optimization property that identifies if the policy supports local optimization. You can view the setting for a policy in Oracle Enterprise Manager Fusion Middleware Control Console.

  1. In the application navigator, expand the WebLogic Domain folder.

  2. Right-click WLS_SOAWC, and select Web Services > Policies.

  3. Select a policy and click Export to File.

  4. Open the file with a text editor and search for local-optimization to identify the value. This property supports the following values:

    • on: Local optimization is used in the attached policy, and the policy is not applied at run time.

    • off: Local optimization is not used in the attached policy, and the policy is applied at run time.

    • check-identity: If a JAAS subject exists in the current thread, local optimization is used. Otherwise, local optimization is not used.

For information on the default local optimization settings for security policies, see Oracle Fusion Middleware Security and Administrator's Guide for Web Services.

You can override the local-optimization setting for a policy by adding the oracle.webservices.local.optimization property in the binding section of the composite.xml file. The following values are supported:

  • true: Local optimization is used, and the policy is not applied.

  • false: Local optimization is not used, regardless of the default setting for the local-optimization property at the OWSM policy level. This setting forces the policy to be applied.

For example, the following setting of false causes oracle/wss_username_token_client_policy to be applied.

 <binding.ws
port="http://xmlns.oracle.com/CalledBPELProcessApp_
jws/CalledBPELProcess/CalledBPELProcess#wsdl.endpoint(calledbpelprocess_client_
ep/CalledBPELProcess_pt)"

location="http://sta00634.us.oracle.com:8001/soa-infra/services/default/CalledBPEL
Process!1.0/calledbpelprocess_client_ep?WSDL">
      <wsp:PolicyReference URI="oracle/wss_username_token_client_policy"
                           orawsp:category="security"
orawsp:status="enabled"/>
      <wsp:PolicyReference URI="oracle/log_policy"
orawsp:category="management"
                           orawsp:status="enabled"/>
                            <property
name="oracle.webservices.local.optimization">false</property>
    </binding.ws> 

8.9 Deleting Large Numbers of Instances

Deleting thousands of instances with the Delete with Options button on the Instances page of a SOA composite application takes time and may result in a transaction timeout. Instead, use the purge-script.sql PL/SQL script for instance and rejected message deletion.

The following sections provide examples of how to use the PL/SQL procedures that are a part of this script.

Note:

The purge-script.sql PL/SQL script cannot be used on a SQL Server database.

8.9.1 Selectively Deleting Instances Using a Filter Criteria

Use the instance filter to selectively delete instances.

create or replace type instance_filter as object
(
     composite_name          varchar2(200),
     composite_revision      varchar2(20),
     state                   integer,
     min_created_date        timestamp,
     max_created_date        timestamp,
        
);
  • composite_name: The name of the SOA composite application, such as OrderBooking.

  • composite_revision: The revision of the composite, such as 1.0.

  • state: The state of the instance. The following state values are possible:

    STATE_RUNNING constant integer := 0;
    STATE_RECOVERY_REQUIRED constant integer := 1;
    STATE_COMPLETED_SUCCESSFULLY constant integer := 2;
    STATE_FAULTED constant integer := 3;
    STATE_TERMINATED_BY_USER constant integer := 4;
    STATE_SUSPENDED constant integer := 5;
    STATE_STALE constant integer := 6;
    STATE_UNKNOWN constant integer := 32;
    
  • min_created_date: The minimum date range.

  • max_created_date: The maximum date range.

8.9.2 Procedures For Deleting Instances

This section describes the procedures available for deleting composite instances, rejected messages, and orphaned instances.

8.9.2.1 Deleting a SIngle Instance

This procedure deletes a single composite instance with the given composite instance ID. All dependent records associated with this composite instance are deleted.

FABRIC.DELETE_COMPOSITE_INSTANCE(A_COMPOSITE_INSTANCE_ID IN INTEGER)

The following example deletes the composite instance with the ID of 100.

EXEC FABRIC.DELETE_COMPOSITE_INSTANCE(100);

8.9.2.2 Deleting All Instances Using a Filter Criteria

This procedure deletes all composite instances matching the specified filter criteria.

FABRIC.DELETE_COMPOSITE_INSTANCES(FILTER IN INSTANCE_FILTER,
     MAX_INSTANCES IN INTEGER,
     PURGE_PARTITIONED_DATA IN BOOLEAN DEFAULT TRUE) RETURN INTEGER;
  • FILTER: The filter for selectively deleting the composite instances.

  • MAX_INSTANCES: The maximum number of instances to delete per invocation. If the value MAX_INSTANCES is 100 and the total number of instances matching the specified filter is 200, the invocation of this procedure causes only 100 instances to be deleted.

  • PURGE_PARTITIONED_DATA: Indicates whether the records from the partitioned table must be deleted.

The following example deletes the first 100 composite instances matching the specified filter.

DECLARE
 FILTER INSTANCE_FILTER := INSTANCE_FILTER();

 MAX_INSTANCES NUMBER;
 DELETED_INSTANCES NUMBER;
 PURGE_PARTITIONED_DATA BOOLEAN := TRUE;
BEGIN
   
 FILTER.COMPOSITE_NAME := 'OrderBookingComposite';
 FILTER.COMPOSITE_REVISION := '1.0';  

 FILTER.STATE := fabric.STATE_TERMINATED_BY_USER;

 FILTER.MIN_CREATED_DATE := to_timestamp('2009-07-01','YYYY-MM-DD');
 FILTER.MAX_CREATED_DATE := to_timestamp('2009-08-24','YYYY-MM-DD');
 MAX_INSTANCES := 100;

 DELETED_INSTANCES := FABRIC.DELETE_COMPOSITE_INSTANCES(
   FILTER => FILTER,
   MAX_INSTANCES => MAX_INSTANCES,
   PURGE_PARTITIONED_DATA => PURGE_PARTITIONED_DATA
 );

END;
/

8.9.2.3 Deleting All Rejected Messages Using a Filter Criteria

This procedure deletes all rejected messages matching the specified filter criteria.

FABRIC.DELETE_REJECTED_MESSAGES(FILTER IN INSTANCE_FILTER,
     MAX_INSTANCES IN INTEGER,
     PURGE_PARTITIONED_DATA IN BOOLEAN DEFAULT TRUE) RETURN INTEGER; 
  • FILTER: The filter for selectively deleting the rejected messages.

  • MAX_INSTANCES: The maximum number of instances to be deleted per invocation. If the value MAX_INSTANCES is 100 and the total number of instances matching the specified filter is 200, the invocation of this procedure causes only 100 instances to be deleted.

  • PURGE_PARTITIONED_DATA: Indicates whether the records from the partitioned table must be deleted.

The following example deletes the first 100 rejected messages matching the specified filter.

DECLARE

 FILTER INSTANCE_FILTER := INSTANCE_FILTER();

 MAX_INSTANCES NUMBER;
 DELETED_INSTANCES NUMBER;
BEGIN

  FILTER.COMPOSITE_NAME := 'OrderBookingComposite';  
  FILTER.COMPOSITE_REVISION := '1.0';

  FILTER.MIN_CREATED_DATE := to_timestamp('2009-07-01','YYYY-MM-DD');
  FILTER.MAX_CREATED_DATE := to_timestamp('2009-08-24','YYYY-MM-DD');
  MAX_INSTANCES := 100;

 DELETED_INSTANCES := FABRIC.DELETE_REJECTED_MESSAGES(
   FILTER => NULL,
   MAX_INSTANCES => MAX_INSTANCES
 );

END;
/

8.9.2.4 Deleting the Component Instances Created when Global Instance Tracking is Disabled

This procedure is primarily used to delete the component instances created when global instance tracking is disabled. Orphaned instances are not associated with the composite instance ID.

FABRIC.DELETE_ORPHANED_INSTANCES(FILTER IN INSTANCE_FILTER,
     MAX_INSTANCES IN INTEGER,
     PURGE_PARTITIONED_DATA IN BOOLEAN DEFAULT TRUE) RETURN INTEGER; 
  • FILTER: The filter for selectively deleting the orphaned instances.

  • MAX_INSTANCES: The maximum number of instances to be deleted per invocation. If the value MAX_INSTANCES is 100 and the total number of instances matching the specified filter is 200, the invocation of this procedure causes only 100 instances to be deleted.

  • PURGE_PARTITIONED_DATA: Indicates whether the records from the partitioned table must be deleted.

The following example deletes multiple orphaned instances based on the specified filter.

DECLARE

 FILTER INSTANCE_FILTER := INSTANCE_FILTER();
 MAX_INSTANCES NUMBER;
 DELETED_INSTANCES NUMBER;
BEGIN
     
 FILTER.COMPOSITE_NAME := 'OrderBookingComposite';
 FILTER.COMPOSITE_REVISION := '1.0';  

 FILTER.STATE := fabric.STATE_COMPLETED_SUCCESSFULLY;
 FILTER.MIN_CREATED_DATE := to_timestamp('2009-07-01','YYYY-MM-DD');
 FILTER.MAX_CREATED_DATE := to_timestamp('2009-08-24','YYYY-MM-DD');
 MAX_INSTANCES := 100;

 DELETED_INSTANCES := FABRIC.DELETE_ORPHANED_INSTANCES(
   FILTER => FILTER,
   MAX_INSTANCES => MAX_INSTANCES
 );

END;
/

8.9.2.5 Deleting Composite Instances, Rejected Messages, and Orphaned Instances

This procedure internally invokes the procedures for deleting composite instances, rejected messages, and orphaned instances. This procedure is convenient for deleting all composite instances, rejected messages, and orphaned instances in a single invocation.

FABRIC.DELETE_ALL(FILTER IN INSTANCE_FILTER,
     MAX_INSTANCES IN INTEGER,
     PURGE_PARTITIONED_DATA IN BOOLEAN DEFAULT TRUE) RETURN INTEGER; 

The following example deletes composite instances, rejected messages, and orphaned instances based on the specified filter.

DECLARE
 FILTER INSTANCE_FILTER := INSTANCE_FILTER();
 MAX_INSTANCES NUMBER;
 DELETED_INSTANCES NUMBER;
BEGIN
      
 FILTER.COMPOSITE_NAME := 'OrderBookingComposite';
 FILTER.COMPOSITE_REVISION := '1.0';  

 FILTER.STATE := fabric.STATE_COMPLETED_SUCCESSFULLY;

 FILTER.MIN_CREATED_DATE := to_timestamp('2009-07-01','YYYY-MM-DD');
 FILTER.MAX_CREATED_DATE := to_timestamp('2009-08-24','YYYY-MM-DD');
 MAX_INSTANCES := 100;

 DELETED_INSTANCES := FABRIC.DELETE_ALL(
   FILTER => FILTER,
   MAX_INSTANCES => MAX_INSTANCES
 );

END;
/

8.10 Exporting a Running SOA Composite Application

You can export the contents of a running SOA composite application to an archive JAR file. The file can include some or all of the following data:

  • The original design-time composite.

  • Postdeployment changes in the rules dictionary and domain value maps (DVMs).

  • Postdeployment property changes such as binding component properties, composite properties such as audit level settings and payload validation status, and policy attachments.

Notes:

  • SOA composite application exporting is only currently allowed at the individual SOA composite level.

  • Shared metadata is not exported as part of the composite export SAR (service archive).

To export a running SOA composite application:

  1. Go to the home page of the SOA composite application to export.

  2. From the SOA Composite menu, select Export.

    The Export Composite page appears.

    Description of soaapp_export.gif follows
    Description of the illustration soaapp_export.gif

  3. Select an option.

    • Option 1: Generates an archive file containing the original design-time composite and the postdeployment details described in Option 2 and Option 3.

    • Option 2: Includes the original design-time composite and postdeployment changes in the rules dictionary and DVMs.

    • Option 3: Includes the original design-time composite and postdeployment property changes such as binding component properties, composite properties such as audit level settings and payload validation status, and policy attachments.

    • Option 4: Generates an archive file containing only the original design-time composite. Options 2 and 3 are not included.

  4. If you want to append an additional name to the existing file, select Specify Custom Extension Text. For example, entering MyText to a file named sca_OrderBookingComposite_rev1.0.jar names the exported file as sca_OrderBookingComposite_rev1.0-MyText.jar.

  5. Click Export.

    The Processing: Export Composite dialog displays the progress of archive file generation. When generation completes, you are prompted to save the file.

  6. Click Save File.

    A dialog appears for either opening or saving the file to a directory on your local host.

    Note:

    It is important that you click the Save File button. Do not simply close this dialog. Although the composite is exported, you cannot retrieve the actual exported file.
  7. Specify the local directory in which to save the JAR file.

  8. In the upper right of the Processing: Export Composite dialog, click the x icon to close the dialog.

  9. On the Export Composite page, note that the Cancel button has changed to Done.

  10. Click Done.

    The Export Composite is closed and you are returned to the SOA composite application home page.