public ProcessInstance getProcessInstance() { if (processInstance == null) { processInstance = taskInstance.getProcessInstance(); } return processInstance; }
public ExecutionContext(TaskInstance taskInstance, VarInstanceMap<?> input) { this(taskInstance.getProcessInstance(), taskInstance, input); }
public String getDescricao() { return getProcessInstance().getDescription(); }
public String getProcessName() { return getProcessInstance().getProcessName(); }
public <T extends TaskInstance> boolean canExecute(T instance, MUser user) { return canExecute((K) instance.getProcessInstance(), user); }
protected String generateID(TaskInstance instanciaTarefa) { ProcessInstance instanciaProcesso = instanciaTarefa.getProcessInstance(); return new StringBuilder(generateID(instanciaProcesso)) .append('.') .append(instanciaTarefa.getId()) .toString(); }
public StringBuilder getDescricaoExtendida(boolean adicionarAlocado) { StringBuilder sb = new StringBuilder(250); sb.append(getProcessInstance().getProcessName()).append(" - ").append(getName()); String descricao = getProcessInstance().getDescription(); if (descricao != null) { sb.append(" - ").append(descricao); } if (adicionarAlocado) { MUser p = getAllocatedUser(); if (p != null) { sb.append(" (").append(p.getSimpleName()).append(")"); } } return sb; }
private void notifyStateUpdate() { Flow.notifyListeners(n -> n.notifyStateUpdate(getProcessInstance())); }
private IPersistenceService<IEntityCategory, IEntityProcessDefinition, IEntityProcessVersion, IEntityProcessInstance, IEntityTaskInstance, IEntityTaskDefinition, IEntityTaskVersion, IEntityVariableInstance, IEntityRoleDefinition, IEntityRoleInstance> getPersistenceService() { return getProcessInstance().getProcessDefinition().getPersistenceService(); }
public static ITaskPredicate disabledCreator() { return new TaskPredicateImpl("Criador Demanda Inativado", (taskInstance) -> !Flow.canBeAllocated(taskInstance.getProcessInstance().getUserCreator())); }
static TaskInstance executeTransition(TaskInstance tarefaAtual, String transitionName, VarInstanceMap<?> param) { MTransition transicao = searchTransition(tarefaAtual, transitionName); tarefaAtual.endLastAllocation(); return updateState(tarefaAtual.getProcessInstance(), tarefaAtual, transicao, transicao.getDestination(), param); }
private Set<Integer> getFirstLevelUsersCodWithAccess() { Objects.requireNonNull(getFlowTask(), "Task com a sigla " + getTaskVersion().getAbbreviation() + " não encontrada na definição " + getProcessInstance().getProcessDefinition().getName()); Objects.requireNonNull(getFlowTask().getAccessStrategy(), "Estratégia de acesso da task " + getTaskVersion().getAbbreviation() + " não foi definida"); return getFlowTask().getAccessStrategy().getFirstLevelUsersCodWithAccess(getProcessInstance()); }
public MTask<?> getFlowTask() { if (flowTask == null) { flowTask = getProcessInstance().getProcessDefinition().getFlowMap().getTaskBybbreviation(getTaskVersion().getAbbreviation()); } return flowTask; }
private static MTransition searchTransition(TaskInstance tarefaAtual, String nomeTransicao) { final MTask<?> estadoAtual = tarefaAtual.getFlowTask(); MTransition transicao; if (nomeTransicao == null) { if (estadoAtual.getTransitions().size() == 1) { transicao = estadoAtual.getTransitions().get(0); } else if (estadoAtual.getTransitions().size() > 1 && estadoAtual.getDefaultTransition() != null) { transicao = estadoAtual.getDefaultTransition(); } else { throw new SingularFlowException("A tarefa [" + estadoAtual.getCompleteName() + "] não definiu resultado para transicao"); } } else { transicao = estadoAtual.getTransition(nomeTransicao); if (transicao == null) { throw new SingularFlowException("A tarefa [" + tarefaAtual.getProcessInstance().getFullId() + "." + estadoAtual.getName() + "] não possui a transição '" + nomeTransicao + "' solicitada. As opções são: {" + Joiner.on(',').join(estadoAtual.getTransitions()) + '}'); } } return transicao; }
public static IConditionalTaskAction executeTransition(final ITaskPredicate predicate, final String destinationName) { TaskActionImpl executeTransition = new TaskActionImpl("Executar Transicao", taskInstance ->{ taskInstance.log("Transição Automática", "motivo: " + predicate.getDescription(taskInstance)); taskInstance.getProcessInstance().executeTransition(destinationName); }); executeTransition.setCompleteDescription("Executar Transicao '" + destinationName + "'"); return conditionalAction(predicate, executeTransition); }
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(); }