private boolean isSubProcess(SProcessInstance processInstance) { return SFlowNodeType.SUB_PROCESS.equals(processInstance.getCallerType()); }
private boolean isChildOfLoopOrMultiInstance(final SActivityInstance activityInstance, final SActivityDefinition activityDefinition) { return activityDefinition.getLoopCharacteristics() != null && !(SFlowNodeType.MULTI_INSTANCE_ACTIVITY.equals(activityInstance.getType()) || SFlowNodeType.LOOP_ACTIVITY.equals(activityInstance.getType())); }
private boolean isChildOfLoopOrMultiInstance(final SActivityInstance activityInstance, final SActivityDefinition activityDefinition) { return activityDefinition.getLoopCharacteristics() != null && !(SFlowNodeType.MULTI_INSTANCE_ACTIVITY.equals(activityInstance.getType()) || SFlowNodeType.LOOP_ACTIVITY.equals(activityInstance.getType())); }
private void deleteActivityInstanceElements(final SActivityInstance sActivityInstance, final SProcessDefinition processDefinition) throws SBonitaException { deleteDataInstancesIfNecessary(sActivityInstance, processDefinition); deleteConnectorInstancesIfNecessary(sActivityInstance, processDefinition); if (SFlowNodeType.USER_TASK.equals(sActivityInstance.getType()) || SFlowNodeType.MANUAL_TASK.equals(sActivityInstance.getType())) { activityService.deletePendingMappings(sActivityInstance.getId()); } else if (SFlowNodeType.CALL_ACTIVITY.equals(sActivityInstance.getType()) || SFlowNodeType.SUB_PROCESS.equals(sActivityInstance.getType())) { // in the case of a call activity or subprocess activity delete the child process instance deleteSubProcess(sActivityInstance, processDefinition); } }
private void deleteActivityInstanceElements(final SActivityInstance sActivityInstance, final SProcessDefinition processDefinition) throws SBonitaException { deleteDataInstancesIfNecessary(sActivityInstance, processDefinition); deleteConnectorInstancesIfNecessary(sActivityInstance, processDefinition); if (SFlowNodeType.USER_TASK.equals(sActivityInstance.getType()) || SFlowNodeType.MANUAL_TASK.equals(sActivityInstance.getType())) { activityService.deletePendingMappings(sActivityInstance.getId()); } else if (SFlowNodeType.CALL_ACTIVITY.equals(sActivityInstance.getType()) || SFlowNodeType.SUB_PROCESS.equals(sActivityInstance.getType())) { // in the case of a call activity or subprocess activity delete the child process instance deleteSubProcess(sActivityInstance, processDefinition); } }
public void addAssignmentSystemCommentIfTaskWasAutoAssign(final SFlowNodeInstance flowNodeInstance) throws SActivityStateExecutionException { if (SFlowNodeType.USER_TASK.equals(flowNodeInstance.getType()) || SFlowNodeType.MANUAL_TASK.equals(flowNodeInstance.getType())) { final long userId = ((SHumanTaskInstance) flowNodeInstance).getAssigneeId(); if (userId > 0) { try { addAssignmentSystemComment(flowNodeInstance, userId); } catch (final SBonitaException e) { throw new SActivityStateExecutionException("error while updating display name and description", e); } } } }
public void addAssignmentSystemCommentIfTaskWasAutoAssign(final SFlowNodeInstance flowNodeInstance) throws SActivityStateExecutionException { if (SFlowNodeType.USER_TASK.equals(flowNodeInstance.getType()) || SFlowNodeType.MANUAL_TASK.equals(flowNodeInstance.getType())) { final long userId = ((SHumanTaskInstance) flowNodeInstance).getAssigneeId(); if (userId > 0) { try { addAssignmentSystemComment(flowNodeInstance, userId); } catch (final SBonitaException e) { throw new SActivityStateExecutionException("error while updating display name and description", e); } } } }
public static String getTimerEventJobName(final Long processDefinitionId, final SEventDefinition eventDefinition, final SCatchEventInstance flowNodeInstance) { if (SFlowNodeType.START_EVENT.equals(eventDefinition.getType())) { return PREFIX + processDefinitionId + eventDefinition.getName(); } return PREFIX + flowNodeInstance.getId(); }
public static String getTimerEventJobName(final Long processDefinitionId, final SEventDefinition eventDefinition, final SCatchEventInstance flowNodeInstance) { if (SFlowNodeType.START_EVENT.equals(eventDefinition.getType())) { return PREFIX + processDefinitionId + eventDefinition.getName(); } return PREFIX + flowNodeInstance.getId(); }
private void archiveFlowNodeInstance(final SProcessDefinition sProcessDefinition, final SFlowNodeInstance child, final SProcessInstance sProcessInstance) throws SArchivingException { //FIXME we archive the flow node instance here because it was not archived before because the flow node was interrupting the parent.. we should change that because it's not very easy to see how it works if (child.getId() != sProcessInstance.getInterruptingEventId() || SFlowNodeType.SUB_PROCESS.equals(sProcessInstance.getCallerType())) { // Let's archive the final state of the child: flowNodeExecutor.archiveFlowNodeInstance(child, true, sProcessDefinition.getId()); } }
private void archiveFlowNodeInstance(final SProcessDefinition sProcessDefinition, final SFlowNodeInstance child, final SProcessInstance sProcessInstance) throws SArchivingException { //FIXME we archive the flow node instance here because it was not archived before because the flow node was interrupting the parent.. we should change that because it's not very easy to see how it works if (child.getId() != sProcessInstance.getInterruptingEventId() || SFlowNodeType.SUB_PROCESS.equals(sProcessInstance.getCallerType())) { // Let's archive the final state of the child: flowNodeExecutor.archiveFlowNodeInstance(child, true, sProcessDefinition.getId()); } }
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); } } }
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); } } }
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); } } }
@Override public void execute() throws SBonitaException { final SActivityInstance activityInstance = activityInstanceService.getActivityInstance(userTaskId); if (userId == 0 && SFlowNodeType.MANUAL_TASK.equals(activityInstance.getType())) { throw new SUnreleasableTaskException("The activity with id " + activityInstance.getId() + " can't be assigned because it is a manual sub task"); } activityInstanceService.assignHumanTask(userTaskId, userId); if (userId > 0) { stateBehaviors.addAssignmentSystemComment(activityInstance, userId); } } }
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); } } }
@Override public void execute() throws SBonitaException { final SActivityInstance activityInstance = activityInstanceService.getActivityInstance(userTaskId); if (userId == 0 && SFlowNodeType.MANUAL_TASK.equals(activityInstance.getType())) { throw new SUnreleasableTaskException("The activity with id " + activityInstance.getId() + " can't be unassigned because it is a manual sub task"); } activityInstanceService.assignHumanTaskIfNotAssigned(userTaskId, userId); if (userId > 0) { stateBehaviors.addAssignmentSystemComment(activityInstance, userId); } } }
@Override public void execute() throws SBonitaException { final SActivityInstance activityInstance = activityInstanceService.getActivityInstance(userTaskId); if (userId == 0 && SFlowNodeType.MANUAL_TASK.equals(activityInstance.getType())) { throw new SUnreleasableTaskException("The activity with id " + activityInstance.getId() + " can't be unassigned because it is a manual sub task"); } activityInstanceService.assignHumanTaskIfNotAssigned(userTaskId, userId); if (userId > 0) { stateBehaviors.addAssignmentSystemComment(activityInstance, userId); } } }
@Override public void execute() throws SBonitaException { final SActivityInstance activityInstance = activityInstanceService.getActivityInstance(userTaskId); if (userId == 0 && SFlowNodeType.MANUAL_TASK.equals(activityInstance.getType())) { throw new SUnreleasableTaskException("The activity with id " + activityInstance.getId() + " can't be assigned because it is a manual sub task"); } activityInstanceService.assignHumanTask(userTaskId, userId); if (userId > 0) { stateBehaviors.addAssignmentSystemComment(activityInstance, userId); } } }