Channel-based services are CICS® applications
that are described as components and assembled together using a tool
such as Rational Developer for System z.
These services are available only to other CICS applications that use the INVOKE
SERVICE API command and pass binary data in containers on
a channel.
In SCA, the application program that you want to expose
as a channel-based service is the implementation of the business logic.
The component service describes the interface to the application program
in WSDL. A component has one interface, which can contain operations
and bindings. For a channel-based service, a CICS binding describes the channel. If you select
this binding, Rational Developer for System z adds
a binding.cics section to the SCDL. A channel-based
service has no data mappings, because the application interface expects
a channel and binary data in containers.
- Create a composite using Rational Developer for System z.
- Specify the application program name as the component
implementation.
- Add the CICS binding
to the appropriate service or reference by selecting the direct mapping
mode in the tooling.
- If you specify a URI on the CICS binding
that is attached to the composite service, this URI provides the external
name for the service. In CICS,
this URI is a relative path name; for example, if the service is to
be exposed as http://myhost:port/myService, the URI
in the binding is myService, because the host and
port are beyond the control of the composite application.
- If you specify a URI on the CICS binding
that is attached to the composite reference, the URI is complete for
the targeted service; for example http://myhost:port/myService or cics://PROGRAM/prog1?user=user1.
- Optional: Define imports on the composite
reference. Imports define the dependencies of the component
or composite.

For
details about the recommended ways to create and deploy composites
in CICS, see Best practices for creating and deploying composites.
- Deploy the composite to CICS as
a bundle. Rational Developer for System z generates
the bundle manifest and packages the SCDL and other artifacts for
you. The manifest describes all the resources and metadata that CICS requires to successfully install
a BUNDLE resource; the BUNDLE resource represents the composite in
the CICS region. The manifest
defines the composite as an SCACOMPOSITE resource type and references
the location of the SCDL using a relative path.
- Create and install the BUNDLE resource. You
can optionally set an SCA domain on the BUNDLE resource definition.
An SCA domain typically represents a set of services that provide
an area of business function. You can install the same bundle using
different SCA domains, because CICS identifies
the service by combining the SCA domain and the name of the service.
For details and examples of how to add an SCA domain, see Scoping of bundles
You
must ensure that all prerequisites of the bundle are available in
the CICS region for the BUNDLE
resource to install successfully.
- Write an application to call the channel-based service
using the INVOKE SERVICE API command:
EXEC CICS INVOKE SERVICE('servicename')
CHANNEL(channel)
OPERATION(operation)
The servicename is
the external name of the service, the channel is
the 16-byte name of the channel, and the operation is
any value. Although the operation is a mandatory option on the command,
the value is not used for channel-based services.
When the application calls the channel-based service, CICS resolves the name of the service
and issues an EXEC CICS LINK command to pass the
specified channel and containers to the application program that you
defined in the composite. If you specified a specific requester pipeline
in the binding, CICS runs the
request through that requester pipeline. If no requester pipeline
is specified in the binding, CICS dynamically
creates a requester pipeline for the request.
You can test and validate that the service works as expected.
You can view the BUNDLE resource and its contents using the IBM CICS Explorer.
You can also enable and disable the BUNDLE resource to manage all
the resources together.