Skip to content

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

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

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions