/** Method checks if the process is in running or new state */ public boolean isProcessRunning() { if(getStatus() == null) return false; if(getRunning() != null && !getRunning()) return false; return getStatus().equals(ProcessStatus.NEW) || getStatus().equals(ProcessStatus.RUNNING); }
private BpmTask performAction(ProcessStateAction action, ProcessInstance processInstance, ProcessToolContext ctx, Task task) { processInstance = getProcessData(processInstance.getInternalId(), ctx); addActionLogEntry(action, processInstance, ctx); ctx.getProcessInstanceDAO().saveProcessInstance(processInstance); ProcessEngine processEngine = getProcessEngine(); Map<String,Object> variables = new HashMap<String, Object>(); variables.put("ACTION",action.getBpmName()); processEngine.getTaskService().complete(task.getId(), variables); updateSubprocess(processInstance, ctx); String s = getProcessState(processInstance, ctx); fillProcessAssignmentData(processInstance, ctx); processInstance.setState(s); if (s == null && processInstance.getRunning() && !isProcessRunning(processInstance.getInternalId(), ctx)) { processInstance.setRunning(false); } ctx.getProcessInstanceDAO().saveProcessInstance(processInstance); publishEvents(processInstance, processInstance.getRunning() ? BpmEvent.Type.SIGNAL_PROCESS : BpmEvent.Type.END_PROCESS); return collectTask(findProcessTask(processInstance, ctx), processInstance, ctx); }
@Override public void adminReassignProcessTask(ProcessInstance pi, BpmTask bpmTask, String userLogin) { log.severe("User: " + user.getLogin() + " attempting to reassign task " + bpmTask.getInternalTaskId() + " for process: " + pi.getInternalId() + " to user: " + userLogin); ProcessToolContext ctx = ProcessToolContext.Util.getThreadProcessToolContext(); pi = getProcessData(pi.getInternalId(), ctx); ProcessEngine processEngine = getProcessEngine(); TaskService ts = processEngine.getTaskService(); Task task = ts.createTaskQuery().taskId(bpmTask.getInternalTaskId()).singleResult(); if (nvl(userLogin, "").equals(nvl(task.getAssignee(), ""))) { log.severe("User: " + user.getLogin() + " has not reassigned task " + bpmTask.getInternalTaskId() + " for process: " + pi.getInternalId() + " as the user is the same: " + userLogin); return; } //this call should also take care of swimlanes ts.setAssignee(bpmTask.getInternalTaskId(), userLogin); fillProcessAssignmentData(pi, ctx); log.info("Process.running:" + pi.getRunning()); ctx.getProcessInstanceDAO().saveProcessInstance(pi); log.severe("User: " + user.getLogin() + " has reassigned task " + bpmTask.getInternalTaskId() + " for process: " + pi.getInternalId() + " to user: " + userLogin); }
logger.info("__AWF__queue: "+ queue); searchData.addSearchAttribute("__AWF__running", String.valueOf(processInstance.getRunning()), true);