public void execute( String configuration, ExecutionEntity execution, CommandContext commandContext, String tenantId) { String activityId = getKey(configuration); ActivityImpl intermediateEventActivity = execution.getProcessDefinition().findActivity(activityId); ensureNotNull( "Error while firing timer: intermediate event activity " + configuration + " not found", "intermediateEventActivity", intermediateEventActivity); try { if (activityId.equals(execution.getActivityId())) { // Regular Intermediate timer catch execution.signal("signal", null); } else { // Event based gateway execution.executeEventHandlerActivity(intermediateEventActivity); } } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new ProcessEngineException("exception during timer execution: " + e.getMessage(), e); } }
public UserOperationLogContextEntryBuilder inContextOf(ExecutionEntity execution) { entry.setProcessInstanceId(execution.getProcessInstanceId()); entry.setProcessDefinitionId(execution.getProcessDefinitionId()); ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) execution.getProcessDefinition(); entry.setProcessDefinitionKey(processDefinition.getKey()); entry.setDeploymentId(processDefinition.getDeploymentId()); return this; }
protected Integer getProcessDefinitionPriority( ExecutionEntity execution, JobDeclaration<?> jobDeclaration) { if (execution != null) { ProcessDefinitionImpl processDefinition = execution.getProcessDefinition(); ParameterValueProvider priorityProvider = (ParameterValueProvider) processDefinition.getProperty(BpmnParse.PROPERTYNAME_JOB_PRIORITY); if (priorityProvider != null) { return evaluateValueProvider(priorityProvider, execution, jobDeclaration); } } return null; }
protected void assignExecutionsToActivities(List<ExecutionEntity> leaves) { for (ExecutionEntity leaf : leaves) { ScopeImpl activity = leaf.getActivity(); if (activity != null) { if (leaf.getActivityInstanceId() != null) { EnsureUtil.ensureNotNull("activity", activity); submitExecution(leaf, activity); } mergeScopeExecutions(leaf); } else if (leaf.isProcessInstanceExecution()) { submitExecution(leaf, leaf.getProcessDefinition()); } } }
public UserOperationLogContextEntryBuilder inContextOf( ExecutionEntity processInstance, List<PropertyChange> propertyChanges) { if (propertyChanges == null || propertyChanges.isEmpty()) { if (OPERATION_TYPE_CREATE.equals(entry.getOperationType())) { propertyChanges = Arrays.asList(PropertyChange.EMPTY_CHANGE); } } entry.setPropertyChanges(propertyChanges); entry.setProcessInstanceId(processInstance.getProcessInstanceId()); entry.setProcessDefinitionId(processInstance.getProcessDefinitionId()); entry.setExecutionId(processInstance.getId()); entry.setCaseInstanceId(processInstance.getCaseInstanceId()); ResourceDefinitionEntity definition = processInstance.getProcessDefinition(); if (definition != null) { entry.setProcessDefinitionKey(definition.getKey()); entry.setDeploymentId(definition.getDeploymentId()); } return this; }
protected ActivityImpl getCurrentActivity(CommandContext commandContext, JobEntity job) { String type = job.getJobHandlerType(); ActivityImpl activity = null; String configuration = job.getJobHandlerConfiguration(); if (TimerExecuteNestedActivityJobHandler.TYPE.equals(type) || TimerCatchIntermediateEventJobHandler.TYPE.equals(type)) { ExecutionEntity execution = fetchExecutionEntity(job.getExecutionId()); if (execution != null) { String acitivtyId = TimerEventJobHandler.getKey(configuration); activity = execution.getProcessDefinition().findActivity(acitivtyId); } } else if (TimerStartEventJobHandler.TYPE.equals(type)) { DeploymentCache deploymentCache = Context.getProcessEngineConfiguration().getDeploymentCache(); String definitionKey = TimerEventJobHandler.getKey(configuration); ProcessDefinitionEntity processDefinition = deploymentCache.findDeployedLatestProcessDefinitionByKey(definitionKey); if (processDefinition != null) { activity = processDefinition.getInitial(); } } else if (AsyncContinuationJobHandler.TYPE.equals(type)) { ExecutionEntity execution = fetchExecutionEntity(job.getExecutionId()); if (execution != null) { activity = execution.getActivity(); } } else { // noop, because activity type is not supported } return activity; }