Call External Services

This task describes how to configure a virtual service to call external services.

Note:  

  • This task is part of a higher-level task. For details, see Modify Virtual Service Behavior.
  • Service call activity is supported for:

    • SOAP services over HTTP or JMS

    • Binary over HTTP, JMS, WebSphere, or File System

    • XML services over HTTP, JMS, WebSphere MQ, or Filesystem

    • REST services

    • Fixed Length messages over TCP

    • CSV over File System and WebSphere

Create service call activity by importing a service description

  1. In the Data Model Editor, select the operation from which you want to call the external service.
  2. To import a new service description, click Activity > Import Activities. Enter the path to the WSDL for a SOAP service, to the XML schema for an XML service, or to the OpenAPI (Swagger) file for a REST service.

    Note: If you are importing an XML service that requires HTTP authentication, you must add the user name and password to the Service Virtualization credential store.

    • The Identify Name you enter in the credential store must be SCA:<name of called activity>.
    • Alternatively, you can create a global Identity Name SCA which is used if no specific identity exists in the credential store.

    For user interface details, see Edit Credential Store Dialog Box.

  3. For a SOAP service: In the Select Service Operation dialog box, select an activity to add, or import the service description document for use at a later time. For user interface details, see Select Service Operation Dialog Box.
  4. For an XML over HTTP service: In the Service Properties dialog boxes:

    1. Select message elements for input and output messages.
    2. Enter the URL on which the real service runs.
  5. To add a new activity to your data model, select an operation, click Activity again, and select an activity. Choose whether to add it before or after the response.

Back to top

Create service call activity by importing messages

  1. In the Data Model Editor, click Activity > Import Activities.
  2. Select I don't have a service description.
  3. Select a service protocol.
  4. Enter the service properties. For details, see Service Properties Page.
  5. In the Select Service Operation dialog box, select Do not add an activity now.
  6. Import messages into the newly created service call activity.

    1. Select Activity > SCA Description > Learn Schema from Messages.
    2. Select messages to import. For details, see Learn Schema Dialog Box.

    New activities are created based on the imported messages.

  7. To add a new activity to your data model, select an operation, click Activity again, and select an activity. Choose whether to add it before or after the response.

Back to top

Work with service call activity in the Data Model

After you add the service call activity (SCA) to an operation in your data model, you can see it in each rule in the operation. The following options are then available:

Task Details
Edit properties for a SCA Right-click the activity's column header and click Activity Properties. For user interface details, see Activity Properties Dialog Box.
Edit protocol metadata To add, enable, or disable protocol headers, right-click the activity's column header and click Activity Service Description Editor. Then click Edit for request or response metadata. For user interface details, see Edit Metadata Dialog Box.
Remove SCA from a rule Right-click the column header and click Remove Activity.
Enable or disable SCA in a rule Click the on/off icon in the rule's header.
Handle connection failure

To handle connection failure, define a response for the virtual service to return if the service call activity cannot connect to the external service.

  1. Prerequisite: A rule with service call activity enabled.
  2. Create an additional rule with a lower priority than the rule that contains the enabled service call activity.
  3. In the new rule:

    • Turn off the service call activity.
    • Set the service call activity's response Type column with the Is function, and assign the value Service Call Failure. The ServiceCallFailure column is displayed.
    • In the ServiceCallFailure column, select a value for the response: UNKNOWN, HOST_NOT_FOUND, CONNECTION_FAILED, CONNECTION_TIMEOUT. By default, the connection timeout is 100 seconds.

Tip:  

  • You can use the Copy from function on any service call request column, or virtual service response column. Select the Copy from function. The columns that you can use as a source are highlighted. Click the desired source column.
  • Use the Row Detail dialog box for easier configuration of the service call activity. For details, see Row Detail Dialog Box.

Back to top

Override service call activity properties

Some service call activities support overriding the URL or Destination you have set in the Activity Properties. This allows you to dynamically change the service call activity target.

Note:  

  • Setting destination override is straightforward for protocols like REST, where you just specify a new base URL. For other protocols, to see the correct format of the destination override value, you can check the address attribute of the virtualEndpoint element in a *.vs file of any virtual service based on that protocol.

  • Destination override can be set via a script in a scripted rule. The following example shows how the base URL of a service call activity number 4, called TestCall can be set to http://example.com/test in a C# scripted rule:

    sv.Activities.Activity4_TestCall.Request.Overrides.RequestDestination = "http://example.com/test";

To override service call activity properties:

  1. In the Data Model Editor, right-click the upper-most header of Service Call Activity.
  2. In the Activity Service Description Editor, click Edit to open the Request metadata editor. For user interface details, see Edit Metadata Dialog Box.

  3. Enable the Overrides section, and then enable the RequestDestination override.

  4. After the override is enabled, new fields are available in the Data Model Editor where you can override the destination. The same can be also performed via the scripted rule.

Back to top