Package org.activiti.engine.impl.persistence.entity

Examples of org.activiti.engine.impl.persistence.entity.TaskEntity


    this.taskId = taskId;
  }
 
  @SuppressWarnings({"unchecked", "rawtypes" })
  public List<IdentityLink> execute(CommandContext commandContext) {
    TaskEntity task = commandContext
      .getTaskEntityManager()
      .findTaskById(taskId);

    List<IdentityLink> identityLinks = (List) task.getIdentityLinks();
   
    // assignee is not part of identity links in the db.
    // so if there is one, we add it here.
    // @Tom: we discussed this long on skype and you agreed ;-)
    // an assignee *is* an identityLink, and so must it be reflected in the API
    //
    // Note: we cant move this code to the TaskEntity (which would be cleaner),
    // since the task.delete cascased to all associated identityLinks
    // and of course this leads to exception while trying to delete a non-existing identityLink
    if (task.getAssignee() != null) {
      IdentityLinkEntity identityLink = new IdentityLinkEntity();
      identityLink.setUserId(task.getAssignee());
      identityLink.setType(IdentityLinkType.ASSIGNEE);
      identityLink.setTaskId(task.getId());
      identityLinks.add(identityLink);
    }
    if (task.getOwner() != null) {
      IdentityLinkEntity identityLink = new IdentityLinkEntity();
      identityLink.setUserId(task.getOwner());
      identityLink.setTaskId(task.getId());
      identityLink.setType(IdentityLinkType.OWNER);
      identityLinks.add(identityLink);
    }
   
    return (List) task.getIdentityLinks();
  }
View Full Code Here


                || event.getType().equals(ActivitiEventType.TASK_ASSIGNED)) {
            ActivitiEntityEvent entityEvent = (ActivitiEntityEvent) event;

            Object entity = entityEvent.getEntity();
            if (entity instanceof TaskEntity) {
                TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity();

                Map<String, String> skipTasks = new HashMap<>();
                skipTasks.put("usertask2", "user1"); // 预先设定
                skipTasks.put("usertask4", "user1"); // 动态设定以
                skipTasks.put("usertask5", "user1"); // 候选人
                skipTasks.put("usertask6", "user1"); // 候选组

                EngineServices engineServices = entityEvent.getEngineServices();
                IdentityService identityService = engineServices.getIdentityService();
                TaskService taskService = engineServices.getTaskService();

                String taskDefinitionKey = taskEntity.getTaskDefinitionKey();
                String userId = skipTasks.get(taskDefinitionKey);

                if (userId == null) {
                    return;
                }
                System.out.println("key: " + taskDefinitionKey + ", userId=" + userId);

                // 查询当前人的组
                List<String> groupIds = new ArrayList<>();
                List<Group> list = identityService.createGroupQuery().groupMember(userId).list();
                for (Group group : list) {
                    groupIds.add(group.getId());
                }

                // 如果当前节点是需要跳过的,直接调用任务完成命令
                if (event.getType().equals(ActivitiEventType.TASK_ASSIGNED)) {
                    if (userId != null) {
                        if (taskEntity.getAssignee().equals(userId)) {
                            skipTask(taskEntity, event);
                        }
                    }
                }

                // 创建事件用来处理候选的情况
                if (event.getType().equals(ActivitiEventType.TASK_CREATED) && taskEntity.getAssignee() == null) {
                    Set<IdentityLink> candidates = taskEntity.getCandidates();
                    for (IdentityLink identityLink : candidates) {
                        // 处理候选人
                        if (identityLink.getUserId() != null && identityLink.getUserId().equals(userId)) {
                            // 必须删除link,否则报错
                            taskEntity.deleteUserIdentityLink(identityLink.getUserId(), "candidate");

                            // 签收触发TASK_ASSIGNED
                            taskService.claim(taskEntity.getId(), userId);
                        } else if (groupIds.contains(identityLink.getGroupId())) {
                            // 必须删除link,否则报错
                            taskEntity.deleteGroupIdentityLink(identityLink.getGroupId(), "candidate");

                            // 签收触发TASK_ASSIGNED
                            taskService.claim(taskEntity.getId(), userId);
                        }
                    }
                }
            }
        } else {
View Full Code Here

  public Task toObject(Reader reader) {
    throw new ActivitiException("not yet implemented");
  }

  public JSONObject toJsonObject(Task task) {
    TaskEntity taskEntity = (TaskEntity) task;
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("id", taskEntity.getId());
    jsonObject.put("dbversion", taskEntity.getRevision());
    jsonObject.put("assignee", taskEntity.getAssignee());
    jsonObject.put("name", taskEntity.getName());
    jsonObject.put("priority", taskEntity.getPriority());     
    jsonObject.put("createTime", taskEntity.getCreateTime());
    if (taskEntity.getExecutionId()!=null) {
      jsonObject.put("activityInstance", taskEntity.getExecutionId());
    }
    if (taskEntity.getProcessDefinitionId()!=null) {
      jsonObject.put("processDefinition", taskEntity.getProcessDefinitionId());
    }
    return jsonObject;
  }
View Full Code Here

    this.taskId = taskId;
  }
 
  @SuppressWarnings({"unchecked", "rawtypes" })
  public List<IdentityLink> execute(CommandContext commandContext) {
    TaskEntity task = Context
      .getCommandContext()
      .getTaskManager()
      .findTaskById(taskId);

    List<IdentityLink> identityLinks = (List) task.getIdentityLinks();
   
    // assignee is not part of identity links in the db.
    // so if there is one, we add it here.
    // @Tom: we discussed this long on skype and you agreed ;-)
    // an assignee *is* an identityLink, and so must it be reflected in the API
    //
    // Note: we cant move this code to the TaskEntity (which would be cleaner),
    // since the task.delete cascased to all associated identityLinks
    // and of course this leads to exception while trying to delete a non-existing identityLink
    if (task.getAssignee() != null) {
      IdentityLinkEntity identityLink = new IdentityLinkEntity();
      identityLink.setUserId(task.getAssignee());
      identityLink.setType(IdentityLinkType.ASSIGNEE);
      identityLinks.add(identityLink);
    }
    if (task.getOwner() != null) {
      IdentityLinkEntity identityLink = new IdentityLinkEntity();
      identityLink.setUserId(task.getOwner());
      identityLink.setType(IdentityLinkType.OWNER);
      identityLinks.add(identityLink);
    }
   
    return (List) task.getIdentityLinks();
  }
