public void ready() { if (LOG.isLoggable(Level.FINE)) { LOG.fine("Ready task : " + taskUUID + " on activity " + activityId); } this.state = TaskState.READY; // get performer (aka participant/swimlane) Performer performer = activityDef.getPerformer(); Set<String> ar = new HashSet<String>(); //if human set userId and candidates if (performer.getParticipantType().equals(ParticipantType.HUMAN)) { this.userId = performer.getParticipantId(); ar.add(performer.getParticipantId()); this.candidates = ar; } //Only ROLE and ORGANIZATIONAL_UNIT can have Role mapper (ParticipantBinding) if (performer.getRoleMapper() != null) { mapRole(performer); } else { // no role mapper: set an empty candidates list this.candidates = ar; } // performer assignment associated to this task assign(performer); EnvTool.getRecorder().recordTaskReady(this); HookExecutor.executeHooks(activityDef.getJavaHooks(), xpdlExecution, activityId, JavaHook.Type.taskOnReady); }
protected void mapRole(Performer performer) { ClassInfo rolemapperInfo = performer.getRoleMapper(); if (rolemapperInfo != null) { RoleMapper roleMapper = ClassDataLoader.getRoleMapperInstance(packageUUID, rolemapperInfo); try { this.candidates = roleMapper.searchMembers( AccessorUtil.getQueryAPIAccessor(), instanceUUID, performer.getParticipantId()); } catch (Exception e) { throw new BonitaWrapperException( new RoleMapperInvocationException(rolemapperInfo.toString(), e) ); } } }
protected void executePerformerAssign(final Performer performer) { final ClassInfo performerAssignInfo = performer.getPerformerAssign(); if (performerAssignInfo != null) { final PerformerAssign performerAssign =
public void assignTask(TaskUUID taskUUID) throws TaskNotFoundException { FacadeUtil.checkArgsNotNull(taskUUID); Repository repository = EnvTool.getRepository(); TaskRunTime taskRunTime = repository.getTask(taskUUID); if (taskRunTime == null) { throw new TaskNotFoundException(taskUUID); } Performer performer = taskRunTime.getActivityDef().getPerformer(); //execute Role mapper and performerAssign if (performer.getRoleMapper() != null) { taskRunTime.resolve(performer); } if (LOG.isLoggable(Level.FINE)) { LOG.fine("Assigning: " + taskRunTime); } //record the assign taskRunTime.assign(taskRunTime.getCandidates(), taskRunTime.getUserId()); if (LOG.isLoggable(Level.FINE)) { LOG.fine("Assigned: " + taskRunTime); } }
protected static Performer getPerformer(ActivityDefinition activity, ProcessFullDefinition processDef, PackageFullDefinition packageDef) { // get the participant definition from the performer ParticipantDefinition participant = findParticipant(packageDef, processDef, activity.getPerformer()); if (participant == null) { throw new DeploymentRuntimeException("Wrong performer: " + activity.getPerformer() + ". No participant is defined within the package with processDefinitionUUID: " + activity.getPerformer()); } ClassInfo roleMapper = null; ClassInfo performerAssign = null; if (participant.getRoleMapper() != null && participant.getRoleMapper().getClassName() != null) { roleMapper = new ClassInfo(participant.getRoleMapper().getClassName(), participant.getRoleMapper().getParameters()); } if (activity.getPerformerAssign() != null && activity.getPerformerAssign().getClassName() != null) { performerAssign = new ClassInfo(activity.getPerformerAssign().getClassName(), activity.getPerformerAssign().getParameters()); } return new Performer(participant.getParticipantId(), participant.getParticipantType(), participant.getUUID(), roleMapper, performerAssign); }
protected void executeRoleMapper(final Performer performer) { final ClassInfo rolemapperInfo = performer.getRoleMapper(); if (rolemapperInfo != null) { final RoleMapper roleMapper = ClassDataLoader.getInstance(RoleMapper.class, this.packageUUID, rolemapperInfo); try { this.candidates = EngineEnvTool.getHookExecutor().executeRoleMapper( roleMapper, this.instanceUUID, performer.getParticipantId()); } catch (final Exception e) { throw new BonitaWrapperException( new RoleMapperInvocationException(rolemapperInfo.toString(), e) ); } } }
protected void assign(Performer performer) { ClassInfo performerAssignInfo = performer.getPerformerAssign(); if (performerAssignInfo != null) { PerformerAssign performerAssign = ClassDataLoader.getPerformerAssignInstance(packageUUID, performerAssignInfo); ActivityInstance<ActivityBody> activityInst = EnvTool.getJournalQueriers().getActivityInstance(instanceUUID, activityId, iterationId, activityInstanceId); try { this.userId = performerAssign.selectUser(AccessorUtil.getQueryAPIAccessor(), activityInst, this.candidates); } catch (Exception e) { throw new BonitaWrapperException( new PerformerAssignInvocationException(performerAssignInfo.toString(), e) ); } } }
if (performer.getParticipantType().equals(ParticipantType.HUMAN)) { this.userId = performer.getParticipantId(); ar.add(performer.getParticipantId()); this.candidates = ar; if (performer.getRoleMapper() != null) { executeRoleMapper(performer); } else {