diff --git a/experimental/fluent/func/pom.xml b/experimental/fluent/func/pom.xml
index dcf2aa96f..5beaf49d1 100644
--- a/experimental/fluent/func/pom.xml
+++ b/experimental/fluent/func/pom.xml
@@ -45,5 +45,17 @@
${version.org.mockito}
test
+
+ io.serverlessworkflow
+ serverlessworkflow-impl-model
+ ${project.version}
+ test
+
+
+ io.serverlessworkflow
+ serverlessworkflow-impl-jackson
+ ${project.version}
+ test
+
\ No newline at end of file
diff --git a/experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/FuncSetTaskBuilder.java b/experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/FuncSetTaskBuilder.java
index a9d1bd6cf..304a67c81 100644
--- a/experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/FuncSetTaskBuilder.java
+++ b/experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/FuncSetTaskBuilder.java
@@ -39,4 +39,9 @@ public FuncSetTaskBuilder expr(Map map) {
this.task.getSet().withSetTaskConfiguration(new MapSetTaskConfiguration(map));
return this;
}
+
+ @Override
+ public SetTask build() {
+ return this.task;
+ }
}
diff --git a/experimental/fluent/func/src/test/java/io/serverlessworkflow/fluent/func/FuncDSLTest.java b/experimental/fluent/func/src/test/java/io/serverlessworkflow/fluent/func/FuncDSLTest.java
index 3dbe95094..2e07737cc 100644
--- a/experimental/fluent/func/src/test/java/io/serverlessworkflow/fluent/func/FuncDSLTest.java
+++ b/experimental/fluent/func/src/test/java/io/serverlessworkflow/fluent/func/FuncDSLTest.java
@@ -23,7 +23,6 @@
import static io.serverlessworkflow.fluent.func.dsl.FuncDSL.http;
import static io.serverlessworkflow.fluent.func.dsl.FuncDSL.listen;
import static io.serverlessworkflow.fluent.func.dsl.FuncDSL.toOne;
-import static io.serverlessworkflow.fluent.spec.dsl.DSL.auth;
import static io.serverlessworkflow.fluent.spec.dsl.DSL.use;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
@@ -42,6 +41,8 @@
import io.serverlessworkflow.fluent.func.dsl.FuncDSL;
import io.serverlessworkflow.fluent.func.dsl.FuncEmitSpec;
import io.serverlessworkflow.fluent.func.dsl.FuncListenSpec;
+import io.serverlessworkflow.impl.WorkflowApplication;
+import io.serverlessworkflow.impl.WorkflowDefinition;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.List;
@@ -432,4 +433,21 @@ void call_with_preconfigured_http_spec() {
.getUse());
assertEquals(Map.of("foo", "bar"), http.getWith().getBody());
}
+
+ @Test
+ void set_with_map() {
+ try (WorkflowApplication app = WorkflowApplication.builder().build()) {
+ Workflow workflow =
+ FuncWorkflowBuilder.workflow()
+ .tasks(f -> f.set(s -> s.expr(Map.of("message", "hello world!"))))
+ .build();
+
+ WorkflowDefinition workflowDefinition = app.workflowDefinition(workflow);
+
+ Map output =
+ workflowDefinition.instance(Map.of()).start().join().asMap().orElseThrow();
+
+ assertEquals(Map.of("message", "hello world!"), output);
+ }
+ }
}