View Full Code Here

    this.expressionManager = expressionManager;
    this.taskDefinition = taskDefinition;
  }

  public void execute(ActivityExecution execution) throws Exception {
    TaskEntity task = TaskEntity.createAndInsert(execution);
    task.setExecution(execution);
    task.setTaskDefinition(taskDefinition);

    if (taskDefinition.getNameExpression() != null) {
      String name = (String) taskDefinition.getNameExpression().getValue(execution);
      task.setName(name);
    }

    if (taskDefinition.getDescriptionExpression() != null) {
      String description = (String) taskDefinition.getDescriptionExpression().getValue(execution);
      task.setDescription(description);
    }
   
    if(taskDefinition.getDueDateExpression() != null) {
      Object dueDate = taskDefinition.getDueDateExpression().getValue(execution);
      if(dueDate != null) {
        if (dueDate instanceof Date) {
          task.setDueDate((Date) dueDate);
        } else if (dueDate instanceof String) {
          task.setDueDate(new DueDateBusinessCalendar().resolveDuedate((String) dueDate));
        } else {
          throw new ActivitiException("Due date expression does not resolve to a Date or Date string: " +
              taskDefinition.getDueDateExpression().getExpressionText());
        }
      }
    }

    if (taskDefinition.getPriorityExpression() != null) {
      final Object priority = taskDefinition.getPriorityExpression().getValue(execution);
      if (priority != null) {
        if (priority instanceof String) {
          try {
            task.setPriority(Integer.valueOf((String) priority));
          } catch (NumberFormatException e) {
            throw new ActivitiException("Priority does not resolve to a number: " + priority, e);
          }
        } else if (priority instanceof Number) {
          task.setPriority(((Number) priority).intValue());
        } else {
          throw new ActivitiException("Priority expression does not resolve to a number: " +
                  taskDefinition.getPriorityExpression().getExpressionText());
        }
      }
    }
   
    handleAssignments(task, execution);
  
    // All properties set, now firing 'create' event
    task.fireEvent(TaskListener.EVENTNAME_CREATE);
  }
View Full Code Here

  public Map<String, Object> execute(CommandContext commandContext) {
    if(taskId == null) {
      throw new ActivitiException("taskId is null");
    }
   
    TaskEntity task = Context
      .getCommandContext()
      .getTaskManager()
      .findTaskById(taskId);
   
    if (task==null) {
      throw new ActivitiException("task "+taskId+" doesn't exist");
    }

    Map<String, Object> taskVariables;
    if (isLocal) {
      taskVariables = task.getVariablesLocal();
    } else {
      taskVariables = task.getVariables();
    }
   
    if (variableNames==null) {
      variableNames = taskVariables.keySet();
    }
   
    // this copy is made to avoid lazy initialization outside a command context
    Map<String, Object> variables = new HashMap<String, Object>();
    for (String variableName: variableNames) {
      variables.put(variableName, task.getVariable(variableName));
    }
   
    return variables;
  }
View Full Code Here

    this.formEngineName = formEngineName;
  }


  public Object execute(CommandContext commandContext) {
    TaskEntity task = Context
      .getCommandContext()
      .getTaskManager()
      .findTaskById(taskId);
    if (task == null) {
      throw new ActivitiException("Task '" + taskId +"' not found");
    }
   
    if (task.getTaskDefinition() == null) {
      throw new ActivitiException("Task form definition for '" + taskId +"' not found");
    }
   
    TaskFormHandler taskFormHandler = task.getTaskDefinition().getTaskFormHandler();
    if (taskFormHandler == null) {
      return null;
    }
   
    FormEngine formEngine = Context
View Full Code Here

  public Task newTask() {
    return newTask(null);
  }
 
  public Task newTask(String taskId) {
    TaskEntity task = TaskEntity.create();
    task.setId(taskId);
    return task;
  }
View Full Code Here

    if (taskForm.getFormKey()==null) {
      return null;
    }
    String formTemplateString = getFormTemplateString(taskForm, taskForm.getFormKey());
    ScriptingEngines scriptingEngines = Context.getProcessEngineConfiguration().getScriptingEngines();
    TaskEntity task = (TaskEntity) taskForm.getTask();
    return scriptingEngines.evaluate(formTemplateString, ScriptingEngines.DEFAULT_SCRIPTING_LANGUAGE, task.getExecution());
  }
View Full Code Here

TOP

Related Classes of org.activiti.engine.impl.persistence.entity.TaskEntity

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.