Service Design Considerations

In service-driven design, the service contract or interface of each functional component is formalized first. The processing logic behind the service simply becomes an implementation detail that is encapsulated. This section describes some important factors to consider when using the service-driven approach.

Choosing Between Abstract Process Starters, Services, and Service Subprocesses

Choose a process starter activity to start a process when an event occurs. There can be only one process starter in a process.

Note: Do not create a process with a technology specific process starter such as an HTTP or JMS process starter.

Choose a service if you want to expose the operations available in a process outside the application module.

Choose a service subprocess to make your business process easier to understand and debug. A subprocess is invoked by a parent process and the output of the subprocess is used in the main process. A parent process calls a subprocess in two ways: in-line and non-in-line. At run time, an in-line subprocess executes as part of the parent process' job, while a non-in-line subprocess spawns a new job.

A process service is exposed to external consumers by configuring bindings such as REST or SOAP.
Service Data Abstraction State Information Overhead of Additional Parameters

(Headers or other SOAP elements)

REST Services Resources Stateless Less
SOAP Services Operations Stateful High

You can use multiple Web Service Definition Language (WSDL) files with an identical target namespace in a shared module, and an application module.