Beispiel #1
0
  @Override
  public Collection<IAtsTask> createTasks(NewTaskData newTaskData) {
    AtsTaskEndpointApi taskEp = AtsClientService.getTaskEp();
    Response response = taskEp.create(newTaskData);

    Artifact teamWf = atsClient.getArtifact(newTaskData.getTeamWfUuid());

    JaxAtsTasks jaxTasks = response.readEntity(JaxAtsTasks.class);
    ArtifactEvent artifactEvent = new ArtifactEvent(AtsUtilCore.getAtsBranch());
    List<Long> artUuids = new LinkedList<>();
    for (JaxAtsTask task : jaxTasks.getTasks()) {
      String guid = ArtifactQuery.getGuidFromUuid(task.getUuid(), AtsUtilCore.getAtsBranch());
      artifactEvent
          .getArtifacts()
          .add(
              new EventBasicGuidArtifact(
                  EventModType.Added,
                  AtsUtilCore.getAtsBranch().getUuid(),
                  AtsArtifactTypes.Task.getGuid(),
                  guid));
      artUuids.add(task.getUuid());

      RelationLink relation = getRelation(teamWf, task);
      Artifact taskArt = atsClient.getArtifact(task.getUuid());

      DefaultBasicUuidRelation guidRelation =
          new DefaultBasicUuidRelation(
              AtsUtilCore.getAtsBranch().getUuid(),
              AtsRelationTypes.TeamWfToTask_Task.getGuid(),
              relation.getId(),
              relation.getGammaId(),
              getBasicGuidArtifact(teamWf),
              getBasicGuidArtifact(taskArt));

      artifactEvent
          .getRelations()
          .add(
              new EventBasicGuidRelation(
                  RelationEventType.Added,
                  newTaskData.getTeamWfUuid().intValue(),
                  new Long(task.getUuid()).intValue(),
                  guidRelation));
    }

    OseeEventManager.kickPersistEvent(getClass(), artifactEvent);

    List<IAtsTask> tasks = new LinkedList<>();
    for (Long uuid : artUuids) {
      tasks.add(
          AtsClientService.get()
              .getWorkItemFactory()
              .getTask(AtsClientService.get().getArtifact(uuid)));
    }
    return tasks;
  }
Beispiel #2
0
  public static Result transitionToCompleted(
      TaskArtifact taskArt, double estimatedHours, double additionalHours, IAtsChangeSet changes) {
    if (taskArt.isInState(TeamState.Completed)) {
      return Result.TrueResult;
    }
    // Assign current user if unassigned
    try {
      if (taskArt.getStateMgr().isUnAssigned()) {
        taskArt.getStateMgr().setAssignee(AtsClientService.get().getUserService().getCurrentUser());
      }
      taskArt
          .getStateMgr()
          .updateMetrics(
              taskArt.getStateDefinition(),
              additionalHours,
              100,
              true,
              AtsClientService.get().getUserService().getCurrentUser());
      if (estimatedHours > 0.0) {
        taskArt.setSoleAttributeValue(AtsAttributeTypes.EstimatedHours, estimatedHours);
      }
      TransitionHelper helper =
          new TransitionHelper(
              "Transition to Completed",
              Arrays.asList(taskArt),
              TaskStates.Completed.getName(),
              null,
              null,
              changes,
              AtsClientService.get().getServices());
      IAtsTransitionManager transitionMgr = TransitionFactory.getTransitionManager(helper);
      TransitionResults results = transitionMgr.handleAll();

      if (results.isEmpty()) {
        return Result.TrueResult;
      }
      return new Result("Transition Error %s", results.toString());
    } catch (Exception ex) {
      OseeLog.log(Activator.class, Level.SEVERE, ex);
      return new Result(
          "Exception occurred while transitioning to completed (see error log) "
              + ex.getLocalizedMessage());
    }
  }
Beispiel #3
0
  public static Result moveTasks(TeamWorkFlowArtifact newParent, List<TaskArtifact> taskArts)
      throws OseeCoreException {
    for (TaskArtifact taskArt : taskArts) {
      // task dropped on same awa as current parent; do nothing
      if (taskArt.getParentAWA().equals(newParent)) {
        return Result.FalseResult;
      }

      // Validate able to move tasks; WorkDefinitions must match
      boolean taskOverridesItsWorkDefinition =
          AtsClientService.get()
              .getWorkDefinitionAdmin()
              .isTaskOverridingItsWorkDefinition(taskArt);
      IWorkDefinitionMatch match =
          AtsClientService.get()
              .getWorkDefinitionAdmin()
              .getWorkDefinitionForTaskNotYetCreated(newParent);
      if (!taskOverridesItsWorkDefinition
          && !taskArt.getWorkDefinition().equals(match.getWorkDefinition())) {
        return new Result(
            "Desitination Task WorkDefinition does not match current Task WorkDefintion; Move Aborted");
      }
    }

    // Move Tasks
    SkynetTransaction transaction =
        TransactionManager.createTransaction(AtsUtilCore.getAtsBranch(), "Drop Add Tasks");
    for (Artifact art : taskArts) {
      if (art.isOfType(AtsArtifactTypes.Task)) {
        TaskArtifact taskArt = (TaskArtifact) art;
        taskArt.clearCaches();
        if (taskArt.getParentAWA() != null) {
          taskArt.deleteRelation(AtsRelationTypes.TeamWfToTask_TeamWf, taskArt.getParentAWA());
        }
        taskArt.addRelation(AtsRelationTypes.TeamWfToTask_TeamWf, newParent);
        taskArt.persist(transaction);
        taskArt.clearCaches();
      }
    }
    transaction.execute();
    return Result.TrueResult;
  }
