diff --git a/fluent/spec/src/main/java/io/serverlessworkflow/fluent/spec/ForEachTaskBuilder.java b/fluent/spec/src/main/java/io/serverlessworkflow/fluent/spec/ForEachTaskBuilder.java index 196ed888e..bcf9afdae 100644 --- a/fluent/spec/src/main/java/io/serverlessworkflow/fluent/spec/ForEachTaskBuilder.java +++ b/fluent/spec/src/main/java/io/serverlessworkflow/fluent/spec/ForEachTaskBuilder.java @@ -15,9 +15,9 @@ */ package io.serverlessworkflow.fluent.spec; +import io.serverlessworkflow.api.types.ForIn; import io.serverlessworkflow.api.types.ForTask; import io.serverlessworkflow.api.types.ForTaskConfiguration; -import io.serverlessworkflow.api.types.In; import io.serverlessworkflow.api.types.TaskItem; import io.serverlessworkflow.fluent.spec.spi.ForEachTaskFluent; import java.util.List; @@ -49,7 +49,7 @@ public ForEachTaskBuilder each(String each) { } public ForEachTaskBuilder in(String in) { - this.forTaskConfiguration.setIn(new In().withForInExpression(in)); + this.forTaskConfiguration.setIn(new ForIn().withForInExpression(in)); return this; } diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/executors/ForExecutor.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/ForExecutor.java index 4eeb69ff7..531d2e30a 100644 --- a/impl/core/src/main/java/io/serverlessworkflow/impl/executors/ForExecutor.java +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/ForExecutor.java @@ -15,8 +15,8 @@ */ package io.serverlessworkflow.impl.executors; +import io.serverlessworkflow.api.types.ForIn; import io.serverlessworkflow.api.types.ForTask; -import io.serverlessworkflow.api.types.In; import io.serverlessworkflow.impl.TaskContext; import io.serverlessworkflow.impl.WorkflowContext; import io.serverlessworkflow.impl.WorkflowDefinition; @@ -51,7 +51,7 @@ protected Optional buildWhileFilter() { } protected WorkflowValueResolver> buildCollectionFilter() { - In in = task.getFor().getIn(); + ForIn in = task.getFor().getIn(); return application .expressionFactory() .resolveCollection( diff --git a/impl/test/src/test/java/io/serverlessworkflow/impl/test/WorkflowDefinitionTest.java b/impl/test/src/test/java/io/serverlessworkflow/impl/test/WorkflowDefinitionTest.java index 6d65b47c4..22cb487e9 100644 --- a/impl/test/src/test/java/io/serverlessworkflow/impl/test/WorkflowDefinitionTest.java +++ b/impl/test/src/test/java/io/serverlessworkflow/impl/test/WorkflowDefinitionTest.java @@ -80,6 +80,11 @@ private static Stream provideParameters() { Map.of("input", Arrays.asList(1, 2, 3)), o -> assertThat(o).isEqualTo(6), c -> assertThat(c).isEqualTo(Map.of("incr", Arrays.asList(2, 3, 4)))), + args( + "workflows-samples/for-sum-fixed.yaml", + Map.of(), + o -> assertThat(o).isEqualTo(6), + c -> assertThat(c).isEqualTo(Map.of("incr", Arrays.asList(2, 3, 4)))), args( "workflows-samples/switch-then-loop.yaml", Map.of("count", 1), diff --git a/impl/test/src/test/resources/workflows-samples/for-sum-fixed.yaml b/impl/test/src/test/resources/workflows-samples/for-sum-fixed.yaml new file mode 100644 index 000000000..a191b338b --- /dev/null +++ b/impl/test/src/test/resources/workflows-samples/for-sum-fixed.yaml @@ -0,0 +1,22 @@ +document: + dsl: '1.0.0-alpha5' + namespace: test + name: for-sum-fixed-example + version: '0.1.0' +do: + - sumAll: + for: + each: number + in: + - 1 + - 2 + - 3 + do: + - accumulate: + set: + counter: ${.counter+$number} + export: + as: if .incr==null then {incr:[$number+1]} else .incr+=[$number+1] end + output: + as: .counter + diff --git a/types/src/main/resources/schema/workflow.yaml b/types/src/main/resources/schema/workflow.yaml index 8f0151e9e..01feb5e81 100644 --- a/types/src/main/resources/schema/workflow.yaml +++ b/types/src/main/resources/schema/workflow.yaml @@ -711,9 +711,8 @@ $defs: description: A runtime expression used to get the collection to enumerate. - type: array title: ForInInlineArray - description: An inline array of objects to enumerate. + description: An inline array to enumerate. items: - type: object description: An item in the inline collection. at: type: string