This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit fa635a16d57595b8f4b74b8952d4365ef72b98c5
Author: Alex Heneveld <a...@cloudsoft.io>
AuthorDate: Wed Mar 20 16:22:23 2024 +0000

    better naming for switch step sub-tasks
---
 .../core/workflow/WorkflowStepResolution.java      |  4 +++-
 .../workflow/steps/flow/SwitchWorkflowStep.java    | 27 ++++++++++++++--------
 2 files changed, 21 insertions(+), 10 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowStepResolution.java
 
b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowStepResolution.java
index cbcff72f17..e356ee1a56 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowStepResolution.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowStepResolution.java
@@ -30,6 +30,7 @@ import 
org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext;
 import org.apache.brooklyn.api.objs.BrooklynObject;
 import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.core.entity.EntityAdjuncts.EntityAdjunctProxyable;
+import org.apache.brooklyn.core.mgmt.BrooklynTaskTags;
 import org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext;
 import org.apache.brooklyn.core.objs.BrooklynObjectInternal;
 import org.apache.brooklyn.core.resolve.jackson.BeanWithTypeUtils;
@@ -228,7 +229,8 @@ public class WorkflowStepResolution {
                 def = converter.call();
             } else {
                 // run in a task context if we can, to facilitate conversion 
and type lookup
-                def = Entities.submit(entity, Tasks.create("convert steps", 
converter)).getUnchecked();
+                def = Entities.submit(entity,
+                        Tasks.builder().displayName("convert 
steps").body(converter).tag(BrooklynTaskTags.TRANSIENT_TASK_TAG).build()).getUnchecked();
             }
 
             if (def instanceof 
WorkflowStepDefinition.WorkflowStepDefinitionWithSpecialDeserialization) {
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/workflow/steps/flow/SwitchWorkflowStep.java
 
b/core/src/main/java/org/apache/brooklyn/core/workflow/steps/flow/SwitchWorkflowStep.java
index 42598bf8f0..a1e7831329 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/workflow/steps/flow/SwitchWorkflowStep.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/workflow/steps/flow/SwitchWorkflowStep.java
@@ -100,35 +100,44 @@ public class SwitchWorkflowStep extends 
WorkflowStepDefinition implements Workfl
         for (int i = 0; i<stepsResolved.size(); i++) {
             // go through steps, find first that matches
 
+            String potentialTaskName = 
Tasks.current().getDisplayName()+"-"+(i+1);
+
             WorkflowStepDefinition subStep = stepsResolved.get(i);
+            String name = subStep.getName();
+            if (Strings.isBlank(name)) {
+                subStep.setName(potentialTaskName);
+                name = subStep.getName();
+                potentialTaskName = null;
+            }
 
             WorkflowStepInstanceExecutionContext subStepContext = new 
WorkflowStepInstanceExecutionContext(
                 /** use same step index */ context.getStepIndex(), subStep, 
context.getWorkflowExectionContext());
 
-            // might want to record sub-step context somewhere; but for now we 
don't
-
-            String potentialTaskName = 
Tasks.current().getDisplayName()+"-"+(i+1);
+            // sub-step context gets recorded in selectedStepContext,
+            // and promoted and used by the UI
 
             DslPredicates.DslPredicate condition = 
subStep.getConditionResolved(subStepContext);
 
             if (condition!=null) {
-                if (log.isTraceEnabled()) log.trace("Considering condition " + 
condition + " for " + potentialTaskName);
+                if (log.isTraceEnabled()) log.trace("Considering condition " + 
condition + " for " + name);
                 boolean conditionMet = 
DslPredicates.evaluateDslPredicateWithBrooklynObjectContext(condition, 
valueResolved, subStepContext.getEntity());
-                if (log.isTraceEnabled()) log.trace("Considered condition " + 
condition + " for " + potentialTaskName + ": " + conditionMet);
+                if (log.isTraceEnabled()) log.trace("Considered condition " + 
condition + " for " + name + ": " + conditionMet);
                 if (!conditionMet) continue;
             }
 
             setStepState(context, true, subStep, subStepContext);  // persist 
this, so when we resume we can pick up the same one
+            // provide some details of other step
+            name = subStepContext.getName();
+            context.noteOtherMetadata("Switch match", "Case 
"+(i+1)+(Strings.isNonBlank(name) && Strings.isNonBlank(potentialTaskName) ? ": 
"+name : ""));
+
             Task<?> handlerI = subStep.newTaskAsSubTask(subStepContext,
-                    potentialTaskName, 
BrooklynTaskTags.tagForWorkflowSubStep(context, i));
+                    null, BrooklynTaskTags.tagForWorkflowSubStep(context, i));
 
-            log.debug("Switch matched at substep "+i+", running " + 
potentialTaskName + " '" + subStep.computeName(subStepContext, false)+"' in 
task "+handlerI.getId());
+            log.debug("Switch matched at substep "+i+", running " + 
(potentialTaskName!=null ? potentialTaskName : "case") + " '" + 
subStep.computeName(subStepContext, false)+"' in task "+handlerI.getId());
 
             Object result = DynamicTasks.queue(handlerI).getUnchecked();
             context.next = WorkflowReplayUtils.getNext(subStepContext, 
subStep, context, this);
 
-            // provide some details of other step
-            context.noteOtherMetadata("Switch match", "Case "+(i+1)+": 
"+Strings.firstNonBlank(subStepContext.getName(), 
subStepContext.getWorkflowStepReference()));
             context.otherMetadata.putAll(subStepContext.otherMetadata);
 
             return result;

Reply via email to