Class CamundaClientImpl
- All Implemented Interfaces:
JobClient,CamundaClient,AutoCloseable
-
Constructor Summary
ConstructorsConstructorDescriptionCamundaClientImpl(CamundaClientConfiguration configuration) CamundaClientImpl(CamundaClientConfiguration configuration, io.grpc.ManagedChannel channel) CamundaClientImpl(CamundaClientConfiguration configuration, io.grpc.ManagedChannel channel, HttpClient httpClient) CamundaClientImpl(CamundaClientConfiguration configuration, io.grpc.ManagedChannel channel, GatewayGrpc.GatewayStub gatewayStub) CamundaClientImpl(CamundaClientConfiguration config, io.grpc.ManagedChannel channel, GatewayGrpc.GatewayStub gatewayStub, ExecutorResource executorResource) CamundaClientImpl(CamundaClientConfiguration config, io.grpc.ManagedChannel channel, GatewayGrpc.GatewayStub gatewayStub, ExecutorResource executorResource, HttpClient httpClient) -
Method Summary
Modifier and TypeMethodDescriptionstatic io.grpc.ManagedChannelstatic GatewayGrpc.GatewayStubbuildGatewayStub(io.grpc.ManagedChannel channel, CamundaClientConfiguration config) voidclose()Command to activate multiple jobs of a given type.newAssignGroupToTenantCommand(long tenantKey) Command to assign a group to a tenant.newAssignMappingToTenantCommand(long tenantKey) Command to assign a mapping rule to a tenant.newAssignUserToGroupCommand(long groupKey) Command to assign a user to a group.newAssignUserToTenantCommand(String tenantId) Command to assign a user to a tenant.Command to broadcast a signal.newCancelInstanceCommand(long processInstanceKey) Command to cancel a process instance.Command to pin the Zeebe engine's internal clock to a specific time.Command to reset the Zeebe engine's internal clock to the system time.newCompleteCommand(long jobKey) Command to complete a job.Command to complete a job.Command to correlate a message and wait for it to be correlated against a process instance.Command to create an authorizationExperimental: This method is under development.Experimental: This method is under development.newCreateDocumentLinkCommand(DocumentReferenceResponse documentReference) Experimental: This method is under development.newCreateDocumentLinkCommand(String documentId) Experimental: This method is under development.Command to create a group.Command to create/start a new instance of a process.Command to create a mapping rule.Command to create a role.Command to create a tenant.newDecisionDefinitionGetRequest(long decisionDefinitionKey) Gets a decision definition by key.newDecisionDefinitionGetXmlRequest(long decisionKey) newDecisionInstanceGetRequest(String decisionInstanceId) Retrieves a decision instance by id.Executes a search request to query decision instances.newDecisionRequirementsGetRequest(long decisionRequirementsKey) Gets a decision requirements by key.newDecisionRequirementsGetXmlRequest(long decisionRequirementsKey) Executes a search request to query Decision Requirements.newDeleteAuthorizationCommand(long authorizationKey) Command to delete an authorizationnewDeleteDocumentCommand(DocumentReferenceResponse documentReference) Experimental: This method is under development.newDeleteDocumentCommand(String documentId) Experimental: This method is under development.newDeleteGroupCommand(long groupKey) Command to delete a group.newDeleteResourceCommand(long resourceKey) Command to delete a resource.newDeleteTenantCommand(String tenantId) Command to delete a tenant.Command to deploy new processes.Command to deploy new resources, i.e.newDocumentContentGetRequest(DocumentReferenceResponse documentReference) Experimental: This method is under development.newDocumentContentGetRequest(String documentId) Experimental: This method is under development.Command to evaluate a decision.newFailCommand(long jobKey) Command to mark a job as failed.Command to mark a job as failed.newFlowNodeInstanceGetRequest(long flowNodeInstanceKey) Gets a flow node instance by key.Executes a search request to query flow node instances.newIncidentGetRequest(long incidentKey) Gets an incident by key.newMigrateProcessInstanceCommand(long processInstanceKey) Command to migrate a process instance to a different process definition.newModifyProcessInstanceCommand(long processInstanceKey) Command to modify a process instance.newProcessDefinitionGetFormRequest(long processDefinitionKey) newProcessDefinitionGetRequest(long processDefinitionKey) Gets a process definition by key.newProcessDefinitionGetXmlRequest(long processDefinitionKey) Executes a search request to query process definitions.newProcessInstanceGetRequest(long processInstanceKey) Retrieves a process instance by key.Executes a search request to query process instances.Command to publish a message which can be correlated to a process instance.newRemoveUserFromTenantCommand(String tenantId) Command to remove a user from a tenant.newResolveIncidentCommand(long incidentKey) Command to resolve an existing incident.newSetVariablesCommand(long elementInstanceKey) Command to set and/or update the variables of a given flow element (e.g. process instance, task, etc.)Activates and streams jobs of a specific type.newThrowErrorCommand(long jobKey) Command to report a business error (i.e. non-technical) that occurs while processing a job.Command to report a business error (i.e. non-technical) that occurs while processing a job.Request the current cluster topology.newUnassignGroupFromTenantCommand(long tenantKey) Command to unassign a group from a tenant.newUnassignUserFromGroupCommand(long groupKey) Command to unassign a user from a group.newUpdateAuthorizationCommand(long authorizationKey) Command to update an authorizationnewUpdateGroupCommand(long groupKey) Command to update a group.newUpdateJobCommand(long jobKey) Command to update the retries and/or the timeout of a job.Command to update the retries and/or the timeout of a job.newUpdateRetriesCommand(long jobKey) Command to update the retries of a job.Command to update the retries of a job.newUpdateTenantCommand(String tenantId) Creates a command to update the name of an existing tenant.newUpdateTimeoutCommand(long jobKey) Command to update the timeout of a job.Command to update the timeout of a job.Command to create a user.newUserTaskAssignCommand(long userTaskKey) Command to assign a user task.newUserTaskCompleteCommand(long userTaskKey) Command to complete a user task.newUserTaskGetFormRequest(long userTaskKey) Gets a user task form by key.newUserTaskGetRequest(long userTaskKey) Gets a User Task by key.Executes a search request to query user tasks.newUserTaskUnassignCommand(long userTaskKey) Command to unassign a user task.newUserTaskUpdateCommand(long userTaskKey) Command to update a user task.newUserTaskVariableQuery(long userTaskKey) Gets a variabes associated to a User Task key.newVariableGetRequest(long variableKey) Gets a variable by key.Executes a search request to query variables.Registers a new job worker for jobs of a given type.
-
Constructor Details
-
CamundaClientImpl
-
CamundaClientImpl
-
CamundaClientImpl
public CamundaClientImpl(CamundaClientConfiguration configuration, io.grpc.ManagedChannel channel, HttpClient httpClient) -
CamundaClientImpl
public CamundaClientImpl(CamundaClientConfiguration configuration, io.grpc.ManagedChannel channel, GatewayGrpc.GatewayStub gatewayStub) -
CamundaClientImpl
public CamundaClientImpl(CamundaClientConfiguration config, io.grpc.ManagedChannel channel, GatewayGrpc.GatewayStub gatewayStub, ExecutorResource executorResource) -
CamundaClientImpl
public CamundaClientImpl(CamundaClientConfiguration config, io.grpc.ManagedChannel channel, GatewayGrpc.GatewayStub gatewayStub, ExecutorResource executorResource, HttpClient httpClient)
-
-
Method Details
-
buildChannel
-
buildGatewayStub
public static GatewayGrpc.GatewayStub buildGatewayStub(io.grpc.ManagedChannel channel, CamundaClientConfiguration config) -
newTopologyRequest
Description copied from interface:CamundaClientRequest 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 = camundaClient .newTopologyRequest() .send() .join() .getBrokers(); InetSocketAddress address = broker.getSocketAddress(); List<PartitionInfo> partitions = broker.getPartitions();
- Specified by:
newTopologyRequestin interfaceCamundaClient- Returns:
- the request where you must call
send()
-
getConfiguration
- Specified by:
getConfigurationin interfaceCamundaClient- Returns:
- the client's configuration
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCamundaClient
-
newDeployCommand
Description copied from interface:CamundaClientCommand to deploy new processes.camundaClient .newDeployCommand() .addResourceFile("~/wf/process1.bpmn") .addResourceFile("~/wf/process2.bpmn") .send();- Specified by:
newDeployCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newDeployResourceCommand
Description copied from interface:CamundaClientCommand to deploy new resources, i.e. BPMN process models and DMN decision models.camundaClient .newDeployCommand() .addResourceFile("~/wf/process1.bpmn") .addResourceFile("~/wf/process2.bpmn") .addResourceFile("~/dmn/decision.dmn") .send();- Specified by:
newDeployResourceCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newCreateInstanceCommand
Description copied from interface:CamundaClientCommand to create/start a new instance of a process.camundaClient .newCreateInstanceCommand() .bpmnProcessId("my-process") .latestVersion() .variables(json) .send();- Specified by:
newCreateInstanceCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newModifyProcessInstanceCommand
Description copied from interface:CamundaClientCommand to modify a process instance.camundaClient .newModifyProcessInstanceCommand(processInstanceKey) .activateElement("element1") .and() .activateElement("element2") .withVariables(globalScopedVariables) .withVariables(localScopedVariables, "element2") .and() .terminateElement("element3") .send();- Specified by:
newModifyProcessInstanceCommandin interfaceCamundaClient- Parameters:
processInstanceKey- the key which identifies the corresponding process instance- Returns:
- a builder for the command
-
newMigrateProcessInstanceCommand
Description copied from interface:CamundaClientCommand to migrate a process instance to a different process definition.The migration command contains a migration plan. Migration plan contains targetProcessDefinitionKey to indicate which process definition to use for the migration. Mapping instructions for the migration describe how to map elements from the source process definition to the target process definition.
For example, let's consider we want to migrate process instance with key
1, target process definition key2, a source process definition with a service task with id"task1"and the target process definition with a service task with id"task2". The migration command could be:{ "processInstanceKey": 1, "migrationPlan": { "targetProcessDefinitionKey": 2, "mappingInstructions": [ { "sourceElementId": "task1", "targetElementId": "task2" } ] } }camundaClient .newMigrateProcessInstanceCommand(1L) .migrationPlan(2L) .addMappingInstruction("element1", "element2") .addMappingInstruction("element3", "element4") .send();final MigrationPlan migrationPlan = MigrationPlan.newBuilder() .withTargetProcessDefinitionKey(2L) .addMappingInstruction("element1", "element2") .addMappingInstruction("element3", "element4") .build(); camundaClient .newMigrateProcessInstanceCommand(1L) .migrationPlan(migrationPlan) .send();- Specified by:
newMigrateProcessInstanceCommandin interfaceCamundaClient- Parameters:
processInstanceKey- the key which refers to the process instance to migrate- Returns:
- a builder for the command
-
newCancelInstanceCommand
Description copied from interface:CamundaClientCommand to cancel a process instance.camundaClient .newCancelInstanceCommand(processInstanceKey) .send();
- Specified by:
newCancelInstanceCommandin interfaceCamundaClient- Parameters:
processInstanceKey- the key which identifies the corresponding process instance- Returns:
- a builder for the command
-
newSetVariablesCommand
Description copied from interface:CamundaClientCommand to set and/or update the variables of a given flow element (e.g. process instance, task, etc.)camundaClient .newSetVariablesCommand(elementInstanceKey) .variables(json) .send();
- Specified by:
newSetVariablesCommandin interfaceCamundaClient- Parameters:
elementInstanceKey- the key of the element instance to set/update the variables for- Returns:
- a builder for the command
-
newEvaluateDecisionCommand
Description copied from interface:CamundaClientCommand to evaluate a decision.camundaClient .newEvaluateDecisionCommand() .decisionKey("my-decision") .variables(json) .send();- Specified by:
newEvaluateDecisionCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newPublishMessageCommand
Description copied from interface:CamundaClientCommand to publish a message which can be correlated to a process instance.camundaClient .newPublishMessageCommand() .messageName("order canceled") .correlationKey(orderId) .variables(json) .send();- Specified by:
newPublishMessageCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newCorrelateMessageCommand
Description copied from interface:CamundaClientCommand to correlate a message and wait for it to be correlated against a process instance.camundaClient .newCorrelateMessageCommand() .messageName("order canceled") .correlationKey(orderId) .variables(json) .tenantId("tenant") .send();- Specified by:
newCorrelateMessageCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newBroadcastSignalCommand
Description copied from interface:CamundaClientCommand to broadcast a signal.camundaClient .newBroadcastSignalCommand() .signalName("signal") .variables(json) .send();- Specified by:
newBroadcastSignalCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newResolveIncidentCommand
Description copied from interface:CamundaClientCommand to resolve an existing incident.camundaClient .newResolveIncidentCommand(incidentKey) .send();
- Specified by:
newResolveIncidentCommandin interfaceCamundaClient- Parameters:
incidentKey- the key of the corresponding incident- Returns:
- the builder for the command
-
newUpdateRetriesCommand
Description copied from interface:CamundaClientCommand to update the retries of a job.long jobKey = ..; camundaClient .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:
newUpdateRetriesCommandin interfaceCamundaClient- Parameters:
jobKey- the key of the job to update- Returns:
- a builder for the command
-
newUpdateRetriesCommand
Description copied from interface:CamundaClientCommand to update the retries of a job.ActivatedJob job= ..; camundaClient .newUpdateRetriesCommand(job) .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:
newUpdateRetriesCommandin interfaceCamundaClient- Parameters:
job- the activated job- Returns:
- a builder for the command
-
newUpdateTimeoutCommand
Description copied from interface:CamundaClientCommand to update the timeout of a job.long jobKey = ..; camundaClient .newUpdateTimeoutCommand(jobKey) .timeout(100) .send();
Timeout value in millis is used to calculate a new job deadline. This will happen when the command to update the timeline is processed. The timeout value will be added to the current time then.
- Specified by:
newUpdateTimeoutCommandin interfaceCamundaClient- Parameters:
jobKey- the key of the job to update- Returns:
- a builder for the command
-
newUpdateTimeoutCommand
Description copied from interface:CamundaClientCommand to update the timeout of a job.ActivatedJob job= ..; camundaClient .newUpdateTimeoutCommand(job) .timeout(100) .send();
Timeout value in millis is used to calculate a new job deadline. This will happen when the command to update the timeline is processed. The timeout value will be added to the current time then.
- Specified by:
newUpdateTimeoutCommandin interfaceCamundaClient- Parameters:
job- the activated job- Returns:
- a builder for the command
-
newWorker
Description copied from interface:CamundaClientRegisters 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 = camundaClient .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:
newWorkerin interfaceCamundaClient- Returns:
- a builder for the worker registration
-
newDeleteResourceCommand
Description copied from interface:CamundaClientCommand to delete a resource.camundaClient .newDeleteResourceCommand(resourceKey) .send();
- Specified by:
newDeleteResourceCommandin interfaceCamundaClient- Parameters:
resourceKey- the key of the resource- Returns:
- the builder for the command
-
newUserTaskCompleteCommand
Description copied from interface:CamundaClientCommand to complete a user task.long userTaskKey = ..; camundaClient .newUserTaskCompleteCommand(userTaskKey) .variables(map) .send();
If the user task is linked to a process instance then this command will complete the related activity and continue the flow.
This command is only sent via REST over HTTP, not via gRPC
- Specified by:
newUserTaskCompleteCommandin interfaceCamundaClient- Parameters:
userTaskKey- the key of the user task- Returns:
- a builder for the command
-
newUserTaskAssignCommand
Description copied from interface:CamundaClientCommand to assign a user task.long userTaskKey = ..; camundaClient .newUserTaskAssignCommand(userTaskKey) .assignee(newAssignee) .send();
This command is only sent via REST over HTTP, not via gRPC
- Specified by:
newUserTaskAssignCommandin interfaceCamundaClient- Parameters:
userTaskKey- the key of the user task- Returns:
- a builder for the command
-
newUserTaskUpdateCommand
Description copied from interface:CamundaClientCommand to update a user task.long userTaskKey = ..; camundaClient .newUserTaskUpdateCommand(userTaskKey) .candidateGroups(newCandidateGroups) .send();
This command is only sent via REST over HTTP, not via gRPC
- Specified by:
newUserTaskUpdateCommandin interfaceCamundaClient- Parameters:
userTaskKey- the key of the user task- Returns:
- a builder for the command
-
newUserTaskUnassignCommand
Description copied from interface:CamundaClientCommand to unassign a user task.long userTaskKey = ..; camundaClient .newUserTaskUnassignCommand(userTaskKey) .send();
This command is only sent via REST over HTTP, not via gRPC
- Specified by:
newUserTaskUnassignCommandin interfaceCamundaClient- Parameters:
userTaskKey- the key of the user task- Returns:
- a builder for the command
-
newUpdateJobCommand
Description copied from interface:CamundaClientCommand to update the retries and/or the timeout of a job.JobChangeset changeset= ..; camundaClient .newUpdateCommand(jobKey) .update(changeset) .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).Timeout value in millis is used to calculate a new job deadline. This will happen when the command to update the timeline is processed. The timeout value will be added to the current time then.
- Specified by:
newUpdateJobCommandin interfaceCamundaClient- Parameters:
jobKey- the key of the job to update- Returns:
- a builder for the command
-
newUpdateJobCommand
Description copied from interface:CamundaClientCommand to update the retries and/or the timeout of a job.ActivatedJob job= ..; JobChangeset changeset= ..; camundaClient .newUpdateCommand(job) .update(changeset) .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).Timeout value in millis is used to calculate a new job deadline. This will happen when the command to update the timeline is processed. The timeout value will be added to the current time then.
- Specified by:
newUpdateJobCommandin interfaceCamundaClient- Parameters:
job- the activated job- Returns:
- a builder for the command
-
newClockPinCommand
Description copied from interface:CamundaClientCommand to pin the Zeebe engine's internal clock to a specific time.This method initiates a command to pin the clock to a specified time. You can specify the time using either an epoch timestamp in milliseconds or an
Instantobject.Once pinned, the clock will remain at the specified time and will not advance until another
pinorresetcommand is issued. This is useful for scenarios where you need to simulate process execution at a specific point in time.Example usage:
final long pinnedTime = 1742461285000L; // Thu, Mar 20, 2025 09:01:25 GMT+0000 camundaClient .newClockPinCommand() .time(pinnedTime) .send(); final Instant futureInstant = Instant.now().plus(Duration.ofDays(7)); camundaClient .newClockPinCommand() .time(futureInstant) .send();The command is marked as experimental and may undergo changes or improvements in future releases.
- Specified by:
newClockPinCommandin interfaceCamundaClient- Returns:
- a builder for the command that allows setting either a timestamp or an instant
-
newClockResetCommand
Description copied from interface:CamundaClientCommand to reset the Zeebe engine's internal clock to the system time.This command allows you to reset the clock to the current system time, effectively undoing any previous
pincommand that may have set the clock to a specific, static time.camundaClient .newClockResetCommand() .send();The command is marked as experimental and may undergo changes or improvements in future releases.
- Specified by:
newClockResetCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newProcessDefinitionGetRequest
Description copied from interface:CamundaClientGets a process definition by key.long processDefinitionKey = ...; camundaClient .newProcessDefinitionGetRequest(processDefinitionKey) .send();
- Specified by:
newProcessDefinitionGetRequestin interfaceCamundaClient- Parameters:
processDefinitionKey- the key of the process definition- Returns:
- a builder for the request to get a process definition
-
newProcessDefinitionGetXmlRequest
- Specified by:
newProcessDefinitionGetXmlRequestin interfaceCamundaClient
-
newProcessDefinitionGetFormRequest
public ProcessDefinitionGetFormRequest newProcessDefinitionGetFormRequest(long processDefinitionKey) - Specified by:
newProcessDefinitionGetFormRequestin interfaceCamundaClient
-
newProcessDefinitionQuery
Description copied from interface:CamundaClientExecutes a search request to query process definitions.long processDefinitionKey = ...; camundaClient .newProcessDefinitionQuery() .filter((f) -> f.processDefinitionKey(processDefinitionKey)) .sort((s) -> s.name().asc()) .page((p) -> p.limit(100)) .send();
- Specified by:
newProcessDefinitionQueryin interfaceCamundaClient- Returns:
- a builder for the process definition query
-
newProcessInstanceGetRequest
Description copied from interface:CamundaClientRetrieves a process instance by key.long processInstanceKey = ...; camundaClient .newProcessInstanceGetRequest(processInstanceKey) .send();
- Specified by:
newProcessInstanceGetRequestin interfaceCamundaClient- Returns:
- a builder for the request to get a process instance
-
newProcessInstanceQuery
Description copied from interface:CamundaClientExecutes a search request to query process instances.long processInstanceKey = ...; camundaClient .newProcessInstanceQuery() .filter((f) -> f.processInstanceKeys(processInstanceKey)) .sort((s) -> s.startDate().asc()) .page((p) -> p.limit(100)) .send();
- Specified by:
newProcessInstanceQueryin interfaceCamundaClient- Returns:
- a builder for the process instance query
-
newFlownodeInstanceQuery
Description copied from interface:CamundaClientExecutes a search request to query flow node instances.long flownodeInstanceKey = ...; camundaClient .newFlownodeInstanceQuery() .filter((f) -> f.processInstanceKeys(processInstanceKey)) .sort((s) -> s.flowNodeName().asc()) .page((p) -> p.limit(100)) .send();
- Specified by:
newFlownodeInstanceQueryin interfaceCamundaClient- Returns:
- a builder for the process instance query
-
newFlowNodeInstanceGetRequest
Description copied from interface:CamundaClientGets a flow node instance by key.long flowNodeInstanceKey = ...; camundaClient .newFlowNodeInstanceGetRequest(flowNodeInstanceKey) .send();
- Specified by:
newFlowNodeInstanceGetRequestin interfaceCamundaClient- Parameters:
flowNodeInstanceKey- the key of the flow node instance- Returns:
- a builder for the request to get a flow node instance
-
newUserTaskQuery
Description copied from interface:CamundaClientExecutes a search request to query user tasks.camundaClient .newUserTaskQuery() .filter((f) -> f.userTaskKey(userTaskKey)) .sort((s) -> s.creationDate().asc()) .page((p) -> p.limit(100)) .send();
- Specified by:
newUserTaskQueryin interfaceCamundaClient- Returns:
- a builder for the user task query
-
newDecisionRequirementsQuery
Description copied from interface:CamundaClientExecutes a search request to query Decision Requirements.camundaClient .newDecisionRequirementsQuery() .filter((f) -> f.decisionRequirementsKey(decisionRequirementsKey)) .sort((s) -> s.version().asc()) .page((p) -> p.limit(100)) .send();
- Specified by:
newDecisionRequirementsQueryin interfaceCamundaClient- Returns:
- a builder for the decision requirements query
-
newDecisionDefinitionQuery
- Specified by:
newDecisionDefinitionQueryin interfaceCamundaClient
-
newDecisionDefinitionGetRequest
Description copied from interface:CamundaClientGets a decision definition by key.long decisionDefinitionKey = ...; camundaClient .newDecisionDefinitionGetRequest(decisionDefinitionKey) .send();
- Specified by:
newDecisionDefinitionGetRequestin interfaceCamundaClient- Parameters:
decisionDefinitionKey- the key of the decision definition- Returns:
- a builder for the request to get a decision definition
-
newDecisionDefinitionGetXmlRequest
- Specified by:
newDecisionDefinitionGetXmlRequestin interfaceCamundaClient
-
newDecisionInstanceQuery
Description copied from interface:CamundaClientExecutes a search request to query decision instances.long decisionInstanceKey = ...; camundaClient .newDecisionInstanceQuery() .filter((f) -> f.decisionInstanceKey(decisionInstanceKey)) .sort((s) -> s.decisionInstanceKey().asc()) .page((p) -> p.limit(100)) .send();
- Specified by:
newDecisionInstanceQueryin interfaceCamundaClient- Returns:
- a builder for the decision instance query
-
newDecisionInstanceGetRequest
Description copied from interface:CamundaClientRetrieves a decision instance by id.String decisionInstanceId = ...; camundaClient .newDecisionInstanceGetQuery(decisionInstanceId) .send();
- Specified by:
newDecisionInstanceGetRequestin interfaceCamundaClient- Parameters:
decisionInstanceId- the id of the decision instance to fetch- Returns:
- a builder for the request to get a decision instance
-
newIncidentQuery
- Specified by:
newIncidentQueryin interfaceCamundaClient
-
newIncidentGetRequest
Description copied from interface:CamundaClientGets an incident by key.long incidentKey = ...; camundaClient .newIncidentGetRequest(incidentKey) .send();
- Specified by:
newIncidentGetRequestin interfaceCamundaClient- Parameters:
incidentKey- the key of the incident- Returns:
- a builder for the request to get an incident
-
newCreateRoleCommand
Description copied from interface:CamundaClientCommand to create a role.camundaClient .newRoleCreateCommand() .name(name) .send();
This command is only sent via REST over HTTP, not via gRPC
- Specified by:
newCreateRoleCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newCreateGroupCommand
Description copied from interface:CamundaClientCommand to create a group.camundaClient .newCreateGroupCommand() .name(name) .send();
This command is only sent via REST over HTTP, not via gRPC
- Specified by:
newCreateGroupCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newUpdateGroupCommand
Description copied from interface:CamundaClientCommand to update a group.camundaClient .newUpdateGroupCommand(123L) .name(name) .send();
This command is only sent via REST over HTTP, not via gRPC
- Specified by:
newUpdateGroupCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newDeleteGroupCommand
Description copied from interface:CamundaClientCommand to delete a group.camundaClient .newDeleteGroupCommand(123L) .send();
This command is only sent via REST over HTTP, not via gRPC
- Specified by:
newDeleteGroupCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newAssignUserToGroupCommand
Description copied from interface:CamundaClientCommand to assign a user to a group.camundaClient .newAssignUserToGroupCommand(123L) .userKey(456L) .send();
This command is only sent via REST over HTTP, not via gRPC
- Specified by:
newAssignUserToGroupCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newUnassignUserFromGroupCommand
Description copied from interface:CamundaClientCommand to unassign a user from a group.camundaClient .newUnassignUserFromGroupCommand(123L) .userKey(456L) .send();
This command is only sent via REST over HTTP, not via gRPC
- Specified by:
newUnassignUserFromGroupCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newUserCreateCommand
Description copied from interface:CamundaClientCommand to create a user.camundaClient .newUserCreateCommand() .username(username) .email(email) .name(name) .password(password) .send();
This command is only sent via REST over HTTP, not via gRPC
- Specified by:
newUserCreateCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newCreateMappingCommand
Description copied from interface:CamundaClientCommand to create a mapping rule.camundaClient .newCreateMappingCommand() .claimName(claimName) .claimValue(claimValue) .name(name) .send();
This command is only sent via REST over HTTP, not via gRPC
- Specified by:
newCreateMappingCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newDecisionRequirementsGetXmlRequest
public DecisionRequirementsGetXmlRequest newDecisionRequirementsGetXmlRequest(long decisionRequirementsKey) - Specified by:
newDecisionRequirementsGetXmlRequestin interfaceCamundaClient
-
newDecisionRequirementsGetRequest
public DecisionRequirementsGetRequest newDecisionRequirementsGetRequest(long decisionRequirementsKey) Description copied from interface:CamundaClientGets a decision requirements by key.long decisionRequirementsKey = ...; camundaClient .newDecisionRequirementsGetRequest(decisionRequirementsKey) .send();
- Specified by:
newDecisionRequirementsGetRequestin interfaceCamundaClient- Parameters:
decisionRequirementsKey- the key of the decision requirements- Returns:
- a builder for the request to get a decision requirements
-
newUserTaskGetFormRequest
Description copied from interface:CamundaClientGets a user task form by key.long userTaskKey = ...; camundaClient .newUserTaskGetFormRequest(userTaskKey) .send();
- Specified by:
newUserTaskGetFormRequestin interfaceCamundaClient- Parameters:
userTaskKey- the key of the user task- Returns:
- a builder for the request to get a user task form
-
newUserTaskGetRequest
Description copied from interface:CamundaClientGets a User Task by key.long userTaskKey = ...; camundaClient .newUserTaskGetRequest(userTaskKey) .send();
- Specified by:
newUserTaskGetRequestin interfaceCamundaClient- Parameters:
userTaskKey- the key of the user task- Returns:
- a builder for the request to get a user task
-
newVariableQuery
Description copied from interface:CamundaClientExecutes a search request to query variables.camundaClient .newVariableQuery() .filter((f) -> f.variableKey(variableKey)) .sort((s) -> s.value().asc()) .page((p) -> p.limit(100)) .send();
- Specified by:
newVariableQueryin interfaceCamundaClient- Returns:
- a builder for the variable query
-
newVariableGetRequest
Description copied from interface:CamundaClientGets a variable by key.long variableKey = ...; camundaClient .newVariableGetRequest(variableKey) .send();
- Specified by:
newVariableGetRequestin interfaceCamundaClient- Parameters:
variableKey- the key of the variable- Returns:
- a builder for the request to get a variable
-
newUserTaskVariableQuery
Description copied from interface:CamundaClientGets a variabes associated to a User Task key.long variableKey = ...; camundaClient .newUserTaskVariableQuery(variableKey) .sort((s) -> s.value().asc()) .page((p) -> p.limit(100)) .send();
- Specified by:
newUserTaskVariableQueryin interfaceCamundaClient- Parameters:
userTaskKey- the key of the user task- Returns:
- a builder for the request to get the variables
-
newCreateDocumentCommand
Description copied from interface:CamundaClientExperimental: This method is under development. The respective API on compatible clusters cannot be considered production-ready. Thus, this method doesn't work out of the box with all clusters. Until this warning is removed, anything described below may not yet have taken effect, and the interface and its description are subject to change.Command to create a document.
camundaClient .newCreateDocumentCommand() .content(inputStream) .fileName("file.txt") .timeToLive(Duration.ofDays(1)) .send();- Specified by:
newCreateDocumentCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newCreateDocumentBatchCommand
Description copied from interface:CamundaClientExperimental: This method is under development. The respective API on compatible clusters cannot be considered production-ready. Thus, this method doesn't work out of the box with all clusters. Until this warning is removed, anything described below may not yet have taken effect, and the interface and its description are subject to change.Command to create a batch of documents. Unlike
CamundaClient.newCreateDocumentCommand(), this command allows you to create multiple documents in a single request. This can be more efficient than creating each document individually, however, there are multiple limitations to consider.
Limitations:- The gateway does not guarantee the atomicity of the batch operation. If the gateway receives the batch but fails to create one or more documents, it will not roll back the operation. This means that some documents may be created while others are not. The client should handle this scenario by checking the response for each document.
- Each document in the batch must have a unique name.
- It is not possible to assign a custom document ID to the documents in the batch. The document ID will be generated by the broker.
- The total size of the batch must not exceed the multipart request size limit of the gateway.
- The documents can only be created in a single store. If you need to create documents in multiple stores, you must create separate batches for each store.
zeebeClient .newCreateDocumentBatchCommand() .addDocument() .content(inputStream1) .fileName("file1.txt") .timeToLive(Duration.ofDays(1)) .done() .addDocument() .content(inputStream2) .fileName("file2.txt") .timeToLive(Duration.ofDays(1)) .done()- Specified by:
newCreateDocumentBatchCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newDocumentContentGetRequest
Description copied from interface:CamundaClientExperimental: This method is under development. The respective API on compatible clusters cannot be considered production-ready. Thus, this method doesn't work out of the box with all clusters. Until this warning is removed, anything described below may not yet have taken effect, and the interface and its description are subject to change.Command to get a document.
camundaClient .newDocumentContentGetRequest(documentId) .storeId(storeId) .send();
- Specified by:
newDocumentContentGetRequestin interfaceCamundaClient- Parameters:
documentId- the id of the document- Returns:
- a builder for the request
-
newDocumentContentGetRequest
public DocumentContentGetRequest newDocumentContentGetRequest(DocumentReferenceResponse documentReference) Description copied from interface:CamundaClientExperimental: This method is under development. The respective API on compatible clusters cannot be considered production-ready. Thus, this method doesn't work out of the box with all clusters. Until this warning is removed, anything described below may not yet have taken effect, and the interface and its description are subject to change.Command to get a document.
camundaClient .newDocumentContentGetRequest(documentReferenceResponse) .send();
- Specified by:
newDocumentContentGetRequestin interfaceCamundaClient- Parameters:
documentReference- the reference of the document- Returns:
- a builder for the request
-
newCreateDocumentLinkCommand
Description copied from interface:CamundaClientExperimental: This method is under development. The respective API on compatible clusters cannot be considered production-ready. Thus, this method doesn't work out of the box with all clusters. Until this warning is removed, anything described below may not yet have taken effect, and the interface and its description are subject to change.Command to update a document.
camundaClient .newCreateDocumentLinkCommand(documentId) .storeId(storeId) .timeToLive(Duration.ofHours(1)) .send();
- Specified by:
newCreateDocumentLinkCommandin interfaceCamundaClient- Parameters:
documentId- the id of the document- Returns:
- a builder for the command
-
newCreateDocumentLinkCommand
public CreateDocumentLinkCommandStep1 newCreateDocumentLinkCommand(DocumentReferenceResponse documentReference) Description copied from interface:CamundaClientExperimental: This method is under development. The respective API on compatible clusters cannot be considered production-ready. Thus, this method doesn't work out of the box with all clusters. Until this warning is removed, anything described below may not yet have taken effect, and the interface and its description are subject to change.Command to update a document.
camundaClient .newCreateDocumentLinkCommand(documentReferenceResponse) .timeToLive(Duration.ofHours(1)) .send();
- Specified by:
newCreateDocumentLinkCommandin interfaceCamundaClient- Parameters:
documentReference- the reference of the document- Returns:
- a builder for the command
-
newDeleteDocumentCommand
Description copied from interface:CamundaClientExperimental: This method is under development. The respective API on compatible clusters cannot be considered production-ready. Thus, this method doesn't work out of the box with all clusters. Until this warning is removed, anything described below may not yet have taken effect, and the interface and its description are subject to change.Command to update a document.
camundaClient .newDeleteDocumentCommand(documentId) .storeId(storeId) .send();
- Specified by:
newDeleteDocumentCommandin interfaceCamundaClient- Parameters:
documentId- the id of the document- Returns:
- a builder for the command
-
newDeleteDocumentCommand
public DeleteDocumentCommandStep1 newDeleteDocumentCommand(DocumentReferenceResponse documentReference) Description copied from interface:CamundaClientExperimental: This method is under development. The respective API on compatible clusters cannot be considered production-ready. Thus, this method doesn't work out of the box with all clusters. Until this warning is removed, anything described below may not yet have taken effect, and the interface and its description are subject to change.Command to update a document.
camundaClient .newDeleteDocumentCommand(documentReferenceResponse) .send();
- Specified by:
newDeleteDocumentCommandin interfaceCamundaClient- Parameters:
documentReference- the reference of the document- Returns:
- a builder for the command
-
newCreateTenantCommand
Description copied from interface:CamundaClientCommand to create a tenant.camundaClient .newCreateTenantCommand() .tenantId("tenant-id") .name("Tenant Name") .send();- Specified by:
newCreateTenantCommandin interfaceCamundaClient- Returns:
- a builder for the command
-
newUpdateTenantCommand
Description copied from interface:CamundaClientCreates a command to update the name of an existing tenant.Example usage:
camundaClient .newUpdateTenantCommand("my-tenant-id") // Specify the tenant id .name("Updated Tenant Name") // Set the new tenant name .send(); // Send the command to the broker- Specified by:
newUpdateTenantCommandin interfaceCamundaClient- Parameters:
tenantId- the unique identifier of the tenant to be updated- Returns:
- a builder to configure and send the update tenant command
-
newDeleteTenantCommand
Description copied from interface:CamundaClientCommand to delete a tenant.camundaClient .newDeleteTenantCommand(tenantKey) .send();
- Specified by:
newDeleteTenantCommandin interfaceCamundaClient- Parameters:
tenantId- the id of the tenant to delete- Returns:
- a builder for the delete tenant command
-
newAssignMappingToTenantCommand
Description copied from interface:CamundaClientCommand to assign a mapping rule to a tenant.Example usage:
camundaClient .newAssignMappingToTenantCommand(tenantKey) .mappingKey(mappingKey) .send();
This command sends an HTTP PUT request to assign the specified mapping rule to the given tenant.
- Specified by:
newAssignMappingToTenantCommandin interfaceCamundaClient- Parameters:
tenantKey- the unique identifier of the tenant- Returns:
- a builder for the assign mapping rule to tenant command
-
newAssignUserToTenantCommand
Description copied from interface:CamundaClientCommand to assign a user to a tenant.Example usage:
camundaClient .newAssignUserToTenantCommand(tenantId) .username(username) .send();
This command sends an HTTP PUT request to assign the specified user to the given tenant.
- Specified by:
newAssignUserToTenantCommandin interfaceCamundaClient- Parameters:
tenantId- the unique identifier of the tenant- Returns:
- a builder for the assign user to tenant command
-
newAssignGroupToTenantCommand
Description copied from interface:CamundaClientCommand to assign a group to a tenant.Example usage:
camundaClient .newAssignGroupToTenantCommand(tenantKey) .groupKey(groupKey) .send();
- Specified by:
newAssignGroupToTenantCommandin interfaceCamundaClient- Parameters:
tenantKey- the unique identifier of the tenant- Returns:
- a builder to configure and send the assign group to tenant command
-
newUnassignGroupFromTenantCommand
Description copied from interface:CamundaClientCommand to unassign a group from a tenant.Example usage:
camundaClient .newUnassignGroupFromTenantCommand(tenantKey) .groupKey(groupKey) .send();
- Specified by:
newUnassignGroupFromTenantCommandin interfaceCamundaClient- Parameters:
tenantKey- the unique identifier of the tenant- Returns:
- a builder to configure and send the unassign group from tenant command
-
newCreateAuthorizationCommand
Description copied from interface:CamundaClientCommand to create an authorizationExample usage:
camundaClient .newCreateAuthorizationCommand(tenantKey) .ownerId(ownerId) .ownerType(ownerType) .resourceId(resourceId) .resourceType(resourceType) .permission(PermissionType.READ) .send();
- Specified by:
newCreateAuthorizationCommandin interfaceCamundaClient- Returns:
- a builder to configure and send the create authorization command
-
newDeleteAuthorizationCommand
Description copied from interface:CamundaClientCommand to delete an authorizationExample usage:
camundaClient .newDeleteAuthorizationCommand(authorizationKey) .send();
- Specified by:
newDeleteAuthorizationCommandin interfaceCamundaClient- Parameters:
authorizationKey- the key of the authorization to delete- Returns:
- a builder to configure and send the delete authorization command
-
newUpdateAuthorizationCommand
Description copied from interface:CamundaClientCommand to update an authorizationExample usage:
camundaClient .newUpdateAuthorizationCommand(authorizationKey) .ownerId(ownerId) .ownerType(ownerType) .resourceId(resourceId) .resourceType(resourceType) .permissionTypes(Set.of(PermissionType.READ)) .send();
- Specified by:
newUpdateAuthorizationCommandin interfaceCamundaClient- Parameters:
authorizationKey- the key of the authorization to update- Returns:
- a builder to configure and send the update authorization command
-
newRemoveUserFromTenantCommand
Description copied from interface:CamundaClientCommand to remove a user from a tenant.Example usage:
camundaClient .newRemoveUserFromTenantCommand(tenantId) .username(username) .send();
This command sends an HTTP DELETE request to remove the specified user from the given tenant.
- Specified by:
newRemoveUserFromTenantCommandin interfaceCamundaClient- Parameters:
tenantId- the unique identifier of the tenant- Returns:
- a builder for the remove user from tenant command
-
newCompleteCommand
Description copied from interface:JobClientCommand to complete a job.long jobKey = ..; jobClient .newCompleteCommand(jobKey) .variables(json) .send();
If the job is linked to a process instance then this command will complete the related activity and continue the flow.
- Specified by:
newCompleteCommandin interfaceJobClient- Parameters:
jobKey- the key which identifies the job- Returns:
- a builder for the command
-
newCompleteCommand
Description copied from interface:JobClientCommand to complete a job.ActivatedJob job = ..; jobClient .newCompleteCommand(job) .variables(json) .send();
If the job is linked to a process instance then this command will complete the related activity and continue the flow.
- Specified by:
newCompleteCommandin interfaceJobClient- Parameters:
job- the activated job- Returns:
- a builder for the command
-
newFailCommand
Description copied from interface:JobClientCommand 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:
newFailCommandin interfaceJobClient- Parameters:
jobKey- the key which identifies the job- Returns:
- a builder for the command
-
newFailCommand
Description copied from interface:JobClientCommand to mark a job as failed.ActivatedJob job = ..; jobClient .newFailCommand(job) .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:
newFailCommandin interfaceJobClient- Parameters:
job- the activated job- Returns:
- a builder for the command
-
newThrowErrorCommand
Description copied from interface:JobClientCommand 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 process 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:
newThrowErrorCommandin interfaceJobClient- Parameters:
jobKey- the key which identifies the job- Returns:
- a builder for the command
-
newThrowErrorCommand
Description copied from interface:JobClientCommand to report a business error (i.e. non-technical) that occurs while processing a job.ActivatedJob job = ...; String code = ...; jobClient .newThrowErrorCommand(job) .errorCode(code) .send();
The error is handled in the process 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:
newThrowErrorCommandin interfaceJobClient- Parameters:
job- the activated job- Returns:
- a builder for the command
-
newActivateJobsCommand
Description copied from interface:JobClientCommand to activate multiple jobs of a given type.jobClient .newActivateJobsCommand() .jobType("payment") .maxJobsToActivate(10) .workerName("paymentWorker") .timeout(Duration.ofMinutes(10)) .send();The command will try to use
maxJobsToActivatefor givenjobType. If less then the requestedmaxJobsToActivatejobs of thejobTypeare available for activation the returned list will have fewer elements.- Specified by:
newActivateJobsCommandin interfaceJobClient- Returns:
- a builder for the command
-
newStreamJobsCommand
Description copied from interface:JobClientActivates and streams jobs of a specific type.final Consumer<ActivatedJob> consumer = ...; // do something with the consumed job final CamundaFuture<StreamJobsResponse> stream = jobClient .newStreamJobsCommand() .jobType("payment") .consumer(consumer) .workerName("paymentWorker") .timeout(Duration.ofMinutes(10)) .send(); stream.whenComplete((ok, error) -> { // recreate stream if necessary // be careful if you've cancelled the stream explicitly to not recreate it if shutting down }); // You can later terminate the stream by cancelling the future stream.cancel(true);Stream or Activate?
As opposed to
JobClient.newActivateJobsCommand(), which polls each partition until it has activated enough jobs or a timeout has elapsed, this command opens a long living stream onto which activated jobs are pushed. This typically results in lower latency, as jobs are activated and pushed out immediately, instead of waiting to be polled.Limitations
This feature is still under development; as such, there is currently no way to rate limit how many jobs are streamed over a single call. This can be mitigated by opening more streams of the same type, which will ensure work is fairly load balanced.
Additionally, only jobs which are created, retried, or timed out after the command has been registered will be streamed out. For older jobs, you must still use the
JobClient.newActivateJobsCommand(). It's generally recommended that you use theJobWorkerAPI to avoid having to coordinate both calls.Activation
Jobs activated via this command will use the given worker name, activation time out, and fetch variables parameters in the same way as the
JobClient.newActivateJobsCommand().Termination
The stream can be explicitly cancelled by performing one of the following:
- Closing the Camunda client
- Cancelling the result of
FinalCommandStep.send()viaFuture.cancel(boolean)(the argument is irrelevant) - Setting a
FinalCommandStep.requestTimeout(Duration); the stream will be closed once this time out is reached. By default, there is no request time out at all. It's recommended to assign a long-ish time out and recreate your streams from time to time to ensure good load balancing across gateways.
- Specified by:
newStreamJobsCommandin interfaceJobClient- Returns:
- a builder for the command
-