From c064e36db7487e205a5cd6e679a2af2708f92c2e Mon Sep 17 00:00:00 2001 From: Ricardo Zanini Date: Wed, 15 Apr 2026 14:36:39 -0400 Subject: [PATCH 1/3] Fix #1314 - Introduce LifecycleEvents to expose events constants to clients Signed-off-by: Ricardo Zanini --- .../impl/LifecycleEvents.java | 67 +++++++++++++++++++ .../ce/AbstractLifeCyclePublisher.java | 31 ++++----- 2 files changed, 81 insertions(+), 17 deletions(-) create mode 100644 impl/core/src/main/java/io/serverlessworkflow/impl/LifecycleEvents.java diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/LifecycleEvents.java b/impl/core/src/main/java/io/serverlessworkflow/impl/LifecycleEvents.java new file mode 100644 index 000000000..1f367b4ae --- /dev/null +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/LifecycleEvents.java @@ -0,0 +1,67 @@ +/* + * Copyright 2020-Present The Serverless Workflow Specification Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.serverlessworkflow.impl; + +/** + * @see Serverless + * Workflow Specification :: DSL :: LifecycleEvents + */ +public final class LifecycleEvents { + + /** Notifies about the start of a task. */ + public static final String TASK_STARTED = "io.serverlessworkflow.task.started.v1"; + + /** Notifies about the completion of a task's execution. */ + public static final String TASK_COMPLETED = "io.serverlessworkflow.task.completed.v1"; + + /** Notifies about suspending a task's execution. */ + public static final String TASK_SUSPENDED = "io.serverlessworkflow.task.suspended.v1"; + + /** Notifies about resuming a task's execution. */ + public static final String TASK_RESUMED = "io.serverlessworkflow.task.resumed.v1"; + + /** Notifies about a task being faulted. */ + public static final String TASK_FAULTED = "io.serverlessworkflow.task.faulted.v1"; + + /** Notifies about the cancellation of a task's execution. */ + public static final String TASK_CANCELLED = "io.serverlessworkflow.task.cancelled.v1"; + + /** Notifies about retrying a task's execution. */ + public static final String TASK_RETRIED = "io.serverlessworkflow.task.retried.v1"; + + /** Notifies about the start of a workflow. */ + public static final String WORKFLOW_STARTED = "io.serverlessworkflow.workflow.started.v1"; + + /** Notifies about the completion of a workflow execution. */ + public static final String WORKFLOW_COMPLETED = "io.serverlessworkflow.workflow.completed.v1"; + + /** Notifies about suspending a workflow execution. */ + public static final String WORKFLOW_SUSPENDED = "io.serverlessworkflow.workflow.suspended.v1"; + + /** Notifies about resuming a workflow execution. */ + public static final String WORKFLOW_RESUMED = "io.serverlessworkflow.workflow.resumed.v1"; + + /** Notifies about a workflow being faulted. */ + public static final String WORKFLOW_FAULTED = "io.serverlessworkflow.workflow.faulted.v1"; + + /** Notifies about the cancellation of a workflow execution. */ + public static final String WORKFLOW_CANCELLED = "io.serverlessworkflow.workflow.cancelled.v1"; + + /** Notifies about the change of a workflow's status phase. */ + public static final String WORKFLOW_STATUS_CHANGED = + "io.serverlessworkflow.workflow.status-changed.v1"; +} diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/lifecycle/ce/AbstractLifeCyclePublisher.java b/impl/core/src/main/java/io/serverlessworkflow/impl/lifecycle/ce/AbstractLifeCyclePublisher.java index 5599e5e6d..05b776831 100644 --- a/impl/core/src/main/java/io/serverlessworkflow/impl/lifecycle/ce/AbstractLifeCyclePublisher.java +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/lifecycle/ce/AbstractLifeCyclePublisher.java @@ -15,6 +15,20 @@ */ package io.serverlessworkflow.impl.lifecycle.ce; +import static io.serverlessworkflow.impl.LifecycleEvents.TASK_CANCELLED; +import static io.serverlessworkflow.impl.LifecycleEvents.TASK_COMPLETED; +import static io.serverlessworkflow.impl.LifecycleEvents.TASK_FAULTED; +import static io.serverlessworkflow.impl.LifecycleEvents.TASK_RESUMED; +import static io.serverlessworkflow.impl.LifecycleEvents.TASK_RETRIED; +import static io.serverlessworkflow.impl.LifecycleEvents.TASK_STARTED; +import static io.serverlessworkflow.impl.LifecycleEvents.TASK_SUSPENDED; +import static io.serverlessworkflow.impl.LifecycleEvents.WORKFLOW_CANCELLED; +import static io.serverlessworkflow.impl.LifecycleEvents.WORKFLOW_COMPLETED; +import static io.serverlessworkflow.impl.LifecycleEvents.WORKFLOW_FAULTED; +import static io.serverlessworkflow.impl.LifecycleEvents.WORKFLOW_RESUMED; +import static io.serverlessworkflow.impl.LifecycleEvents.WORKFLOW_STARTED; +import static io.serverlessworkflow.impl.LifecycleEvents.WORKFLOW_STATUS_CHANGED; +import static io.serverlessworkflow.impl.LifecycleEvents.WORKFLOW_SUSPENDED; import static io.serverlessworkflow.impl.WorkflowError.error; import static io.serverlessworkflow.impl.lifecycle.ce.WorkflowDefinitionCEData.ref; @@ -50,23 +64,6 @@ public abstract class AbstractLifeCyclePublisher implements WorkflowExecutionListener { - private static final String TASK_STARTED = "io.serverlessworkflow.task.started.v1"; - private static final String TASK_COMPLETED = "io.serverlessworkflow.task.completed.v1"; - private static final String TASK_SUSPENDED = "io.serverlessworkflow.task.suspended.v1"; - private static final String TASK_RESUMED = "io.serverlessworkflow.task.resumed.v1"; - private static final String TASK_FAULTED = "io.serverlessworkflow.task.faulted.v1"; - private static final String TASK_CANCELLED = "io.serverlessworkflow.task.cancelled.v1"; - private static final String TASK_RETRIED = "io.serverlessworkflow.task.retried.v1"; - - private static final String WORKFLOW_STARTED = "io.serverlessworkflow.workflow.started.v1"; - private static final String WORKFLOW_COMPLETED = "io.serverlessworkflow.workflow.completed.v1"; - private static final String WORKFLOW_SUSPENDED = "io.serverlessworkflow.workflow.suspended.v1"; - private static final String WORKFLOW_RESUMED = "io.serverlessworkflow.workflow.resumed.v1"; - private static final String WORKFLOW_FAULTED = "io.serverlessworkflow.workflow.faulted.v1"; - private static final String WORKFLOW_CANCELLED = "io.serverlessworkflow.workflow.cancelled.v1"; - private static final String WORKFLOW_STATUS_CHANGED = - "io.serverlessworkflow.workflow.status-changed.v1"; - public static Collection getLifeCycleTypes() { return Set.of( TASK_STARTED, From 81d1139dc21a2602d41f9ac1429e7a3b14b8f81f Mon Sep 17 00:00:00 2001 From: Ricardo Zanini <1538000+ricardozanini@users.noreply.github.com> Date: Wed, 15 Apr 2026 14:41:33 -0400 Subject: [PATCH 2/3] Update impl/core/src/main/java/io/serverlessworkflow/impl/LifecycleEvents.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../main/java/io/serverlessworkflow/impl/LifecycleEvents.java | 1 + 1 file changed, 1 insertion(+) diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/LifecycleEvents.java b/impl/core/src/main/java/io/serverlessworkflow/impl/LifecycleEvents.java index 1f367b4ae..bfeacf4f6 100644 --- a/impl/core/src/main/java/io/serverlessworkflow/impl/LifecycleEvents.java +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/LifecycleEvents.java @@ -22,6 +22,7 @@ */ public final class LifecycleEvents { + private LifecycleEvents() {} /** Notifies about the start of a task. */ public static final String TASK_STARTED = "io.serverlessworkflow.task.started.v1"; From e78d1d343127b0f7a09ceb10ea62633c3ed3f637 Mon Sep 17 00:00:00 2001 From: Ricardo Zanini Date: Thu, 16 Apr 2026 09:10:28 -0400 Subject: [PATCH 3/3] Resolve formatting issues Signed-off-by: Ricardo Zanini --- .../main/java/io/serverlessworkflow/impl/LifecycleEvents.java | 1 + 1 file changed, 1 insertion(+) diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/LifecycleEvents.java b/impl/core/src/main/java/io/serverlessworkflow/impl/LifecycleEvents.java index bfeacf4f6..047dfe38a 100644 --- a/impl/core/src/main/java/io/serverlessworkflow/impl/LifecycleEvents.java +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/LifecycleEvents.java @@ -23,6 +23,7 @@ public final class LifecycleEvents { private LifecycleEvents() {} + /** Notifies about the start of a task. */ public static final String TASK_STARTED = "io.serverlessworkflow.task.started.v1";