Component Specification
Component
The component definition describes a reusable integration component (its metadata, actions, triggers, and optional connection). Below is an explanation of each method you can use when building a component with the DSL:
component(String name)
- Builds a newModifiableComponentDefinition
with the specified backend ID. The name is the component ID used internally and in workflow JSON.actions(A... actionDefinitions)
- Declares the actions exposed by this component.categories(ComponentCategory... category)
/categories(List<ComponentCategory> categories)
- Assigns UI categories for grouping and discovery in the catalog. See ComponentCategory.connection(ModifiableConnectionDefinition connectionDefinition)
- Defines the connection used by actions/triggers. If not set, actions can still run without a connection if they don't require one.customAction(boolean customAction)
- If true, enables the Custom Action feature in the UI (typically for REST/OpenAPI‑based connectors).customActionHelp(Help customActionHelp)
- Adds help text for the Custom Action. Displayed as a popup in the UI next to the Custom Action.description(String description)
- Short description shown in the catalog and tooltips.icon(String icon)
- Path or resource name of the SVG icon shown in the UI.resources(String documentationUrl)
/resources(String documentationUrl, Map<String, String> additionalUrls)
- Links to product documentation and optional additional resources (e.g., FAQ, blog posts, templates).title(String title)
- Human‑readable display name (Chicago style) shown in the UI.triggers(T... triggerDefinitions)
- Declares triggers available on this component.clusterElements(ClusterElementDefinition<?>... clusterElements)
- Declares reusable cluster elements (e.g., AI tools) that the component may expose.version(int version)
- Component version number. Increment this when you make breaking changes so existing workflows can continue to use older versions.
Example
private static final ComponentDefinition COMPONENT_DEFINITION = component("textHelper")
.title("Text Helper")
.description("Helper component which contains operations to help you work with text.")
.icon("path:assets/text-helper.svg")
.categories(ComponentCategory.HELPERS)
.actions(TextHelperUpperCaseAction.ACTION_DEFINITION);