var client = clientBuilder.build();
var workerRegistration =
client
.newWorker()
.jobType("collect-money")
.handler(new CollectMoneyJobHandler())
.open();
class CollectMoneyJobHandler implements JobHandler {
@Override
public void handle(JobClient client, ActivatedJob job) {
// collect that money!
client.newCompleteCommand(job).send().join();
}
}
Re-usable building blocks for modeling + execution.
➡️ Element Templates (aka "Connector Templates")
public class CollectMoneyConnector implements ConnectorFunction {
@Override
public Object execute(ConnectorContext context) throws Exception {
var request = context.getVariablesAsType(CollectMoneyInput.class);
var validator = new Validator();
request.validate(validator);
validator.validate();
request.replaceSecrets(context.getSecretStore());
// actually get that money!
return new CollectMoneyResponse("Took " + request.getAmount() + " bucks!");
}
}
import io.camunda.connector.runtime.jobworker.ConnectorJobHandler;
import io.camunda.zeebe.client.ZeebeClient;
public class Main {
public static void main(String[] args) {
var zeebeClient = ZeebeClient.newClientBuilder().build();
zeebeClient.newWorker()
.jobType("collect-money")
.handler(new ConnectorJobHandler(new CollectMoneyFunction()))
.name("collect-money")
.fetchVariables("bucket", "amount")
.open();
}
}
Our goal is to enable users to create + ship re-usable building blocks, but also to use what is already there (community / market place?)
Element Templates / Connector SDK enforce best practices for implementation and ensure safe re-use