add support for custom status

Signed-off-by: salaboy <Salaboy@gmail.com>
This commit is contained in:
salaboy 2025-08-18 09:45:54 +01:00
parent 04b19e1cf7
commit 13754b5879
3 changed files with 34 additions and 3 deletions

View File

@ -526,4 +526,12 @@ public interface WorkflowContext {
default UUID newUuid() {
throw new RuntimeException("No implementation found.");
}
/**
* Set a custom status to a workflow execution.
*
* @param status to be set to the current execution
*/
void setCustomStatus(Object status);
}

View File

@ -59,7 +59,7 @@ public class DefaultWorkflowContext implements WorkflowContext {
* @throws IllegalArgumentException if context or logger is null
*/
public DefaultWorkflowContext(TaskOrchestrationContext context, Logger logger)
throws IllegalArgumentException {
throws IllegalArgumentException {
if (context == null) {
throw new IllegalArgumentException("Context cannot be null");
}
@ -114,7 +114,7 @@ public class DefaultWorkflowContext implements WorkflowContext {
*/
@Override
public <V> Task<V> waitForExternalEvent(String name, Duration timeout, Class<V> dataType)
throws TaskCanceledException {
throws TaskCanceledException {
return this.innerContext.waitForExternalEvent(name, timeout, dataType);
}
@ -130,7 +130,7 @@ public class DefaultWorkflowContext implements WorkflowContext {
* @param timeout the amount of time to wait before canceling the returned
* {@code Task}
* @return a new {@link Task} that completes when the external event is received
* or when {@code timeout} expires
* or when {@code timeout} expires
* @throws TaskCanceledException if the specified {@code timeout} value expires
* before the event is received
*/
@ -294,4 +294,13 @@ public class DefaultWorkflowContext implements WorkflowContext {
return workflowTaskRetryHandler.handle(workflowRetryContext);
};
}
/**
* Set custom status to a workflow execution.
*
* @param status to set to the execution
*/
public void setCustomStatus(Object status) {
innerContext.setCustomStatus(status);
}
}

View File

@ -135,6 +135,11 @@ public class DefaultWorkflowContextTest {
@Override
public void continueAsNew(Object input, boolean preserveUnprocessedEvents) {
}
@Override
public void setCustomStatus(Object status) {
}
};
}
@ -403,6 +408,15 @@ public class DefaultWorkflowContextTest {
verify(mockInnerContext, times(1)).callSubOrchestrator(expectedName, expectedInput, null, null, String.class);
}
@Test
public void setCustomStatusWorkflow() {
String customStatus = "CustomStatus";
context.setCustomStatus(customStatus);
verify(mockInnerContext, times(1)).setCustomStatus(customStatus);
}
@Test
public void newUuidTest() {
context.newUuid();