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;