public void setProcessDefinition(final SProcessDefinition processDefinition) { this.processDefinition = processDefinition; final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final List<SDataDefinition> dataDefinitions = processContainer.getDataDefinitions(); dataMap = new HashMap<>(dataDefinitions.size()); invertedDataMap = new HashMap<>(dataDefinitions.size()); for (final SDataDefinition dataDef : dataDefinitions) { dataMap.put(dataDef.getName(), dataDef.getDefaultValueExpression()); invertedDataMap.put(dataDef.getDefaultValueExpression(), dataDef.getName()); } }
boolean isBusinessData(final SProcessDefinition processDefinition, final SMultiInstanceLoopCharacteristics miLoop) { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SBusinessDataDefinition businessData = processContainer.getBusinessDataDefinition(miLoop.getLoopDataOutputRef()); return businessData != null; }
public List<SConnectorDefinition> getConnectorDefinitions(SProcessDefinition processDefinition, SFlowNodeInstance flowNodeInstance, ConnectorEvent connectorEvent) { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SFlowNodeDefinition flowNodeDefinition = processContainer.getFlowNode(flowNodeInstance.getFlowNodeDefinitionId()); if (flowNodeDefinition == null) { return Collections.emptyList(); } return flowNodeDefinition.getConnectors(connectorEvent); }
private boolean isEventWithTrigger(SFlowNodeInstance flowNodeInstance, SProcessDefinition processDefinition) { if (processDefinition != null) { SFlowNodeDefinition flowNodeDefinition = processDefinition.getProcessContainer().getFlowNode(flowNodeInstance.getFlowNodeDefinitionId()); return flowNodeDefinition instanceof SEventDefinition && !((SEventDefinition) flowNodeDefinition).getEventTriggers().isEmpty(); } return false; }
@Override protected void beforeOnEnter(final SProcessDefinition processDefinition, final SFlowNodeInstance flowNodeInstance) throws SActivityStateExecutionException { stateBehaviors.handleCatchEvents(processDefinition, flowNodeInstance); stateBehaviors.createData(processDefinition, flowNodeInstance); stateBehaviors.mapActors(flowNodeInstance, processDefinition.getProcessContainer()); }
@Override protected SConnectorDefinition getSConnectorDefinition(final ProcessDefinitionService processDefinitionService) throws SProcessDefinitionNotFoundException, SBonitaReadException, SConnectorDefinitionNotFoundException { final SProcessDefinition processDefinition = processDefinitionService.getProcessDefinition(processDefinitionId); final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); // final SConnectorDefinition sConnectorDefinition = processContainer.getConnectorDefinition(connectorDefinitionId);// FIXME: Uncomment when generate id final SConnectorDefinition sConnectorDefinition = processContainer.getConnectorDefinition(connectorDefinitionName); if (sConnectorDefinition == null) { throw new SConnectorDefinitionNotFoundException(connectorDefinitionName); } return sConnectorDefinition; }
private void deleteJobs(final SProcessDefinition processDefinition) throws SSchedulerException { final List<SStartEventDefinition> startEvents = processDefinition.getProcessContainer().getStartEvents(); for (final SStartEventDefinition startEvent : startEvents) { if (!startEvent.getTimerEventTriggerDefinitions().isEmpty()) { scheduler.delete(JobNameBuilder.getTimerEventJobName(processDefinitionId, startEvent, null)); } } }
protected List<STransitionDefinition> getTransitionDefinitions(final SGatewayInstance gatewayInstance, final SProcessDefinition processDefinition) { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SFlowNodeDefinition gatewayDefinition = processContainer.getFlowNode(gatewayInstance.getFlowNodeDefinitionId()); return gatewayDefinition.getIncomingTransitions(); }
private void deleteDataInstancesIfNecessary(final SProcessInstance processInstance, final SProcessDefinition processDefinition) throws SDataInstanceException { boolean dataPresent = true; if (processDefinition != null) { dataPresent = processDefinition.getProcessContainer().getDataDefinitions().size() > 0; } dataInstanceService.deleteLocalDataInstances(processInstance.getId(), DataInstanceContainer.PROCESS_INSTANCE.toString(), dataPresent); }
@Override public StateCode execute(final SProcessDefinition processDefinition, final SFlowNodeInstance instance) throws SActivityStateExecutionException { final SActivityDefinition activityDef = (SActivityDefinition) processDefinition.getProcessContainer().getFlowNode(instance.getFlowNodeDefinitionId()); if (!activityDef.getBoundaryEventDefinitions().isEmpty()) { final SActivityInstance activityInstance = (SActivityInstance) instance; stateBehaviors.interruptAttachedBoundaryEvent(processDefinition, activityInstance, getBoundaryCategoryState()); } return StateCode.DONE; }
@Override protected void beforeConnectors(SProcessDefinition processDefinition, SFlowNodeInstance flowNodeInstance) throws SActivityStateExecutionException { stateBehaviors.handleCatchEvents(processDefinition, flowNodeInstance); stateBehaviors.createData(processDefinition, flowNodeInstance); stateBehaviors.createAttachedBoundaryEvents(processDefinition, (SActivityInstance) flowNodeInstance); stateBehaviors.mapActors(flowNodeInstance, processDefinition.getProcessContainer()); }
@Override protected void onEnterToOnFinish(final SProcessDefinition processDefinition, final SFlowNodeInstance flowNodeInstance) throws SActivityStateExecutionException { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); stateBehaviors.updateDisplayNameAndDescription(processDefinition, flowNodeInstance); stateBehaviors.mapActors(flowNodeInstance, processContainer); stateBehaviors.handleCallActivity(processDefinition, flowNodeInstance); stateBehaviors.handleThrowEvent(processDefinition, flowNodeInstance); }
@Override public StateCode execute(final SProcessDefinition processDefinition, final SFlowNodeInstance instance) throws SActivityStateExecutionException { final SCatchEventDefinition catchEventDef = (SCatchEventDefinition) processDefinition.getProcessContainer().getFlowNode( instance.getFlowNodeDefinitionId()); try { final SIntermediateCatchEventInstance intermediateCatchEventInstance = (SIntermediateCatchEventInstance) instance; waitingEventsInterrupter.interruptWaitingEvents(processDefinition, intermediateCatchEventInstance, catchEventDef); } catch (final SBonitaException e) { throw new SActivityStateExecutionException(e); } return StateCode.DONE; }
@Override public void execute() throws SBonitaException { final SProcessDefinition processDefinition = definitionService.getProcessDefinition(userTaskInstance.getProcessDefinitionId()); final SUserTaskDefinition userTaskDefinition = (SUserTaskDefinition) processDefinition.getProcessContainer().getFlowNode( userTaskInstance.getFlowNodeDefinitionId()); contract = userTaskDefinition.getContract(); }
@Override public void execute() throws SBonitaException { final SProcessDefinition processDefinition = definitionService.getProcessDefinition(userTaskInstance.getProcessDefinitionId()); final SUserTaskDefinition userTaskDefinition = (SUserTaskDefinition) processDefinition.getProcessContainer().getFlowNode( userTaskInstance.getFlowNodeDefinitionId()); contract = userTaskDefinition.getContract(); }
public void handleEventSubProcess(final SProcessDefinition sDefinition, final SProcessInstance parentProcessInstance) throws SBonitaException { final Set<SActivityDefinition> activities = sDefinition.getProcessContainer().getActivities(); for (final SActivityDefinition activity : activities) { if (SFlowNodeType.SUB_PROCESS.equals(activity.getType()) && ((SSubProcessDefinition) activity).isTriggeredByEvent()) { final SSubProcessDefinition eventSubProcess = (SSubProcessDefinition) activity; final SStartEventDefinition sStartEventDefinition = eventSubProcess.getSubProcessContainer().getStartEvents().get(0); handleEventSubProcess(sDefinition, sStartEventDefinition, activity.getId(), parentProcessInstance); } } }
private boolean executePostThrowEventHandlers(final SProcessDefinition sProcessDefinition, final SProcessInstance sProcessInstance, final SFlowNodeInstance child) throws SBonitaException { boolean hasActionsToExecute = false; if (sProcessInstance.hasBeenInterruptedByEvent()) { final SFlowNodeInstance endEventInstance = activityInstanceService.getFlowNodeInstance(sProcessInstance.getInterruptingEventId()); final SEndEventDefinition endEventDefinition = (SEndEventDefinition) sProcessDefinition.getProcessContainer().getFlowNode( endEventInstance.getFlowNodeDefinitionId()); hasActionsToExecute = eventsHandler.handlePostThrowEvent(sProcessDefinition, endEventDefinition, (SThrowEventInstance) endEventInstance, child); flowNodeExecutor.archiveFlowNodeInstance(endEventInstance, true, sProcessDefinition.getId()); } return hasActionsToExecute; }
private void deleteJobsOnEventSubProcess(final SProcessDefinition processDefinition, final SProcessInstance sProcessInstance) { final Set<SSubProcessDefinition> sSubProcessDefinitions = processDefinition.getProcessContainer().getSubProcessDefinitions(); for (final SSubProcessDefinition sSubProcessDefinition : sSubProcessDefinitions) { final List<SStartEventDefinition> startEventsOfSubProcess = sSubProcessDefinition.getSubProcessContainer().getStartEvents(); deleteJobsOnEventSubProcess(processDefinition, sProcessInstance, sSubProcessDefinition, startEventsOfSubProcess); final List<SIntermediateCatchEventDefinition> intermediateCatchEvents = sSubProcessDefinition.getSubProcessContainer().getIntermediateCatchEvents(); deleteJobsOnEventSubProcess(processDefinition, sProcessInstance, sSubProcessDefinition, intermediateCatchEvents); final List<SBoundaryEventDefinition> sBoundaryEventDefinitions = sSubProcessDefinition.getSubProcessContainer().getBoundaryEvents(); deleteJobsOnEventSubProcess(processDefinition, sProcessInstance, sSubProcessDefinition, sBoundaryEventDefinitions); } }
private void deleteJobsOnEventSubProcess(final SProcessDefinition processDefinition, final SProcessInstance sProcessInstance) { final Set<SSubProcessDefinition> sSubProcessDefinitions = processDefinition.getProcessContainer().getSubProcessDefinitions(); for (final SSubProcessDefinition sSubProcessDefinition : sSubProcessDefinitions) { final List<SStartEventDefinition> startEventsOfSubProcess = sSubProcessDefinition.getSubProcessContainer().getStartEvents(); deleteJobsOnEventSubProcess(processDefinition, sProcessInstance, sSubProcessDefinition, startEventsOfSubProcess); final List<SIntermediateCatchEventDefinition> intermediateCatchEvents = sSubProcessDefinition.getSubProcessContainer().getIntermediateCatchEvents(); deleteJobsOnEventSubProcess(processDefinition, sProcessInstance, sSubProcessDefinition, intermediateCatchEvents); final List<SBoundaryEventDefinition> sBoundaryEventDefinitions = sSubProcessDefinition.getSubProcessContainer().getBoundaryEvents(); deleteJobsOnEventSubProcess(processDefinition, sProcessInstance, sSubProcessDefinition, sBoundaryEventDefinitions); } }
private void throwContractViolationExceptionIfContractIsInvalid(final Map<String, Serializable> inputs, final TenantServiceAccessor tenantAccessor, final SFlowNodeInstance flowNodeInstance) throws SBonitaReadException, SProcessDefinitionNotFoundException, SContractViolationException { final SProcessDefinition processDefinition = tenantAccessor.getProcessDefinitionService() .getProcessDefinition(flowNodeInstance.getProcessDefinitionId()); final SUserTaskDefinition userTaskDefinition = (SUserTaskDefinition) processDefinition.getProcessContainer().getFlowNode( flowNodeInstance.getFlowNodeDefinitionId()); final SContractDefinition contractDefinition = userTaskDefinition.getContract(); final ContractValidator validator = new ContractValidatorFactory().createContractValidator(tenantAccessor.getTechnicalLoggerService(), tenantAccessor.getExpressionService()); validator.validate(flowNodeInstance.getProcessDefinitionId(), contractDefinition, inputs); }