Skip to content

Improve WaitTask DSL ergonomics and fix WaitExecutor duration literal bug #1451

@ricardozanini

Description

@ricardozanini

Problems

1. Missing ergonomic wait methods in DSL/FuncDSL

DSL has timeoutSeconds(), timeoutMinutes(), etc. but no equivalent for wait tasks.

Add these convenience methods (to both DSL.java and FuncDSL.java):

waitDays(int) / waitDays(String name, int)
waitHours(int) / waitHours(String name, int)
waitMinutes(int) / waitMinutes(String name, int)
waitSeconds(int) / waitSeconds(String name, int)
waitMillis(int) / waitMillis(String name, int)
wait(Duration) / wait(String name, Duration)

FuncDSL currently has zero wait support - needs all of the above.

2. WaitExecutor doesn't handle durationLiteral

Location: impl/core/src/main/java/io/serverlessworkflow/impl/executors/WaitExecutor.java:41-44

Current code:

this.millisToWait =
    task.getWait().getDurationInline() != null
        ? toLong(task.getWait().getDurationInline())
        : Duration.parse(task.getWait().getDurationExpression());

Problem: Crashes when durationLiteral is set (ISO 8601 like "PT5M") because it only checks inline/expression.

Fix: Add handling for task.getWait().getDurationLiteral().

Files to Modify

  1. fluent/spec/src/main/java/io/serverlessworkflow/fluent/spec/dsl/DSL.java
  2. experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/dsl/FuncDSL.java
  3. impl/core/src/main/java/io/serverlessworkflow/impl/executors/WaitExecutor.java

Metadata

Metadata

Assignees

Labels

javaPull requests that update java code

Type

No fields configured for Task.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions