use of org.activiti.engine.impl.persistence.entity.AbstractJobEntity in project Activiti by Activiti.
the class BPMNTimerConverter method convertToBPMNTimer.
public BPMNTimerImpl convertToBPMNTimer(ActivitiEntityEvent internalEvent) {
AbstractJobEntity jobEntity = (AbstractJobEntity) internalEvent.getEntity();
BPMNTimerImpl timer = new BPMNTimerImpl(TimerEventHandler.getActivityIdFromConfiguration(jobEntity.getJobHandlerConfiguration()));
timer.setProcessDefinitionId(internalEvent.getProcessDefinitionId());
timer.setProcessInstanceId(internalEvent.getProcessInstanceId());
timer.setTimerPayload(convertToTimerPayload(jobEntity));
return timer;
}
use of org.activiti.engine.impl.persistence.entity.AbstractJobEntity in project Activiti by Activiti.
the class DefaultJobManager method createExecutableJobFromOtherJob.
protected JobEntity createExecutableJobFromOtherJob(AbstractJobEntity job) {
JobEntity executableJob = processEngineConfiguration.getJobEntityManager().create();
copyJobInfo(executableJob, job);
if (isAsyncExecutorActive()) {
GregorianCalendar gregorianCalendar = new GregorianCalendar();
gregorianCalendar.setTime(processEngineConfiguration.getClock().getCurrentTime());
gregorianCalendar.add(Calendar.MILLISECOND, getAsyncExecutor().getTimerLockTimeInMillis());
executableJob.setLockExpirationTime(gregorianCalendar.getTime());
executableJob.setLockOwner(getAsyncExecutor().getLockOwner());
}
return executableJob;
}
use of org.activiti.engine.impl.persistence.entity.AbstractJobEntity in project Activiti by Activiti.
the class JobRetryCmd method execute.
public Object execute(CommandContext commandContext) {
JobEntity job = commandContext.getJobEntityManager().findById(jobId);
if (job == null) {
return null;
}
ProcessEngineConfiguration processEngineConfig = commandContext.getProcessEngineConfiguration();
ExecutionEntity executionEntity = fetchExecutionEntity(commandContext, job.getExecutionId());
FlowElement currentFlowElement = executionEntity != null ? executionEntity.getCurrentFlowElement() : null;
String failedJobRetryTimeCycleValue = null;
if (currentFlowElement instanceof ServiceTask) {
failedJobRetryTimeCycleValue = ((ServiceTask) currentFlowElement).getFailedJobRetryTimeCycleValue();
}
AbstractJobEntity newJobEntity = null;
if (currentFlowElement == null || failedJobRetryTimeCycleValue == null) {
log.debug("activity or FailedJobRetryTimerCycleValue is null in job " + jobId + ". only decrementing retries.");
if (job.getRetries() <= 1) {
newJobEntity = commandContext.getJobManager().moveJobToDeadLetterJob(job);
} else {
newJobEntity = commandContext.getJobManager().moveJobToTimerJob(job);
}
newJobEntity.setRetries(job.getRetries() - 1);
if (job.getDuedate() == null || JobEntity.JOB_TYPE_MESSAGE.equals(job.getJobType())) {
// add wait time for failed async job
newJobEntity.setDuedate(calculateDueDate(commandContext, processEngineConfig.getAsyncFailedJobWaitTime(), null));
} else {
// add default wait time for failed job
newJobEntity.setDuedate(calculateDueDate(commandContext, processEngineConfig.getDefaultFailedJobWaitTime(), job.getDuedate()));
}
} else {
try {
DurationHelper durationHelper = new DurationHelper(failedJobRetryTimeCycleValue, processEngineConfig.getClock());
int jobRetries = job.getRetries();
if (job.getExceptionMessage() == null) {
// change default retries to the ones configured
jobRetries = durationHelper.getTimes();
}
if (jobRetries <= 1) {
newJobEntity = commandContext.getJobManager().moveJobToDeadLetterJob(job);
} else {
newJobEntity = commandContext.getJobManager().moveJobToTimerJob(job);
}
newJobEntity.setDuedate(durationHelper.getDateAfter());
if (job.getExceptionMessage() == null) {
// is it the first exception
log.debug("Applying JobRetryStrategy '" + failedJobRetryTimeCycleValue + "' the first time for job " + job.getId() + " with " + durationHelper.getTimes() + " retries");
} else {
log.debug("Decrementing retries of JobRetryStrategy '" + failedJobRetryTimeCycleValue + "' for job " + job.getId());
}
newJobEntity.setRetries(jobRetries - 1);
} catch (Exception e) {
throw new ActivitiException("failedJobRetryTimeCylcle has wrong format:" + failedJobRetryTimeCycleValue, exception);
}
}
if (exception != null) {
newJobEntity.setExceptionMessage(exception.getMessage());
newJobEntity.setExceptionStacktrace(getExceptionStacktrace());
}
// Dispatch both an update and a retry-decrement event
ActivitiEventDispatcher eventDispatcher = commandContext.getEventDispatcher();
if (eventDispatcher.isEnabled()) {
eventDispatcher.dispatchEvent(ActivitiEventBuilder.createEntityEvent(ActivitiEventType.ENTITY_UPDATED, newJobEntity));
eventDispatcher.dispatchEvent(ActivitiEventBuilder.createEntityEvent(ActivitiEventType.JOB_RETRIES_DECREMENTED, newJobEntity));
}
return null;
}
Aggregations