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; }