Using a subflow as a user-defined node
You can develop a user-defined
node that packages a subflow from scratch, in the same way that you
can create any other user-defined node that has its implementation
based on Java™, or base it on
an existing subflow.
The project that contains user-defined nodes can be exported as
a plug-in that is installed in the development environment of the
user. The nodes that are packaged in the plug-in are displayed in
the palette in the Message Flow editor, and can
be used in a message flow in the same way as a built-in node.
Packaging a subflow as a user-defined node provides all the benefits
of a subflow, such as reusability and maintainability, as well as
the following benefits:
- The user-defined node can be distributed to other developers as
a plug-in.
- The user-defined node hides the implementation details of the
subflow from developers who reuse the subflow.
- The user-defined node prevents developers who reuse the subflow
from modifying it.
- The subflow is displayed in the palette in the Message Flow editor.
Limitations
- You cannot use user-defined nodes that are created from
subflows in subflows that are defined in .subflow files.
- Message flows that contain user-defined nodes that are created from subflows must be included in BAR files as compiled message flow (.cmf) files. The shared libraries that are referenced by applications that include user-defined nodes cannot be deployed together because shared libraries need to be deployed as source. For more information, see Adding files to a broker archive.
- All the flow resources (Maps, ESQL, XSL, or other external resources),
except Java code and message
sets, that are referenced in the subflow, must be located in the user-defined
node project.
- A user-defined node can reference another user-defined node in
the same or different user-defined node project, but it must not reference
anything from a regular integration project.
- The user-defined node project can have references to other projects,
such as message set and Java projects.
- If the user-defined node references a message set, you must deploy
the message set to the runtime separately. You can copy the message
set to your workspace and deploy it through the broker archive (BAR)
file.
- A subflow implementation of a user-defined node can contain other
subflows, but all the subflows must be contained in the user-defined
node project.
- Promoted properties from the nodes within the subflow are supported.
Configurable promoted properties from nodes in the subflow are displayed
as configurable node properties in the Broker Archive editor.
- User-defined properties (UDP) on the subflow are supported. If
you create multiple instances of user-defined nodes in your flow,
each type of user-defined property that you define must have the same
value in each instance.
- You can use the same subflow more than once to construct a flow
of your own.
- You can use the following node types that have named correlators
to create a user-defined node, but you must not use more than one
instance of the user-defined node within a flow, an integration server,
or a broker. For example, you cannot use asynchronous request and
asynchronous response nodes, aggregate nodes, TimeoutControl and TimeoutNotification pairs of
nodes, or label nodes.
If you do use one of these node types, the
resultant message flow is invalid. If you deploy flows that contain
asynchronous request, asynchronous response, or label nodes, you receive
an error message. However, you do not receive an error message if
you deploy flows that contain TimeoutControl, TimeoutNotification, or aggregate
nodes.
- Resources in the plug-in space are visible to all projects in
the workspace. Keep user-defined nodes and their associated flows,
maps, ESQL, and other similar resources, in appropriately named broker
schemas. Do not put such resources in a default schema, or schemas
with special names, for example, mqsi.