Skip to content

Commit

Permalink
[JBPM-10230] Fix multiple ForEachNodeInstances
Browse files Browse the repository at this point in the history
  • Loading branch information
fjtirado committed May 17, 2024
1 parent 1558f0d commit e420492
Showing 1 changed file with 9 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -823,16 +823,16 @@ public VariableResolver getVariableResolver(String varName) {
return (varExpression) -> {
try {
// for each can have multiple outcomes 1 per item of the list so it should be computed like that
ForEachNodeInstance forEachNodeInstance = (ForEachNodeInstance) getNodeInstanceByNodeId(node.getId(), true);
if(forEachNodeInstance == null) {
return new Object[0];
}
List<CompositeContextNodeInstance> data = forEachNodeInstance.getNodeInstances().stream().filter(e -> e instanceof CompositeContextNodeInstance).map(e -> (CompositeContextNodeInstance) e).collect(Collectors.toList());
List<Object> outcome = new ArrayList<>();
for(CompositeContextNodeInstance nodeInstance : data) {
Object resolvedValue = resolveExpressionVariable(varExpression, new NodeInstanceResolverFactory(nodeInstance)).orElse(null);
if(resolvedValue != null) {
outcome.add(resolvedValue);
for (NodeInstance item : getNodeInstances(true)) {
if (item.getNodeId() == node.getId() && item instanceof ForEachNodeInstance) {
List<CompositeContextNodeInstance> data = ((ForEachNodeInstance) item).getNodeInstances()
.stream().filter(e -> e instanceof CompositeContextNodeInstance)
.map(e -> (CompositeContextNodeInstance) e).collect(Collectors.toList());
for (CompositeContextNodeInstance nodeInstance : data) {
resolveExpressionVariable(varExpression, new NodeInstanceResolverFactory(nodeInstance))
.ifPresent(outcome::add);
}
}
}
return outcome.toArray();
Expand Down

0 comments on commit e420492

Please sign in to comment.