Subprocess in SOA 12c

It is the one of the new features in SOA 12c which mainly focuses on reusability of the code with much ease within the bpel or across different bpel within the same composite.
Subprocess as the name suggests is a piece of code which is embedded with the bpel or outside bpel component that can be reused across.
There are two types of subprocess:
a) Inline Subprocess
b) Standalone Subprocess
Inline Subprocess
It is part of the bpel which allows the same code to be reused within the same
bpel. Whenever we identify some set of activities being used multiple times
within a particular bpel ,we can add those activities in a scope .Then we right click
on the scope to convert this reusable piece into subprocess. This scope is replaced by a call shape and the set of activities become a reusable asset within the same bpel process which can be called multiple times leveraging the call shape.
Below are the steps to create an inline subprocess :
a) Identify the reusable piece of code and push it into a scope.

b) Right click on the scope and select the option convert it into a subprocess.

c) Scope is replaced by a call shape and an inline subprocess is created.

Standalone Subprocess
It is part of the bpel which allows the same code to be reused across different bpel components
within same composite. Whenever we identify some set of activities being used multiple times
across different bpel components within same composite, we can add those activities in a
standalone subprocess. This subprocess can be called from different bpel components.
Below are the steps to create a standalone subprocess :
a) Right click on the service component lane in the composite and select the subprocess option to configure a standalone subrprocess.


b) Open the bpel component where want to reuse the standalone subprocess. Insert a call shape and select the standalone subprocess which is required to be reused.