SMILA/Documentation/Pipelets
This page describes Pipelets, ProcessingServices and their lifecycle.
Contents
Definition
Pipelets and ProcessingServices are reusable Java Components in a BPEL workflow and can be orchestrated like any regular BPEL Service. Both are used to process the data contained in Records.
Pipelets
A Pipelet is a POJO that implements the interface org.eclipse.smila.processing.SimplePipelet. It's lifecycle and configuration are managed by the workflow engine. An instance of a Pipelet is not shared by multiple Pipelines (workflows), even multiple invocations of a Pipelet in the same Pipeleline do not share the same instance. Each <invokePipelet>Pipeline has it's own instance. An instance may still be accessed by multiple threads, for example if the same Pipeline is executed in parallel. Technical details on Pipelet development can be found in the tutorial How to write a Pipelet.
ProcessingServices
A ProcessingServices is an OSGi service (preferably a Declarative Services) that implements the interface org.eclipse.smila.processing.ProcessingService. It's lifecycle and configuration are NOT managed by the workflow engine, but by the OSGi runtime. An instance of a ProcessingService can be shared between multiple Pipelines and so is frequently accessed by multiple threads. Technical details on ProcessingServices development can be found in the tutorial How to write a ProcessingService.
Pipelet Lifecycle
The following diagram shows the lifecycle of Pipelets.
ProcessingService Lifecycle
The following diagram shows the lifecycle of ProcessingServices.
Combined Lifecycle
The following diagram shows the lifecycle of both Pipelets and ProcessingServices.