The job of Java CAPS applications is typically to receive data from an external system, usually to manipulate or transform that data according to predefined rules, and then to send the data either back to its source or to a different external system. An external system could be a database, a file, a messaging queue, or application, such as Oracle Financials or SAP.
Java CAPS applications within the Java EE do the following:
Get data from an external system. This usually requires one or more adapters, such as the File Adapter.
Persist the data, using JMS topics and queues (usually).
Transform the data, using one or more collaborations or business processed (usually).
Communicate and orchestrate intermediate results amongst processes.
Send the results to an external system or file. This usually requires one or more adapters.
Within the Java EE container, Java CAPS applications can use web services, but this is not required. However, to communicate with the overall JBI container, web services are required. The services provided by the Java CAPS application are provided through the Java EE service engine; JBI uses WSDL to access them as web services.
JBI service units and service assemblies do the following:
Get data from an external system, using one or more binding components such as the HTTP BC.
Persist and communicate intermediate results, using the Normalized Message Router.
Transform the data, using one or more service engines such as the BPEL SE or Java EE SE.
Put results somewhere, using one or more binding components.
From the point of view of the CAPS application, the bridge to the Java EE Service Engine looks and acts like an adapter. From the point of view of the JBI container, CAPS applications are described by WSDL files and served by the Java EE service engine.