private void createRoleMapper(final XmlBuilder xmlDefBuilder, final Node parentNode, final RoleMapperDefinition roleMapperDefinition) throws Exception { if (roleMapperDefinition != null) { final Node roleMapperNode = xmlDefBuilder.createNode(parentNode, XmlDef.ROLE_MAPPER); xmlDefBuilder.createNode(roleMapperNode, XmlDef.CLASSNAME, roleMapperDefinition.getClassName()); xmlDefBuilder.createNode(roleMapperNode, XmlDef.DESCRIPTION, roleMapperDefinition.getDescription()); final Node parametersNode = xmlDefBuilder.createNode(roleMapperNode, XmlDef.PARAMETERS); final Map<String, Object[]> roleMapperParameters = roleMapperDefinition.getParameters(); for (final Entry<String, Object[]> roleMapperParameter : roleMapperParameters.entrySet()) { final Map<String, Serializable> roleMapperParameterAttributes = new HashMap<String, Serializable>(); roleMapperParameterAttributes.put(XmlDef.NAME, roleMapperParameter.getKey()); final byte[] value = Misc.serialize(roleMapperParameter.getValue()); xmlDefBuilder.createNode(parametersNode, XmlDef.PARAMETER, value, roleMapperParameterAttributes); } } }
public RoleMapperDefinitionImpl(RoleMapperDefinition src) { Misc.badStateIfNull(src, "Ouch! Impossible to build a new Definition object from null"); this.className = src.getClassName(); this.parameters = Tool.copy(src.getParameters()); }
protected Set<String> getParticipantsDependencies(Set<ParticipantDefinition> participants) { Set<String> dependencies = new HashSet<String>(); if (participants != null) { for (ParticipantDefinition participant : participants) { if (participant.getRoleMapper() != null) { dependencies.add(participant.getRoleMapper().getClassName()); } } } return dependencies; }
private static Set<String> executeRoleMapper(final TaskInstance task, final Performer performer) { final ProcessDefinitionUUID processUUID = task.getProcessDefinitionUUID(); final RoleMapperDefinition rolemapperDef = performer.getRoleMapperDefinition(); final ClassLoader baseClassLoader = Thread.currentThread().getContextClassLoader(); try { final ClassLoader processClassLoader = EnvTool.getClassDataLoader().getProcessClassLoader(processUUID); Thread.currentThread().setContextClassLoader(processClassLoader); if (rolemapperDef != null) { final RoleMapper roleMapper = EnvTool.getClassDataLoader().getInstance(RoleMapper.class, processUUID, rolemapperDef); try { return ConnectorExecutor.executeRoleMapper(roleMapper, task, performer.getName(), rolemapperDef.getParameters()); } catch (final Exception e) { throw new BonitaWrapperException(new RoleMapperInvocationException("be_TRT_2", rolemapperDef.toString(), e)); } } return null; } finally { Thread.currentThread().setContextClassLoader(baseClassLoader); } }
public RoleMapperDefinitionImpl(final RoleMapperDefinition src) { Misc.badStateIfNull(src, "Ouch! Impossible to build a new Definition object from null"); this.className = src.getClassName(); this.parameters = CopyTool.copy(src.getParameters()); }
@Override public Set<String> getClassDependencies() { final Set<String> classDependencies = new HashSet<String>(); for (final ParticipantDefinition participant : getParticipants()) { if (participant.getRoleMapper() != null) { classDependencies.add(participant.getRoleMapper().getClassName()); } } for (final ConnectorDefinition connector : getConnectors()) { classDependencies.add(connector.getClassName()); } for (final ActivityDefinition activity : getActivities()) { classDependencies.addAll(activity.getClassDependencies()); } return classDependencies; }
private void createRoleMapper(final XmlBuilder xmlDefBuilder, final Node parentNode, final RoleMapperDefinition roleMapperDefinition) throws Exception { if (roleMapperDefinition != null) { final Node roleMapperNode = xmlDefBuilder.createNode(parentNode, XmlDef.ROLE_MAPPER); xmlDefBuilder.createNode(roleMapperNode, XmlDef.CLASSNAME, roleMapperDefinition.getClassName()); xmlDefBuilder.createNode(roleMapperNode, XmlDef.DESCRIPTION, roleMapperDefinition.getDescription()); final Node parametersNode = xmlDefBuilder.createNode(roleMapperNode, XmlDef.PARAMETERS); final Map<String, Object[]> roleMapperParameters = roleMapperDefinition.getParameters(); for (final Entry<String, Object[]> roleMapperParameter : roleMapperParameters.entrySet()) { final Map<String, Serializable> roleMapperParameterAttributes = new HashMap<String, Serializable>(); roleMapperParameterAttributes.put(XmlDef.NAME, roleMapperParameter.getKey()); final byte[] value = Misc.serialize(roleMapperParameter.getValue()); xmlDefBuilder.createNode(parametersNode, XmlDef.PARAMETER, value, roleMapperParameterAttributes); } } }
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); }
@Override public Set<String> getClassDependencies() { final Set<String> classDependencies = new HashSet<String>(); for (final ParticipantDefinition participant : getParticipants()) { if (participant.getRoleMapper() != null) { classDependencies.add(participant.getRoleMapper().getClassName()); } } for (final ConnectorDefinition connector : getConnectors()) { classDependencies.add(connector.getClassName()); } for (final ActivityDefinition activity : getActivities()) { classDependencies.addAll(activity.getClassDependencies()); } return classDependencies; }