This is in developer preview and can be subject to breaking changes.
This is the repository for Camunda 8 Connectors. It manages all parts of the Connectors ecosystem, including the Connector SDK, out-of-the-box Connectors available in Camunda 8, the Connector Runtime, and the Docker images.
For more information on Connectors, refer to the Camunda 8 documentation.
This is a multi-module project with different licenses applied to different modules.
Modules available under Apache 2.0 license
- Connector SDK including all supporting libraries
- Connector Secret providers implementations
- Connector Runtime and all its submodules
- HTTP Outbound Connector
Modules available under Camunda Platform Self-Managed Free Edition license
- All Out-of-the-Box Connectors except for REST Connector (see above)
- Docker images of the out-of-the-box Connectors for Camunda 8, bundled with a runtime
When in doubt, refer to the LICENSE
file in the respective module.
Include the connector-core, e.g. via Maven:
<dependency>
<groupId>io.camunda.connector</groupId>
<artifactId>connector-core</artifactId>
<version>${version.connectors}</version>
<scope>provided</scope>
</dependency>
Set the dependency to a provided
scope as the runtimes that execute Connectors provide the necessary classes already.
To find the latest version, check the Maven Central repository.
Define your Connector logic through the OutboundConnectorFunction
interface:
@OutboundConnector(
name = "PING",
inputVariables = {"caller"},
type = "io.camunda.example.PingConnector:1"
)
public class PingConnector implements OutboundConnectorFunction {
@Override
public Object execute(OutboundConnectorContext context) throws Exception {
var request = context.bindVariables(PingRequest.class);
var caller = request.getCaller();
return new PingResponse("Pong to " + caller);
}
}
Define your Connector logic through the InboundConnectorExecutable
interface:
@InboundConnector(
name = "SUBSCRIPTION",
type = "io.camunda.example.SubscriptionConnector:1"
)
public class SubscriptionConnector implements InboundConnectorExecutable {
private MockSubscription subscription; // imitates some real-world subscription
@Override
public void activate(InboundConnectorContext context) throws Exception {
var properties = context.bindProperties(SubscriptionProperties.class);
// subscribe to events
subscription = new MockSubscription(properties.getTopic());
subscription.subscribe(event -> {
context.correlate(event);
});
}
@Override
public void deactivate() throws Exception {
// unsubscribe from events
subscription.shutdown();
}
}
The SDK provides a default implementation for Connector discovery using Java ServiceLoader with the connector-runtime-core module.
To make your Connector discoverable, expose the OutboundConnectorFunction
or InboundConnectorExecutable
implementation as an SPI implementation.
Alternatively, you can use the manual discovery mechanism via properties.
If you want to validate your Connector input, the SDK provides a default implementation using Jakarta Bean Validation with the connector-validation module. You can include it via maven with the following dependency:
<dependency>
<groupId>io.camunda.connector</groupId>
<artifactId>connector-validation</artifactId>
<version>${version.connectors}</version>
<scope>provided</scope>
</dependency>
Set the dependency to a provided
scope as the runtimes that execute Connectors provide the necessary classes already.
Find more details in the validation module.
Connector runtime supports running outbound Connectors as job workers and manages the lifecycle of the inbound Connectors. You can also build your own runtime, tailored towards your environment. For more details, refer to the connector-runtime module.
mvn clean package
Trigger the release action manually with the version x.y.z
you want to release.
You can choose the branch to execute the action on as described in the GitHub documentation.