public IncidentRecord createJobIncident() { final IncidentRecord expectedRecord = new IncidentRecord(); expectedRecord.setJobKey(1234); expectedRecord.setErrorMessage("Error because of error"); expectedRecord.setErrorType(ErrorType.EXTRACT_VALUE_ERROR); return expectedRecord; }
public IncidentRecord createJobIncident() { final IncidentRecord expectedRecord = new IncidentRecord(); expectedRecord.setJobKey(1234); expectedRecord.setErrorMessage("Error because of error"); expectedRecord.setErrorType(ErrorType.EXTRACT_VALUE_ERROR); return expectedRecord; }
@Test public void shouldNotOverwritePreviousRecord() { // given final long key = 1L; final IncidentRecord writtenRecord = createJobIncident(); // when incidentState.createIncident(key, writtenRecord); writtenRecord.setJobKey(2048); // then final IncidentRecord readRecord = incidentState.getIncidentRecord(1L); assertThat(readRecord.getJobKey()).isNotEqualTo(writtenRecord.getJobKey()); assertThat(readRecord.getJobKey()).isEqualTo(1234); assertThat(writtenRecord.getJobKey()).isEqualTo(2048); }
@Test public void shouldNotOverwritePreviousRecord() { // given final long key = 1L; final IncidentRecord writtenRecord = createJobIncident(); // when incidentState.createIncident(key, writtenRecord); writtenRecord.setJobKey(2048); // then final IncidentRecord readRecord = incidentState.getIncidentRecord(1L); assertThat(readRecord.getJobKey()).isNotEqualTo(writtenRecord.getJobKey()); assertThat(readRecord.getJobKey()).isEqualTo(1234); assertThat(writtenRecord.getJobKey()).isEqualTo(2048); }
@Test public void shouldNotCreateIncidentIfNoFailedJob() { // given final IncidentRecord incidentRecord = new IncidentRecord(); incidentRecord.setJobKey(1); // when envRule.writeCommand(IncidentIntent.CREATE, incidentRecord); // trigger incident creation // then streamProcessorRule.awaitIncidentRejection(IncidentIntent.CREATE); final List<TypedRecord<IncidentRecord>> incidentEvents = envRule.events().onlyIncidentRecords().collect(Collectors.toList()); assertThat(incidentEvents) .extracting(r -> r.getMetadata()) .extracting(m -> m.getRecordType(), m -> m.getIntent()) .containsExactly( tuple(RecordType.COMMAND, IncidentIntent.CREATE), tuple(RecordType.COMMAND_REJECTION, IncidentIntent.CREATE)); }
@Test public void shouldNotCreateIncidentIfNoFailedJob() { // given final IncidentRecord incidentRecord = new IncidentRecord(); incidentRecord.setJobKey(1); // when envRule.writeCommand(IncidentIntent.CREATE, incidentRecord); // trigger incident creation // then streamProcessorRule.awaitIncidentRejection(IncidentIntent.CREATE); final List<TypedRecord<IncidentRecord>> incidentEvents = envRule.events().onlyIncidentRecords().collect(Collectors.toList()); assertThat(incidentEvents) .extracting(r -> r.getMetadata()) .extracting(m -> m.getRecordType(), m -> m.getIntent()) .containsExactly( tuple(RecordType.COMMAND, IncidentIntent.CREATE), tuple(RecordType.COMMAND_REJECTION, IncidentIntent.CREATE)); }
@Override public void processRecord( TypedRecord<JobRecord> event, TypedResponseWriter responseWriter, TypedStreamWriter streamWriter) { final JobRecord value = event.getValue(); if (value.getRetries() <= 0) { final JobHeaders jobHeaders = value.getHeaders(); final DirectBuffer jobErrorMessage = value.getErrorMessage(); DirectBuffer incidentErrorMessage = DEFAULT_ERROR_MESSAGE; if (jobErrorMessage.capacity() > 0) { incidentErrorMessage = jobErrorMessage; } incidentEvent.reset(); incidentEvent .setErrorType(ErrorType.JOB_NO_RETRIES) .setErrorMessage(incidentErrorMessage) .setBpmnProcessId(jobHeaders.getBpmnProcessId()) .setWorkflowInstanceKey(jobHeaders.getWorkflowInstanceKey()) .setElementId(jobHeaders.getElementId()) .setElementInstanceKey(jobHeaders.getElementInstanceKey()) .setJobKey(event.getKey()); streamWriter.appendNewCommand(IncidentIntent.CREATE, incidentEvent); } } }
.setElementId(jobHeaders.getElementId()) .setElementInstanceKey(jobHeaders.getElementInstanceKey()) .setJobKey(event.getKey()) .setVariableScopeKey(jobHeaders.getElementInstanceKey());
.setErrorMessage(errorMessage) .setErrorType(errorType) .setJobKey(jobKey);
.setErrorMessage(errorMessage) .setErrorType(errorType) .setJobKey(jobKey) .setVariableScopeKey(elementInstanceKey);