default void saveVariableHistoric(Date dateHour, FLOW_INSTANCE instance, TaskInstance originTask, TaskInstance destinationTask, VarInstanceMap<?,?> instanceMap) { saveVariableHistoric(dateHour, instance, originTask != null ? originTask.<TASK_INSTANCE> getEntityTaskInstance() : null, destinationTask != null ? destinationTask.<TASK_INSTANCE> getEntityTaskInstance() : null, instanceMap); }
default void saveVariableHistoric(Date dateHour, PROCESS_INSTANCE instance, TaskInstance originTask, TaskInstance destinationTask, VarInstanceMap<?> instanceMap) { saveVariableHistoric(dateHour, instance, originTask != null ? originTask.<TASK_INSTANCE> getEntityTaskInstance() : null, destinationTask != null ? destinationTask.<TASK_INSTANCE> getEntityTaskInstance() : null, instanceMap); }
protected void assertSameTask() { if (currentTaskInstance != null && !currentTaskInstance.getEntityTaskInstance() .equals(loadCurrentTask().getEntityTaskInstance())) { throw new SingularServerException(getString("message.save.concurrent_error")); } }
public final <X extends IEntityTaskInstance> X getEntityTaskInstance(Integer versionStamp) { IEntityTaskInstance e = getEntityTaskInstance(); if(versionStamp != null){ if(versionStamp < e.getVersionStamp()){ throw new SingularFlowException("Your Task Version Number is Outdated.", this); } } return (X) e; }
public final <X extends IEntityTaskInstance> X getEntityTaskInstance(Integer versionStamp) { IEntityTaskInstance e = getEntityTaskInstance(); if(versionStamp != null){ if(versionStamp < e.getVersionStamp()){ throw new SingularFlowException("Your Task Version Number is Outdated."); } } return (X) e; }
/** Na petição, encontra o formulário mais recente do tipo indicado e associado a tarefa indicada. */ @Nonnull public Optional<FormRequirementEntity> findFormRequirementEntityByTypeAndTask(@Nonnull RequirementInstance requirement, @Nonnull String typeName, @Nonnull TaskInstance task) { Objects.requireNonNull(requirement); Objects.requireNonNull(task); Integer taskDefinitionEntityPK = ((TaskInstanceEntity) task.getEntityTaskInstance()).getTaskVersion().getTaskDefinition().getCod(); return formRequirementDAO.findFormRequirementEntityByTypeNameAndTask(requirement.getCod(), typeName, taskDefinitionEntityPK); }
/** Na petição, encontra o formulário mais recente do tipo indicado e associado a tarefa indicada. */ @Nonnull public Optional<FormRequirementEntity> findFormRequirementEntityByTypeAndTask(@Nonnull RequirementInstance requirement, @Nonnull String typeName, @Nonnull TaskInstance task) { Objects.requireNonNull(requirement); Objects.requireNonNull(task); Integer taskDefinitionEntityPK = ((TaskInstanceEntity) task.getEntityTaskInstance()).getTaskVersion().getTaskDefinition().getCod(); return formRequirementDAO.findFormRequirementEntityByTypeNameAndTask(requirement.getCod(), typeName, taskDefinitionEntityPK); }
/** Na petição, encontra o formulário mais recente do tipo indicado e associado a tarefa indicada. */ @Nonnull public Optional<FormRequirementEntity> findFormRequirementEntityByTypeAndTask(@Nonnull RequirementInstance requirement, @Nonnull String typeName, @Nonnull TaskInstance task) { Objects.requireNonNull(requirement); Objects.requireNonNull(task); Integer taskDefinitionEntityPK = ((TaskInstanceEntity) task.getEntityTaskInstance()).getTaskVersion().getTaskDefinition().getCod(); return formRequirementDAO.findFormRequirementEntityByTypeNameAndTask(requirement.getCod(), typeName, taskDefinitionEntityPK); }
public static void sortInstancesByDistanceFromBeginning(List<? extends FlowInstance> instances, FlowDefinition<?> definition) { instances.sort((s1, s2) -> compareByDistanceFromBeginning( s1.getLastTaskOrException().getEntityTaskInstance().getTaskVersion(), s2.getLastTaskOrException().getEntityTaskInstance().getTaskVersion(), definition)); }
public void setTargetEndDate(Date targetEndDate) { getPersistenceService().updateTargetEndDate(getEntityTaskInstance(), targetEndDate); }
public void setTargetEndDate(Date targetEndDate) { getPersistenceService().updateTargetEndDate(getEntityTaskInstance(), targetEndDate); }
public static void sortInstancesByDistanceFromBeginning(List<? extends ProcessInstance> instancias, ProcessDefinition<?> definicao) { instancias.sort((s1, s2) -> compareByDistanceFromBeginning(s1.getLatestTask().getEntityTaskInstance().getTask(), s2.getLatestTask().getEntityTaskInstance().getTask(), definicao)); }
public void endLastAllocation() { if (isAllocated()) { getPersistenceService().endLastAllocation(getEntityTaskInstance()); } }
public void endLastAllocation() { if (isAllocated()) { getPersistenceService().endLastAllocation(getEntityTaskInstance()); } }
public void saveRequirementHistory(RequirementInstance requirement, List<FormEntity> newEntities) { Optional<TaskInstance> taskInstance = requirement.getFlowInstance().getTasksNewerFirstAsStream() .filter(i -> i.isFinished() && !i.getFlowTaskOrException().isEnd()) .findFirst(); FormEntity formEntity = requirement.getEntity().getMainForm(); getLogger().info("Atualizando histórico da petição."); final RequirementContentHistoryEntity contentHistoryEntity = new RequirementContentHistoryEntity(); contentHistoryEntity.setRequirementEntity(requirement.getEntity()); if (taskInstance.isPresent()) { Actor actor = getActorOfAction(taskInstance.get()); contentHistoryEntity.setActor(actor); contentHistoryEntity.setTaskInstanceEntity(taskInstance.get().getEntityTaskInstance()); } if (CollectionUtils.isNotEmpty(formEntity.getCurrentFormVersionEntity().getFormAnnotations())) { contentHistoryEntity.setFormAnnotationsVersions(formEntity.getCurrentFormVersionEntity().getFormAnnotations().stream().map(FormAnnotationEntity::getAnnotationCurrentVersion).collect(Collectors.toList())); } contentHistoryEntity.setApplicantEntity(requirement.getApplicant()); contentHistoryEntity.setHistoryDate(new Date()); requirementContentHistoryDAO.saveOrUpdate(contentHistoryEntity); contentHistoryEntity.setFormVersionHistoryEntities( requirement.getEntity() .getFormRequirementEntities() .stream() .filter(fpe -> newEntities.contains(fpe.getForm())) .map(f -> formRequirementService.createFormVersionHistory(contentHistoryEntity, f)) .collect(Collectors.toList()) ); }
public void relocateTask(SUser author, SUser user, boolean notify, String relocationCause, Integer versionStamp) { if (user != null && !isPeople()) { throw new SingularFlowException( "A tarefa '" + getName() + "' não pode ser realocada, pois não é do tipo pessoa", this); } SUser userAllocatedBefore = getAllocatedUser(); if (Objects.equals(user, userAllocatedBefore)) { return; } IEntityTaskInstance entityTaskInstance = getEntityTaskInstance(versionStamp); endLastAllocation(); getPersistenceService().relocateTask(entityTaskInstance, user); String trimmedRelocationCause = StringUtils.trimToNull(relocationCause); String action = (user == null) ? DEALLOCATE : ALLOCATE; if (author == null) { log(action + " Automática", trimmedRelocationCause, user, null, new Date()); } else { log(action, trimmedRelocationCause, user, author, new Date()); } if (notify) { Flow.notifyListeners(n -> n.notifyUserTaskRelocation(this, author, userAllocatedBefore, user, userAllocatedBefore)); Flow.notifyListeners(n -> n.notifyUserTaskAllocation(this, author, user, user, userAllocatedBefore, trimmedRelocationCause)); } notifyStateUpdate(); }
public void relocateTask(MUser author, MUser user, boolean notify, String relocationCause, Integer versionStamp) { if (user != null && !isPeople()) { throw new SingularFlowException( getProcessInstance().createErrorMsg("A tarefa '" + getName() + "' não pode ser realocada, pois não é do tipo pessoa")); } MUser pessoaAlocadaAntes = getAllocatedUser(); if (Objects.equals(user, pessoaAlocadaAntes)) { return; } IEntityTaskInstance entityTaskInstance = getEntityTaskInstance(versionStamp); endLastAllocation(); getPersistenceService().relocateTask(entityTaskInstance, user); String trimmedRelocationCause = StringUtils.trimToNull(relocationCause); String acao = (user == null) ? DESALOCACAO : ALOCACAO; if (author == null) { log(acao + " Automática", trimmedRelocationCause, user, null, new Date()); } else { log(acao, trimmedRelocationCause, user, author, new Date()); } if (notify) { Flow.notifyListeners(n -> n.notifyUserTaskRelocation(this, author, pessoaAlocadaAntes, user, pessoaAlocadaAntes)); Flow.notifyListeners(n -> n.notifyUserTaskAllocation(this, author, user, user, pessoaAlocadaAntes, trimmedRelocationCause)); } notifyStateUpdate(); }
/** * Realiza uma transição da tarefa de origiem para a tarefa alvo * especificadas. * * @param originTransition a transição disparada. * @param task a tarefa alvo. * @param now o momento da transição. * @return a tarefa corrente depois da transição. */ @Nonnull protected final TaskInstance updateState(TaskInstance originTaskInstance, STransition originTransition, @Nonnull STask<?> task, Date now) { synchronized (this) { if (originTaskInstance != null) { originTaskInstance.endLastAllocation(); String transitionName = null; if (originTransition != null) { transitionName = originTransition.getAbbreviation(); } getPersistenceService().completeTask(originTaskInstance.getEntityTaskInstance(), transitionName, Flow.getUserIfAvailable()); } IEntityTaskVersion newState = getFlowDefinition().getEntityTaskVersion(task); IEntityTaskInstance newTaskEntity = getPersistenceService().addTask(getEntity(), newState); TaskInstance newTask = getTaskInstance(newTaskEntity); currentState = task; Flow.notifyListeners(n -> n.notifyStateUpdate(FlowInstance.this)); return newTask; } }
transitionName = transicaoOrigem.getAbbreviation(); getPersistenceService().completeTask(tarefaOrigem.getEntityTaskInstance(), transitionName, Flow.getUserIfAvailable());