private void createFilter(final XmlBuilder xmlDefBuilder, final Node parentNode, final FilterDefinition filter) throws Exception { if (filter != null) { final Node filterNode = xmlDefBuilder.createNode(parentNode, XmlDef.FILTER); xmlDefBuilder.createNode(filterNode, XmlDef.CLASSNAME, filter.getClassName()); xmlDefBuilder.createNode(filterNode, XmlDef.DESCRIPTION, filter.getDescription()); final Node parametersNode = xmlDefBuilder.createNode(filterNode, XmlDef.PARAMETERS); final Map<String, Object[]> filterParameters = filter.getParameters(); for (final Entry<String, Object[]> filterParameter : filterParameters.entrySet()) { final Map<String, Serializable> filterParameterAttributes = new HashMap<String, Serializable>(); filterParameterAttributes.put(XmlDef.NAME, filterParameter.getKey()); final byte[] value = Misc.serialize(filterParameter.getValue()); xmlDefBuilder.createNode(parametersNode, XmlDef.PARAMETER, value, filterParameterAttributes); } } }
@Override public Set<String> getClassDependencies() { final Set<String> classDependencies = new HashSet<String>(); for (final DeadlineDefinition deadline : getDeadlines()) { classDependencies.add(deadline.getClassName()); } for (final ConnectorDefinition connector : getConnectors()) { classDependencies.add(connector.getClassName()); } if (getMultiInstantiationDefinition() != null) { classDependencies.add(getMultiInstantiationDefinition().getClassName()); } if (getFilter() != null) { classDependencies.add(getFilter().getClassName()); } return classDependencies; }
private static Set<String> executeFilter(final TaskInstance task, final Set<String> candidates, final Performer performer) { final ProcessDefinitionUUID processUUID = task.getProcessDefinitionUUID(); final ClassLoader baseClassLoader = Thread.currentThread().getContextClassLoader(); try { final ClassLoader processClassLoader = EnvTool.getClassDataLoader().getProcessClassLoader(processUUID); Thread.currentThread().setContextClassLoader(processClassLoader); final FilterDefinition filterDefinition = performer.getFilterDefinition(); if (filterDefinition != null) { final PerformerAssign performerAssign = getPerformerAssign(processUUID, filterDefinition); Filter filter = null; if (performerAssign == null) { filter = EnvTool.getClassDataLoader().getInstance(Filter.class, processUUID, filterDefinition); } else { filter = new PerformerAssignFilter(); } try { return ConnectorExecutor.executeFilter(filter, performerAssign, task, candidates, filterDefinition.getParameters()); } catch (final Exception e) { throw new BonitaWrapperException(e); } } return candidates; } finally { Thread.currentThread().setContextClassLoader(baseClassLoader); } }
@Override public Set<String> getClassDependencies() { final Set<String> classDependencies = new HashSet<String>(); for (final DeadlineDefinition deadline : getDeadlines()) { classDependencies.add(deadline.getClassName()); } for (final ConnectorDefinition connector : getConnectors()) { classDependencies.add(connector.getClassName()); } if (getMultiInstantiationDefinition() != null) { classDependencies.add(getMultiInstantiationDefinition().getClassName()); } if (getFilter() != null) { classDependencies.add(getFilter().getClassName()); } return classDependencies; }
private void createFilter(final XmlBuilder xmlDefBuilder, final Node parentNode, final FilterDefinition filter) throws Exception { if (filter != null) { final Node filterNode = xmlDefBuilder.createNode(parentNode, XmlDef.FILTER); xmlDefBuilder.createNode(filterNode, XmlDef.CLASSNAME, filter.getClassName()); xmlDefBuilder.createNode(filterNode, XmlDef.DESCRIPTION, filter.getDescription()); final Node parametersNode = xmlDefBuilder.createNode(filterNode, XmlDef.PARAMETERS); final Map<String, Object[]> filterParameters = filter.getParameters(); for (final Entry<String, Object[]> filterParameter : filterParameters.entrySet()) { final Map<String, Serializable> filterParameterAttributes = new HashMap<String, Serializable>(); filterParameterAttributes.put(XmlDef.NAME, filterParameter.getKey()); final byte[] value = Misc.serialize(filterParameter.getValue()); xmlDefBuilder.createNode(parametersNode, XmlDef.PARAMETER, value, filterParameterAttributes); } } }