cancelJobExecution method
Cancels the execution of a job for a given thing.
May throw InvalidRequestException. May throw InvalidStateTransitionException. May throw ResourceNotFoundException. May throw ThrottlingException. May throw ServiceUnavailableException. May throw VersionConflictException.
Parameter jobId
:
The ID of the job to be canceled.
Parameter thingName
:
The name of the thing whose execution of the job will be canceled.
Parameter expectedVersion
:
(Optional) The expected current version of the job execution. Each time
you update the job execution, its version is incremented. If the version
of the job execution stored in Jobs does not match, the update is rejected
with a VersionMismatch error, and an ErrorResponse that contains the
current job execution status data is returned. (This makes it unnecessary
to perform a separate DescribeJobExecution request in order to obtain the
job execution status data.)
Parameter force
:
(Optional) If true
the job execution will be canceled if it
has status IN_PROGRESS or QUEUED, otherwise the job execution will be
canceled only if it has status QUEUED. If you attempt to cancel a job
execution that is IN_PROGRESS, and you do not set force
to
true
, then an InvalidStateTransitionException
will be thrown. The default is false
.
Canceling a job execution which is "IN_PROGRESS", will cause the device to be unable to update the job execution status. Use caution and ensure that the device is able to recover to a valid state.
Parameter statusDetails
:
A collection of name/value pairs that describe the status of the job
execution. If not specified, the statusDetails are unchanged. You can
specify at most 10 name/value pairs.
Implementation
Future<void> cancelJobExecution({
required String jobId,
required String thingName,
int? expectedVersion,
bool? force,
Map<String, String>? statusDetails,
}) async {
ArgumentError.checkNotNull(jobId, 'jobId');
_s.validateStringLength(
'jobId',
jobId,
1,
64,
isRequired: true,
);
ArgumentError.checkNotNull(thingName, 'thingName');
_s.validateStringLength(
'thingName',
thingName,
1,
128,
isRequired: true,
);
final $query = <String, List<String>>{
if (force != null) 'force': [force.toString()],
};
final $payload = <String, dynamic>{
if (expectedVersion != null) 'expectedVersion': expectedVersion,
if (statusDetails != null) 'statusDetails': statusDetails,
};
await _protocol.send(
payload: $payload,
method: 'PUT',
requestUri:
'/things/${Uri.encodeComponent(thingName)}/jobs/${Uri.encodeComponent(jobId)}/cancel',
queryParams: $query,
exceptionFnMap: _exceptionFns,
);
}