private boolean hasEventSubProcessCatchingError(final SFlowElementContainerDefinition container, final String errorCode) { boolean found = false; final Iterator<SActivityDefinition> iterator = container.getActivities().iterator(); while (iterator.hasNext() && !found) { final SActivityDefinition activity = iterator.next(); if (SFlowNodeType.SUB_PROCESS.equals(activity.getType()) && ((SSubProcessDefinition) activity).isTriggeredByEvent()) { final SSubProcessDefinition eventSubProcess = (SSubProcessDefinition) activity; final SStartEventDefinition startEventDefinition = eventSubProcess.getSubProcessContainer().getStartEvents().get(0); if (startEventDefinition.getErrorEventTriggerDefinition(errorCode) != null) { found = true; } } } return found; }
private SSubProcessActivityInstanceBuilder createSubProcessActivityInstance(final long processDefinitionId, final long rootContainerId, final long parentContainerId, final SFlowElementsContainerType parentContainerType, final SFlowNodeDefinition sFlowNodeDefinition, final long rootProcessInstanceId, final long parentProcessInstanceId) { final SSubProcessDefinition subProcessActivityDef = (SSubProcessDefinition) sFlowNodeDefinition; final SSubProcessActivityInstanceBuilderFactory builderFact = BuilderFactory.get(SSubProcessActivityInstanceBuilderFactory.class); final SSubProcessActivityInstanceBuilder builder = builderFact.createNewSubProcessActivityInstance(subProcessActivityDef.getName(), subProcessActivityDef.getId(), rootContainerId, parentContainerId, processDefinitionId, rootProcessInstanceId, parentProcessInstanceId, subProcessActivityDef.isTriggeredByEvent()); updateActivityInstance(parentContainerId, parentContainerType, sFlowNodeDefinition, builder); return builder; }
private SFlowNodeDefinition getFlowNodeFromSubProcesses(final long id) { boolean found = false; SFlowNodeDefinition flowNode = null; final Iterator<SActivityDefinition> iterator = activities.iterator(); while (iterator.hasNext() && !found) { final SActivityDefinition activityDefinition = iterator.next(); if (SFlowNodeType.SUB_PROCESS.equals(activityDefinition.getType())) { flowNode = ((SSubProcessDefinition) activityDefinition).getSubProcessContainer().getFlowNode(id); if (flowNode != null) { found = true; } } } return flowNode; }
private void deleteJobsOnEventSubProcess(final SProcessDefinition processDefinition, final SProcessInstance sProcessInstance, final SSubProcessDefinition sSubProcessDefinition, final List<? extends SCatchEventDefinition> sCatchEventDefinitions) { final SchedulerService schedulerService = getTenantAccessor().getSchedulerService(); final TechnicalLoggerService logger = getTenantAccessor().getTechnicalLoggerService(); for (final SCatchEventDefinition sCatchEventDefinition : sCatchEventDefinitions) { try { if (!sCatchEventDefinition.getTimerEventTriggerDefinitions().isEmpty()) { final String jobName = JobNameBuilder.getTimerEventJobName(processDefinition.getId(), sCatchEventDefinition, sProcessInstance.getId(), sSubProcessDefinition.getId()); final boolean delete = schedulerService.delete(jobName); if (!delete && schedulerService.isExistingJob(jobName)) { if (logger.isLoggable(this.getClass(), TechnicalLogSeverity.WARNING)) { logger.log(this.getClass(), TechnicalLogSeverity.WARNING, "No job found with name '" + jobName + "' when interrupting timer catch event named '" + sCatchEventDefinition.getName() + "' on event sub process with the id '" + sSubProcessDefinition.getId() + "'. It was probably already triggered."); } } } } catch (final Exception e) { if (logger.isLoggable(this.getClass(), TechnicalLogSeverity.WARNING)) { logger.log(this.getClass(), TechnicalLogSeverity.WARNING, e); } } } }
private SFlowNodeDefinition getFlowNodeFromSubProcesses(final String targetFlowNode) { boolean found = false; SFlowNodeDefinition flowNode = null; final Iterator<SActivityDefinition> iterator = activities.iterator(); while (iterator.hasNext() && !found) { final SActivityDefinition activityDefinition = iterator.next(); if (SFlowNodeType.SUB_PROCESS.equals(activityDefinition.getType())) { flowNode = ((SSubProcessDefinition) activityDefinition).getSubProcessContainer().getFlowNode(targetFlowNode); if (flowNode != null) { found = true; } } } return flowNode; }
private void deleteJobsOnEventSubProcess(final SProcessDefinition processDefinition, final SProcessInstance sProcessInstance, final SSubProcessDefinition sSubProcessDefinition, final List<? extends SCatchEventDefinition> sCatchEventDefinitions) { final SchedulerService schedulerService = getTenantAccessor().getSchedulerService(); final TechnicalLoggerService logger = getTenantAccessor().getTechnicalLoggerService(); for (final SCatchEventDefinition sCatchEventDefinition : sCatchEventDefinitions) { try { if (!sCatchEventDefinition.getTimerEventTriggerDefinitions().isEmpty()) { final String jobName = JobNameBuilder.getTimerEventJobName(processDefinition.getId(), sCatchEventDefinition, sProcessInstance.getId(), sSubProcessDefinition.getId()); final boolean delete = schedulerService.delete(jobName); if (!delete && schedulerService.isExistingJob(jobName)) { if (logger.isLoggable(this.getClass(), TechnicalLogSeverity.WARNING)) { logger.log(this.getClass(), TechnicalLogSeverity.WARNING, "No job found with name '" + jobName + "' when interrupting timer catch event named '" + sCatchEventDefinition.getName() + "' on event sub process with the id '" + sSubProcessDefinition.getId() + "'. It was probably already triggered."); } } } } catch (final Exception e) { if (logger.isLoggable(this.getClass(), TechnicalLogSeverity.WARNING)) { logger.log(this.getClass(), TechnicalLogSeverity.WARNING, e); } } } }
private boolean hasEventSubProcessCatchingError(final SFlowElementContainerDefinition container, final String errorCode) { boolean found = false; final Iterator<SActivityDefinition> iterator = container.getActivities().iterator(); while (iterator.hasNext() && !found) { final SActivityDefinition activity = iterator.next(); if (SFlowNodeType.SUB_PROCESS.equals(activity.getType()) && ((SSubProcessDefinition) activity).isTriggeredByEvent()) { final SSubProcessDefinition eventSubProcess = (SSubProcessDefinition) activity; final SStartEventDefinition startEventDefinition = eventSubProcess.getSubProcessContainer().getStartEvents().get(0); if (startEventDefinition.getErrorEventTriggerDefinition(errorCode) != null) { found = true; } } } return found; }
private SGatewayDefinition getGatewayFromSubProcesses(final String name) { boolean found = false; SGatewayDefinition gateway = null; final Iterator<SActivityDefinition> iterator = activities.iterator(); while (iterator.hasNext() && !found) { final SActivityDefinition activityDefinition = iterator.next(); if (SFlowNodeType.SUB_PROCESS.equals(activityDefinition.getType())) { gateway = ((SSubProcessDefinition) activityDefinition).getSubProcessContainer().getGateway(name); if (gateway != null) { found = true; } } } return gateway; }
private SSubProcessActivityInstanceBuilder createSubProcessActivityInstance(final long processDefinitionId, final long rootContainerId, final long parentContainerId, final SFlowElementsContainerType parentContainerType, final SFlowNodeDefinition sFlowNodeDefinition, final long rootProcessInstanceId, final long parentProcessInstanceId) { final SSubProcessDefinition subProcessActivityDef = (SSubProcessDefinition) sFlowNodeDefinition; final SSubProcessActivityInstanceBuilderFactory builderFact = BuilderFactory.get(SSubProcessActivityInstanceBuilderFactory.class); final SSubProcessActivityInstanceBuilder builder = builderFact.createNewSubProcessActivityInstance(subProcessActivityDef.getName(), subProcessActivityDef.getId(), rootContainerId, parentContainerId, processDefinitionId, rootProcessInstanceId, parentProcessInstanceId, subProcessActivityDef.isTriggeredByEvent()); updateActivityInstance(parentContainerId, parentContainerType, sFlowNodeDefinition, builder); return builder; }
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 SGatewayDefinition getGatewayFromSubProcesses(final String name) { boolean found = false; SGatewayDefinition gateway = null; final Iterator<SActivityDefinition> iterator = activities.iterator(); while (iterator.hasNext() && !found) { final SActivityDefinition activityDefinition = iterator.next(); if (SFlowNodeType.SUB_PROCESS.equals(activityDefinition.getType())) { gateway = ((SSubProcessDefinition) activityDefinition).getSubProcessContainer().getGateway(name); if (gateway != null) { found = true; } } } return gateway; }
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 STransitionDefinition getTransitionFromSubProcesses(final String transitionId) { boolean found = false; STransitionDefinition transition = null; final Iterator<SActivityDefinition> iterator = activities.iterator(); while (iterator.hasNext() && !found) { final SActivityDefinition activityDefinition = iterator.next(); if (SFlowNodeType.SUB_PROCESS.equals(activityDefinition.getType())) { transition = ((SSubProcessDefinition) activityDefinition).getSubProcessContainer().getTransition(transitionId); if (transition != null) { found = true; } } } return transition; }
public void unregisterEventSubProcess(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); unregisterEventSubProcess(sDefinition, sStartEventDefinition, activity.getId(), parentProcessInstance); } } }
private SFlowNodeDefinition getFlowNodeFromSubProcesses(final String targetFlowNode) { boolean found = false; SFlowNodeDefinition flowNode = null; final Iterator<SActivityDefinition> iterator = activities.iterator(); while (iterator.hasNext() && !found) { final SActivityDefinition activityDefinition = iterator.next(); if (SFlowNodeType.SUB_PROCESS.equals(activityDefinition.getType())) { flowNode = ((SSubProcessDefinition) activityDefinition).getSubProcessContainer().getFlowNode(targetFlowNode); if (flowNode != null) { found = true; } } } return flowNode; }
public void unregisterEventSubProcess(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); unregisterEventSubProcess(sDefinition, sStartEventDefinition, activity.getId(), parentProcessInstance); } } }
private SFlowNodeDefinition getFlowNodeFromSubProcesses(final long id) { boolean found = false; SFlowNodeDefinition flowNode = null; final Iterator<SActivityDefinition> iterator = activities.iterator(); while (iterator.hasNext() && !found) { final SActivityDefinition activityDefinition = iterator.next(); if (SFlowNodeType.SUB_PROCESS.equals(activityDefinition.getType())) { flowNode = ((SSubProcessDefinition) activityDefinition).getSubProcessContainer().getFlowNode(id); if (flowNode != null) { found = true; } } } return flowNode; }
private STransitionDefinition getTransitionFromSubProcesses(final String transitionId) { boolean found = false; STransitionDefinition transition = null; final Iterator<SActivityDefinition> iterator = activities.iterator(); while (iterator.hasNext() && !found) { final SActivityDefinition activityDefinition = iterator.next(); if (SFlowNodeType.SUB_PROCESS.equals(activityDefinition.getType())) { transition = ((SSubProcessDefinition) activityDefinition).getSubProcessContainer().getTransition(transitionId); if (transition != null) { found = true; } } } return transition; }
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); } }