diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java index e0cb97dc73..c4e94044c5 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java @@ -859,22 +859,27 @@ private List getExistingActors(ActorListFieldValue actorListFieldValue) return null; } return actorListFieldValue.getActorValues().stream() + .filter(this::actorExists) .map(ActorFieldValue::getId) - .filter(actorId -> { - AbstractUser user = userService.findById(actorId, null); - if (user != null) { - return true; - } - try { - groupService.findById(actorId); - return true; - } catch (IllegalArgumentException ignored) { - return false; - } - }) .collect(Collectors.toList()); } + private boolean actorExists(ActorFieldValue actorFieldValue) { + if (actorFieldValue == null || actorFieldValue.getId() == null) { + return false; + } + AbstractUser user = userService.findById(actorFieldValue.getId(), actorFieldValue.getRealmId()); + if (user != null) { + return true; + } + try { + groupService.findById(actorFieldValue.getId()); + return true; + } catch (IllegalArgumentException ignored) { + return false; + } + } + private Task createFromTransition(Transition transition, Case useCase) { final Task task = com.netgrif.application.engine.adapter.spring.workflow.domain.Task.with() .title(transition.getTitle()) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/WorkflowService.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/WorkflowService.java index 938f38bcc7..feebf1247a 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/WorkflowService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/WorkflowService.java @@ -255,10 +255,9 @@ public Case resolveActorRef(Case useCase, boolean canSaveUseCase) { /** * Resolves actor permissions for the useCase based on the actor list data field. * - * @param useCase useCase where to resolve actor permissions + * @param useCase useCase where to resolve actor permissions * @param actorFieldId field id of the actor list - * @param permission permission associated with the useCase and actor list - * + * @param permission permission associated with the useCase and actor list * @return true if the useCase was modified, false otherwise */ private boolean resolveActorRefPermissions(Case useCase, String actorFieldId, Map permission) { @@ -278,22 +277,27 @@ private List getExistingActors(ActorListFieldValue actorListFieldValue) return null; } return actorListFieldValue.getActorValues().stream() + .filter(this::actorExists) .map(ActorFieldValue::getId) - .filter(actorId -> { - AbstractUser user = userService.findById(actorId, null); - if (user != null) { - return true; - } - try { - groupService.findById(actorId); - return true; - } catch (IllegalArgumentException ignored) { - return false; - } - }) .collect(Collectors.toList()); } + private boolean actorExists(ActorFieldValue actorFieldValue) { + if (actorFieldValue == null || actorFieldValue.getId() == null) { + return false; + } + AbstractUser user = userService.findById(actorFieldValue.getId(), actorFieldValue.getRealmId()); + if (user != null) { + return true; + } + try { + groupService.findById(actorFieldValue.getId()); + return true; + } catch (IllegalArgumentException ignored) { + return false; + } + } + public CreateCaseEventOutcome createCase(CreateCaseParams createCaseParams) { fillAndValidateAttributes(createCaseParams); PetriNet petriNet = createCaseParams.getProcess();