This module provides the core client library to interact with Conductor through its HTTP API, enabling the creation, execution, and management of workflows, while also providing a framework for building workers.
- Java 11 or higher
- A Gradle or Maven project properly set up
- A running Conductor server (local or remote)
- Add
conductor-clientdependency to your project
For Gradle:
implementation 'org.conductoross:conductor-client:4.0.0'For Maven:
<dependency>
<groupId>org.conductoross</groupId>
<artifactId>conductor-client</artifactId>
<version>4.0.0</version>
</dependency>- Create a
ConductorClientinstance
Assuming your Conductor server is running at localhost:8080:
import com.netflix.conductor.client.http.ConductorClient;
// … other code
var client = new ConductorClient("http://localhost:8080/api");Note: Use the Builder to configure options.
- Start a Workflow
Use the WorkflowClient to start a workflow:
import com.netflix.conductor.client.http.ConductorClient;
import com.netflix.conductor.client.http.WorkflowClient;
import com.netflix.conductor.common.metadata.workflow.StartWorkflowRequest;
// … other code
var client = new ConductorClient("http://localhost:8080/api");
var workflowClient = new WorkflowClient(client);
var workflowId = workflowClient.startWorkflow(new StartWorkflowRequest()
.withName("hello_workflow")
.withVersion(1));
System.out.println("Started workflow " + workflowId);- Run a Worker
public class HelloWorker implements Worker {
@Override
public TaskResult execute(Task task) {
var taskResult = new TaskResult(task);
taskResult.setStatus(TaskResult.Status.COMPLETED);
taskResult.getOutputData().put("message", "Hello World!");
return taskResult;
}
@Override
public String getTaskDefName() {
return "hello_task";
}
public static void main(String[] args) {
var client = new ConductorClient("http://localhost:8080/api");
var taskClient = new TaskClient(client);
var runnerConfigurer = new TaskRunnerConfigurer
.Builder(taskClient, List.of(new HelloWorker()))
.withThreadCount(10)
.build();
runnerConfigurer.init();
}
}Note: The full code for the above examples can be found here.