Beispiel #4
0
 public static Result transitionToInWork(
     TaskArtifact taskArt,
     IAtsUser toUser,
     int percentComplete,
     double additionalHours,
     IAtsChangeSet changes)
     throws OseeCoreException {
   if (taskArt.isInState(TaskStates.InWork)) {
     return Result.TrueResult;
   }
   TransitionHelper helper =
       new TransitionHelper(
           "Transition to InWork",
           Arrays.asList(taskArt),
           TaskStates.InWork.getName(),
           Arrays.asList(toUser),
           null,
           changes,
           AtsClientService.get().getServices(),
           TransitionOption.OverrideAssigneeCheck);
   IAtsTransitionManager transitionMgr = TransitionFactory.getTransitionManager(helper);
   TransitionResults results = transitionMgr.handleAll();
   if (!results.isEmpty()) {
     return new Result("Transition Error %s", results.toString());
   }
   if (taskArt.getStateMgr().getPercentComplete(taskArt.getCurrentStateName()) != percentComplete
       || additionalHours > 0) {
     taskArt
         .getStateMgr()
         .updateMetrics(
             taskArt.getStateDefinition(),
             additionalHours,
             percentComplete,
             true,
             AtsClientService.get().getUserService().getCurrentUser());
   }
   if (changes != null) {
     taskArt.saveSMA(changes);
   }
   return Result.TrueResult;
 }
Beispiel #5
0
 /**
  * Perform error checks and popup confirmation dialogs associated with creating a working branch.
  *
  * @param popup if true, errors are popped up to user; otherwise sent silently in Results
  * @return Result return of status
  */
 public static Result createWorkingBranch_Validate(TeamWorkFlowArtifact teamArt) {
   try {
     if (AtsClientService.get().getBranchService().isCommittedBranchExists(teamArt)) {
       return new Result(
           "Committed branch already exists. Can not create another working branch once changes have been committed.");
     }
     IOseeBranch parentBranch =
         AtsClientService.get().getBranchService().getConfiguredBranchForWorkflow(teamArt);
     if (parentBranch == null) {
       return new Result(
           "Parent Branch can not be determined.\n\nPlease specify "
               + "parent branch through Version Artifact or Team Definition Artifact.\n\n"
               + "Contact your team lead to configure this.");
     }
     Result result = AtsClientService.get().getBranchService().isCreateBranchAllowed(teamArt);
     if (result.isFalse()) {
       return result;
     }
   } catch (Exception ex) {
     OseeLog.log(Activator.class, Level.SEVERE, ex);
     return new Result("Exception occurred: " + ex.getLocalizedMessage());
   }
   return Result.TrueResult;
 }
Beispiel #6
0
 public static Result deleteWorkingBranch(TeamWorkFlowArtifact teamArt, boolean pend)
     throws OseeCoreException {
   IOseeBranch branch = AtsClientService.get().getBranchService().getWorkingBranch(teamArt);
   if (branch != null) {
     IStatus status = null;
     if (pend) {
       status = BranchManager.deleteBranchAndPend(branch);
     } else {
       Job job = BranchManager.deleteBranch(branch);
       job.schedule();
       try {
         job.join();
       } catch (InterruptedException ex) {
         throw new OseeWrappedException(ex);
       }
       status = job.getResult();
     }
     if (status.isOK()) {
       return Result.TrueResult;
     }
     return new Result(status.getMessage());
   }
   return Result.TrueResult;
 }
Beispiel #7
0
 /**
  * Create a working branch associated with this state machine artifact. This should NOT be called
  * by applications except in test cases or automated tools. Use createWorkingBranchWithPopups
  */
 public static Job createWorkingBranch_Create(final TeamWorkFlowArtifact teamArt, boolean pend)
     throws OseeCoreException {
   final IOseeBranch parentBranch =
       AtsClientService.get().getBranchService().getConfiguredBranchForWorkflow(teamArt);
   return createWorkingBranch_Create(teamArt, parentBranch, pend);
 }