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 resources to a BAR file.
- 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 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 BAR 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 node types that have named correlators to create a
user-defined node; for example:
- Asynchronous request and response nodes
- Route and Label nodes
- Aggregation nodes
- TimeoutControl and TimeoutNotification 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
.