Class ZeebeClientImpl
- java.lang.Object
-
- io.zeebe.client.impl.ZeebeClientImpl
-
- All Implemented Interfaces:
JobClient
,ZeebeClient
,AutoCloseable
public final class ZeebeClientImpl extends Object implements ZeebeClient
-
-
Constructor Summary
Constructors Constructor Description ZeebeClientImpl(ZeebeClientConfiguration configuration)
ZeebeClientImpl(ZeebeClientConfiguration configuration, io.grpc.ManagedChannel channel)
ZeebeClientImpl(ZeebeClientConfiguration configuration, io.grpc.ManagedChannel channel, GatewayGrpc.GatewayStub gatewayStub)
ZeebeClientImpl(ZeebeClientConfiguration config, io.grpc.ManagedChannel channel, GatewayGrpc.GatewayStub gatewayStub, ScheduledExecutorService executorService)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static io.grpc.ManagedChannel
buildChannel(ZeebeClientConfiguration config)
static GatewayGrpc.GatewayStub
buildGatewayStub(io.grpc.ManagedChannel channel, ZeebeClientConfiguration config)
void
close()
ZeebeClientConfiguration
getConfiguration()
ActivateJobsCommandStep1
newActivateJobsCommand()
Command to activate multiple jobs of a given type.CancelWorkflowInstanceCommandStep1
newCancelInstanceCommand(long workflowInstanceKey)
Command to cancel a workflow instance.CompleteJobCommandStep1
newCompleteCommand(long jobKey)
Command to complete a job.CreateWorkflowInstanceCommandStep1
newCreateInstanceCommand()
Command to create/start a new instance of a workflow.DeployWorkflowCommandStep1
newDeployCommand()
Command to deploy new workflows.FailJobCommandStep1
newFailCommand(long jobKey)
Command to mark a job as failed.PublishMessageCommandStep1
newPublishMessageCommand()
Command to publish a message which can be correlated to a workflow instance.ResolveIncidentCommandStep1
newResolveIncidentCommand(long incidentKey)
Command to resolve an existing incident.SetVariablesCommandStep1
newSetVariablesCommand(long elementInstanceKey)
Command to set and/or update the variables of a given flow element (e.g.ThrowErrorCommandStep1
newThrowErrorCommand(long jobKey)
Command to report a business error (i.e.TopologyRequestStep1
newTopologyRequest()
Request the current cluster topology.UpdateRetriesJobCommandStep1
newUpdateRetriesCommand(long jobKey)
Command to update the retries of a job.JobWorkerBuilderStep1
newWorker()
Registers a new job worker for jobs of a given type.
-
-
-
Constructor Detail
-
ZeebeClientImpl
public ZeebeClientImpl(ZeebeClientConfiguration configuration)
-
ZeebeClientImpl
public ZeebeClientImpl(ZeebeClientConfiguration configuration, io.grpc.ManagedChannel channel)
-
ZeebeClientImpl
public ZeebeClientImpl(ZeebeClientConfiguration configuration, io.grpc.ManagedChannel channel, GatewayGrpc.GatewayStub gatewayStub)
-
ZeebeClientImpl
public ZeebeClientImpl(ZeebeClientConfiguration config, io.grpc.ManagedChannel channel, GatewayGrpc.GatewayStub gatewayStub, ScheduledExecutorService executorService)
-
-
Method Detail
-
buildChannel
public static io.grpc.ManagedChannel buildChannel(ZeebeClientConfiguration config)
-
buildGatewayStub
public static GatewayGrpc.GatewayStub buildGatewayStub(io.grpc.ManagedChannel channel, ZeebeClientConfiguration config)
-
newTopologyRequest
public TopologyRequestStep1 newTopologyRequest()
Description copied from interface:ZeebeClient
Request the current cluster topology. Can be used to inspect which brokers are available at which endpoint and which broker is the leader of which partition.List<BrokerInfo> brokers = zeebeClient .newTopologyRequest() .send() .join() .getBrokers(); InetSocketAddress address = broker.getSocketAddress(); List<PartitionInfo> partitions = broker.getPartitions();
- Specified by:
newTopologyRequest
in interfaceZeebeClient
- Returns:
- the request where you must call
send()
-
getConfiguration
public ZeebeClientConfiguration getConfiguration()
- Specified by:
getConfiguration
in interfaceZeebeClient
- Returns:
- the client's configuration
-
close
public void close()
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceZeebeClient
-
newDeployCommand
public DeployWorkflowCommandStep1 newDeployCommand()
Description copied from interface:ZeebeClient
Command to deploy new workflows.zeebeClient .newDeployCommand() .addResourceFile("~/wf/workflow1.bpmn") .addResourceFile("~/wf/workflow2.bpmn") .send();
- Specified by:
newDeployCommand
in interfaceZeebeClient
- Returns:
- a builder for the command
-
newCreateInstanceCommand
public CreateWorkflowInstanceCommandStep1 newCreateInstanceCommand()
Description copied from interface:ZeebeClient
Command to create/start a new instance of a workflow.zeebeClient .newCreateInstanceCommand() .bpmnProcessId("my-process") .latestVersion() .variables(json) .send();
- Specified by:
newCreateInstanceCommand
in interfaceZeebeClient
- Returns:
- a builder for the command
-
newCancelInstanceCommand
public CancelWorkflowInstanceCommandStep1 newCancelInstanceCommand(long workflowInstanceKey)
Description copied from interface:ZeebeClient
Command to cancel a workflow instance.zeebeClient .newCancelInstanceCommand(workflowInstanceKey) .send();
- Specified by:
newCancelInstanceCommand
in interfaceZeebeClient
- Parameters:
workflowInstanceKey
- the key which identifies the corresponding workflow instance- Returns:
- a builder for the command
-
newSetVariablesCommand
public SetVariablesCommandStep1 newSetVariablesCommand(long elementInstanceKey)
Description copied from interface:ZeebeClient
Command to set and/or update the variables of a given flow element (e.g. workflow instance, task, etc.)zeebeClient .newSetVariablesCommand(elementInstanceKey) .variables(json) .send();
- Specified by:
newSetVariablesCommand
in interfaceZeebeClient
- Parameters:
elementInstanceKey
- the key of the element instance to set/update the variables for- Returns:
- a builder for the command
-
newPublishMessageCommand
public PublishMessageCommandStep1 newPublishMessageCommand()
Description copied from interface:ZeebeClient
Command to publish a message which can be correlated to a workflow instance.zeebeClient .newPublishMessageCommand() .messageName("order canceled") .correlationKey(orderId) .variables(json) .send();
- Specified by:
newPublishMessageCommand
in interfaceZeebeClient
- Returns:
- a builder for the command
-
newResolveIncidentCommand
public ResolveIncidentCommandStep1 newResolveIncidentCommand(long incidentKey)
Description copied from interface:ZeebeClient
Command to resolve an existing incident.zeebeClient .newResolveIncidentCommand(incidentKey) .send();
- Specified by:
newResolveIncidentCommand
in interfaceZeebeClient
- Parameters:
incidentKey
- the key of the corresponding incident- Returns:
- the builder for the command
-
newUpdateRetriesCommand
public UpdateRetriesJobCommandStep1 newUpdateRetriesCommand(long jobKey)
Description copied from interface:ZeebeClient
Command to update the retries of a job.long jobKey = ..; zeebeClient .newUpdateRetriesCommand(jobKey) .retries(3) .send();
If the given retries are greater than zero then this job will be picked up again by a job worker. This will not close a related incident, which still has to be marked as resolved with
newResolveIncidentCommand(long incidentKey)
.- Specified by:
newUpdateRetriesCommand
in interfaceZeebeClient
- Parameters:
jobKey
- the key of the job to update- Returns:
- a builder for the command
-
newWorker
public JobWorkerBuilderStep1 newWorker()
Description copied from interface:ZeebeClient
Registers a new job worker for jobs of a given type.After registration, the broker activates available jobs and assigns them to this worker. It then publishes them to the client. The given worker is called for every received job, works on them and eventually completes them.
JobWorker worker = zeebeClient .newWorker() .jobType("payment") .handler(paymentHandler) .open(); ... worker.close();
Example JobHandler implementation:public final class PaymentHandler implements JobHandler { @Override public void handle(JobClient client, JobEvent jobEvent) { String json = jobEvent.getVariables(); // modify variables client .newCompleteCommand() .event(jobEvent) .variables(json) .send(); } };
- Specified by:
newWorker
in interfaceZeebeClient
- Returns:
- a builder for the worker registration
-
newActivateJobsCommand
public ActivateJobsCommandStep1 newActivateJobsCommand()
Description copied from interface:ZeebeClient
Command to activate multiple jobs of a given type.zeebeClient .newActivateJobsCommand() .jobType("payment") .maxJobsToActivate(10) .workerName("paymentWorker") .timeout(Duration.ofMinutes(10)) .send();
The command will try to use
maxJobsToActivate
for givenjobType
. If less then the requestedmaxJobsToActivate
jobs of thejobType
are available for activation the returned list will have fewer elements.- Specified by:
newActivateJobsCommand
in interfaceZeebeClient
- Returns:
- a builder for the command
-
newCompleteCommand
public CompleteJobCommandStep1 newCompleteCommand(long jobKey)
Description copied from interface:JobClient
Command to complete a job.long jobKey = ..; jobClient .newCompleteCommand(jobKey) .variables(json) .send();
If the job is linked to a workflow instance then this command will complete the related activity and continue the flow.
- Specified by:
newCompleteCommand
in interfaceJobClient
- Parameters:
jobKey
- the key which identifies the job- Returns:
- a builder for the command
-
newFailCommand
public FailJobCommandStep1 newFailCommand(long jobKey)
Description copied from interface:JobClient
Command to mark a job as failed.long jobKey = ..; jobClient .newFailCommand(jobKey) .retries(3) .send();
If the given retries are greater than zero then this job will be picked up again by a job subscription. Otherwise, an incident is created for this job.
- Specified by:
newFailCommand
in interfaceJobClient
- Parameters:
jobKey
- the key which identifies the job- Returns:
- a builder for the command
-
newThrowErrorCommand
public ThrowErrorCommandStep1 newThrowErrorCommand(long jobKey)
Description copied from interface:JobClient
Command to report a business error (i.e. non-technical) that occurs while processing a job.long jobKey = ...; String code = ...; jobClient .newThrowErrorCommand(jobKey) .errorCode(code) .send();
The error is handled in the workflow by an error catch event. If there is no error catch event with the specified errorCode then an incident will be raised instead.
- Specified by:
newThrowErrorCommand
in interfaceJobClient
- Parameters:
jobKey
- the key which identifies the job- Returns:
- a builder for the command
-
-