public static HistoricJobLogDto fromHistoricJobLog(HistoricJobLog historicJobLog) { HistoricJobLogDto result = new HistoricJobLogDto(); result.id = historicJobLog.getId(); result.timestamp = historicJobLog.getTimestamp(); result.removalTime = historicJobLog.getRemovalTime(); result.jobId = historicJobLog.getJobId(); result.jobDueDate = historicJobLog.getJobDueDate(); result.jobRetries = historicJobLog.getJobRetries(); result.jobPriority = historicJobLog.getJobPriority(); result.jobExceptionMessage = historicJobLog.getJobExceptionMessage(); result.jobDefinitionId = historicJobLog.getJobDefinitionId(); result.jobDefinitionType = historicJobLog.getJobDefinitionType(); result.jobDefinitionConfiguration = historicJobLog.getJobDefinitionConfiguration(); result.activityId = historicJobLog.getActivityId(); result.executionId = historicJobLog.getExecutionId(); result.processInstanceId = historicJobLog.getProcessInstanceId(); result.processDefinitionId = historicJobLog.getProcessDefinitionId(); result.processDefinitionKey = historicJobLog.getProcessDefinitionKey(); result.deploymentId = historicJobLog.getDeploymentId(); result.tenantId = historicJobLog.getTenantId(); result.rootProcessInstanceId = historicJobLog.getRootProcessInstanceId(); result.creationLog = historicJobLog.isCreationLog(); result.failureLog = historicJobLog.isFailureLog(); result.successLog = historicJobLog.isSuccessLog(); result.deletionLog = historicJobLog.isDeletionLog(); return result; }
protected void assertCommonMonitorJobLogProperties(Batch batch, HistoricJobLog jobLog) { assertNotNull(jobLog); assertEquals(batch.getMonitorJobDefinitionId(), jobLog.getJobDefinitionId()); assertEquals(BatchMonitorJobHandler.TYPE, jobLog.getJobDefinitionType()); assertEquals(batch.getId(), jobLog.getJobDefinitionConfiguration()); assertNull(jobLog.getDeploymentId()); assertNull(jobLog.getProcessDefinitionId()); assertNull(jobLog.getExecutionId()); } }
assertTrue(jobLog.isCreationLog()); assertEquals(batch.getSeedJobDefinitionId(), jobLog.getJobDefinitionId()); assertEquals(BatchSeedJobHandler.TYPE, jobLog.getJobDefinitionType()); assertEquals(batch.getId(), jobLog.getJobDefinitionConfiguration()); assertEquals(START_DATE, jobLog.getTimestamp()); assertNull(jobLog.getDeploymentId()); assertNull(jobLog.getProcessDefinitionId()); assertNull(jobLog.getExecutionId()); assertEquals(currentTime, jobLog.getJobDueDate()); assertTrue(jobLog.isSuccessLog()); assertEquals(batch.getSeedJobDefinitionId(), jobLog.getJobDefinitionId()); assertEquals(BatchSeedJobHandler.TYPE, jobLog.getJobDefinitionType()); assertEquals(batch.getId(), jobLog.getJobDefinitionConfiguration()); assertEquals(executionDate, jobLog.getTimestamp()); assertNull(jobLog.getDeploymentId()); assertNull(jobLog.getProcessDefinitionId()); assertNull(jobLog.getExecutionId()); assertEquals(currentTime, jobLog.getJobDueDate());
@Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricJobLogTest.testStartTimerEvent.bpmn20.xml"}) public void testStartTimerEventJobHandlerType() { Job job = managementService .createJobQuery() .singleResult(); HistoricJobLog historicJob = historyService .createHistoricJobLogQuery() .jobId(job.getId()) .singleResult(); assertNotNull(historicJob); assertEquals(job.getId(), historicJob.getJobId()); assertEquals(job.getJobDefinitionId(), historicJob.getJobDefinitionId()); assertEquals("theStart", historicJob.getActivityId()); assertEquals(TimerStartEventJobHandler.TYPE, historicJob.getJobDefinitionType()); assertEquals("CYCLE: 0 0/5 * * * ?", historicJob.getJobDefinitionConfiguration()); assertEquals(job.getDuedate(), historicJob.getJobDueDate()); }
@Test public void shouldNotResolveJobLog() { // given ClockUtil.setCurrentTime(START_DATE); testRule.deploy(CALLED_PROCESS); repositoryService.suspendProcessDefinitionByKey(CALLED_PROCESS_KEY, true, new Date(1363608000000L)); // when HistoricJobLog jobLog = historyService.createHistoricJobLogQuery().singleResult(); // assume assertThat(jobLog, notNullValue()); // then assertThat(jobLog.getRemovalTime(), nullValue()); // cleanup managementService.deleteJob(jobLog.getJobId()); clearJobLog(jobLog.getJobId()); }
assertTrue(jobLog.isCreationLog()); assertEquals(START_DATE, jobLog.getTimestamp()); assertEquals(currentTime, jobLog.getJobDueDate()); assertTrue(jobLog.isSuccessLog()); assertEquals(executionDate, jobLog.getTimestamp()); assertEquals(currentTime, jobLog.getJobDueDate()); assertTrue(jobLog.isCreationLog()); assertEquals(executionDate, jobLog.getTimestamp()); assertEquals(monitorJobDueDate, jobLog.getJobDueDate()); assertTrue(jobLog.isSuccessLog()); assertEquals(executionDate, jobLog.getTimestamp()); assertEquals(monitorJobDueDate, jobLog.getJobDueDate());
@Test public void getHistoricJobLogExceptionStacktraceWithAuthenticatedTenant() { testRule.deployForTenant(TENANT_ONE, FAILING_BPMN_PROCESS); String processInstanceId = startProcessInstance(null); testRule.executeAvailableJobs(); HistoricJobLog log = historyService.createHistoricJobLogQuery() .processInstanceId(processInstanceId).failureLog().listPage(0, 1).get(0); identityService.setAuthentication("user", null, Arrays.asList(TENANT_ONE)); String historicJobLogExceptionStacktrace = historyService.getHistoricJobLogExceptionStacktrace(log.getId()); assertThat(historicJobLogExceptionStacktrace, notNullValue()); }
@Deployment public void testThrowExceptionWithoutMessage() { // given runtimeService.startProcessInstanceByKey("process").getId(); String jobId = managementService.createJobQuery().singleResult().getId(); // when try { managementService.executeJob(jobId); fail(); } catch (Exception e) { // expected } // then HistoricJobLog failedHistoricJobLog = historyService .createHistoricJobLogQuery() .failureLog() .singleResult(); String failedHistoricJobLogId = failedHistoricJobLog.getId(); assertNull(failedHistoricJobLog.getJobExceptionMessage()); String stacktrace = historyService.getHistoricJobLogExceptionStacktrace(failedHistoricJobLogId); assertNotNull(stacktrace); assertTextPresent(ThrowExceptionWithoutMessageDelegate.class.getName(), stacktrace); }
@Test public void shouldNotResolveJobLog() { // given testRule.deploy(CALLED_PROCESS); repositoryService.suspendProcessDefinitionByKey(CALLED_PROCESS_KEY, true, new Date()); // when HistoricJobLog jobLog = historyService.createHistoricJobLogQuery().singleResult(); // assume assertThat(jobLog, notNullValue()); // then assertThat(jobLog.getRootProcessInstanceId(), nullValue()); // cleanup managementService.deleteJob(jobLog.getJobId()); clearJobLog(jobLog.getJobId()); }
@Override public String getProperty(HistoricJobLog obj) { return obj.getJobId(); } });
@Override public String getProperty(HistoricJobLog obj) { return obj.getActivityId(); } });
@Override public String getProperty(HistoricJobLog obj) { return obj.getExecutionId(); } });
@Override public Date getProperty(HistoricJobLog obj) { return obj.getJobDueDate(); } });
@Override public String getProperty(HistoricJobLog obj) { return obj.getJobDefinitionId(); } });
@Override public String getProperty(HistoricJobLog obj) { return obj.getDeploymentId(); } });
@Deployment public void testThrowExceptionMessageTruncation() { // given String exceptionMessage = randomString(10000); ThrowExceptionWithOverlongMessageDelegate delegate = new ThrowExceptionWithOverlongMessageDelegate(exceptionMessage); runtimeService.startProcessInstanceByKey("process", Variables.createVariables().putValue("delegate", delegate)); Job job = managementService.createJobQuery().singleResult(); // when try { managementService.executeJob(job.getId()); fail(); } catch (Exception e) { // expected } // then HistoricJobLog failedHistoricJobLog = historyService .createHistoricJobLogQuery() .failureLog() .singleResult(); assertNotNull(failedHistoricJobLog); assertEquals(exceptionMessage.substring(0, JobEntity.MAX_EXCEPTION_MESSAGE_LENGTH), failedHistoricJobLog.getJobExceptionMessage()); }
assertTrue(jobLog.isCreationLog()); assertEquals(batch.getBatchJobDefinitionId(), jobLog.getJobDefinitionId()); assertEquals(Batch.TYPE_PROCESS_INSTANCE_MIGRATION, jobLog.getJobDefinitionType()); assertEquals(batch.getId(), jobLog.getJobDefinitionConfiguration()); assertEquals(START_DATE, jobLog.getTimestamp()); assertEquals(sourceDeploymentId, jobLog.getDeploymentId()); assertNull(jobLog.getProcessDefinitionId()); assertNull(jobLog.getExecutionId()); assertEquals(currentTime, jobLog.getJobDueDate()); assertTrue(jobLog.isSuccessLog()); assertEquals(batch.getBatchJobDefinitionId(), jobLog.getJobDefinitionId()); assertEquals(Batch.TYPE_PROCESS_INSTANCE_MIGRATION, jobLog.getJobDefinitionType()); assertEquals(batch.getId(), jobLog.getJobDefinitionConfiguration()); assertEquals(executionDate, jobLog.getTimestamp()); assertEquals(sourceDeploymentId, jobLog.getDeploymentId()); assertNull(jobLog.getProcessDefinitionId()); assertNull(jobLog.getExecutionId()); assertEquals(currentTime, jobLog.getJobDueDate());
@Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricJobLogTest.testBoundaryTimerEvent.bpmn20.xml"}) public void testBoundaryTimerEventJobHandlerType() { runtimeService.startProcessInstanceByKey("process"); Job job = managementService .createJobQuery() .singleResult(); HistoricJobLog historicJob = historyService .createHistoricJobLogQuery() .jobId(job.getId()) .singleResult(); assertNotNull(historicJob); assertEquals(job.getId(), historicJob.getJobId()); assertEquals(job.getJobDefinitionId(), historicJob.getJobDefinitionId()); assertEquals("timer", historicJob.getActivityId()); assertEquals(TimerExecuteNestedActivityJobHandler.TYPE, historicJob.getJobDefinitionType()); assertEquals("DURATION: PT5M", historicJob.getJobDefinitionConfiguration()); assertEquals(job.getDuedate(), historicJob.getJobDueDate()); }
protected void assertCommonMonitorJobLogProperties(Batch batch, HistoricJobLog jobLog) { assertNotNull(jobLog); assertEquals(batch.getMonitorJobDefinitionId(), jobLog.getJobDefinitionId()); assertEquals(BatchMonitorJobHandler.TYPE, jobLog.getJobDefinitionType()); assertEquals(batch.getId(), jobLog.getJobDefinitionConfiguration()); assertNull(jobLog.getDeploymentId()); assertNull(jobLog.getProcessDefinitionId()); assertNull(jobLog.getExecutionId()); }
@Test public void shouldResolveBatchJobLog() { // given processEngineConfiguration.setBatchOperationHistoryTimeToLive("P5D"); processEngineConfiguration.initHistoryCleanup(); testRule.deploy(CALLED_PROCESS); testRule.deploy(CALLING_PROCESS); String processInstanceId = runtimeService.startProcessInstanceByKey(CALLED_PROCESS_KEY).getId(); ClockUtil.setCurrentTime(START_DATE); Batch batch = runtimeService.deleteProcessInstancesAsync(Collections.singletonList(processInstanceId), "aDeleteReason"); HistoricJobLog jobLog = historyService.createHistoricJobLogQuery().singleResult(); // assume assertThat(jobLog.getRemovalTime(), is(addDays(START_DATE, 5))); // when managementService.executeJob(jobLog.getJobId()); List<HistoricJobLog> jobLogs = historyService.createHistoricJobLogQuery().list(); // then assertThat(jobLogs.get(0).getRemovalTime(), is(addDays(START_DATE, 5))); assertThat(jobLogs.get(1).getRemovalTime(), is(addDays(START_DATE, 5))); // cleanup managementService.deleteBatch(batch.getId(), true); }