From e4b6ba18cbcf66050b13f5ba74f3e1e4d44bf98f Mon Sep 17 00:00:00 2001 From: Javier Aliaga Date: Wed, 22 Oct 2025 16:44:30 +0200 Subject: [PATCH 1/2] chore: If @component has value register activity with that value Signed-off-by: Javier Aliaga --- .../config/DaprWorkflowsConfiguration.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/dapr-spring/dapr-spring-workflows/src/main/java/io/dapr/spring/workflows/config/DaprWorkflowsConfiguration.java b/dapr-spring/dapr-spring-workflows/src/main/java/io/dapr/spring/workflows/config/DaprWorkflowsConfiguration.java index 88e81906b0..66f4896da1 100644 --- a/dapr-spring/dapr-spring-workflows/src/main/java/io/dapr/spring/workflows/config/DaprWorkflowsConfiguration.java +++ b/dapr-spring/dapr-spring-workflows/src/main/java/io/dapr/spring/workflows/config/DaprWorkflowsConfiguration.java @@ -17,12 +17,14 @@ import io.dapr.workflows.WorkflowActivity; import io.dapr.workflows.runtime.WorkflowRuntime; import io.dapr.workflows.runtime.WorkflowRuntimeBuilder; +import io.micrometer.common.util.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; import java.util.Map; @@ -54,8 +56,19 @@ private void registerWorkflowsAndActivities(ApplicationContext applicationContex Map workflowActivitiesBeans = applicationContext.getBeansOfType(WorkflowActivity.class); for (WorkflowActivity activity : workflowActivitiesBeans.values()) { - LOGGER.info("Dapr Workflow Activity: '{}' registered", activity.getClass().getName()); + // Get the @Component annotation + Component componentAnnotation = activity.getClass().getAnnotation(Component.class); + + if (componentAnnotation != null) { + var componentValue = componentAnnotation.value(); + if (StringUtils.isNotEmpty(componentValue)) { + LOGGER.info("Dapr Workflow Activity: '{}' with name '{}' registered", activity.getClass().getName(), componentValue); + workflowRuntimeBuilder.registerActivity(componentValue, activity); + return; + } + } + LOGGER.info("Dapr Workflow Activity: '{}' registered", activity.getClass().getName()); workflowRuntimeBuilder.registerActivity(activity); } From 737f666d8b3d625468c0429476f9811006c09bec Mon Sep 17 00:00:00 2001 From: Javier Aliaga Date: Mon, 1 Dec 2025 13:24:34 +0100 Subject: [PATCH 2/2] wip: wip Signed-off-by: Javier Aliaga --- .../config/DaprWorkflowsConfiguration.java | 3 +-- .../continueasnew/CleanUpActivity.java | 1 + .../io/dapr/workflows/WorkflowActivity.java | 4 ++++ .../runtime/WorkflowRuntimeBuilder.java | 17 +++++++++++++++++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/dapr-spring/dapr-spring-workflows/src/main/java/io/dapr/spring/workflows/config/DaprWorkflowsConfiguration.java b/dapr-spring/dapr-spring-workflows/src/main/java/io/dapr/spring/workflows/config/DaprWorkflowsConfiguration.java index 66f4896da1..b8b75941ff 100644 --- a/dapr-spring/dapr-spring-workflows/src/main/java/io/dapr/spring/workflows/config/DaprWorkflowsConfiguration.java +++ b/dapr-spring/dapr-spring-workflows/src/main/java/io/dapr/spring/workflows/config/DaprWorkflowsConfiguration.java @@ -58,13 +58,12 @@ private void registerWorkflowsAndActivities(ApplicationContext applicationContex for (WorkflowActivity activity : workflowActivitiesBeans.values()) { // Get the @Component annotation Component componentAnnotation = activity.getClass().getAnnotation(Component.class); - + activity.getName() if (componentAnnotation != null) { var componentValue = componentAnnotation.value(); if (StringUtils.isNotEmpty(componentValue)) { LOGGER.info("Dapr Workflow Activity: '{}' with name '{}' registered", activity.getClass().getName(), componentValue); workflowRuntimeBuilder.registerActivity(componentValue, activity); - return; } } diff --git a/examples/src/main/java/io/dapr/examples/workflows/continueasnew/CleanUpActivity.java b/examples/src/main/java/io/dapr/examples/workflows/continueasnew/CleanUpActivity.java index 2a11fce4f0..263a914c8d 100644 --- a/examples/src/main/java/io/dapr/examples/workflows/continueasnew/CleanUpActivity.java +++ b/examples/src/main/java/io/dapr/examples/workflows/continueasnew/CleanUpActivity.java @@ -20,6 +20,7 @@ import java.util.concurrent.TimeUnit; + public class CleanUpActivity implements WorkflowActivity { @Override public Object run(WorkflowActivityContext ctx) { diff --git a/sdk-workflows/src/main/java/io/dapr/workflows/WorkflowActivity.java b/sdk-workflows/src/main/java/io/dapr/workflows/WorkflowActivity.java index 5f8c45292a..7d611ac63a 100644 --- a/sdk-workflows/src/main/java/io/dapr/workflows/WorkflowActivity.java +++ b/sdk-workflows/src/main/java/io/dapr/workflows/WorkflowActivity.java @@ -42,4 +42,8 @@ public interface WorkflowActivity { * @return any serializable value to be returned to the calling orchestrator. */ Object run(WorkflowActivityContext ctx); + + default String getName() { + return this.getClass().getCanonicalName(); + } } diff --git a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowRuntimeBuilder.java b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowRuntimeBuilder.java index 12fe62860b..c486ceaa4c 100644 --- a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowRuntimeBuilder.java +++ b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowRuntimeBuilder.java @@ -116,6 +116,23 @@ public WorkflowRuntimeBuilder registerWorkflow(Class cla this.builder.addOrchestration(new WorkflowClassWrapper<>(clazz)); this.workflowSet.add(clazz.getCanonicalName()); this.workflows.add(clazz.getSimpleName()); + + this.logger.info("Registered Workflow: {}", clazz.getSimpleName()); + + return this; + } + + /** + * Registers a Workflow object. + * + * @param any Workflow type + * @param clazz the class being registered + * @return the WorkflowRuntimeBuilder + */ + public WorkflowRuntimeBuilder registerWorkflow(String name, Class clazz) { + this.builder.addOrchestration(new WorkflowClassWrapper<>(clazz)); + this.workflowSet.add(name); + this.workflows.add(name); this.logger.info("Registered Workflow: {}", clazz.getSimpleName());