diff --git a/src/designer/elsa-workflows-designer/src/modules/switch/switch-port-provider.ts b/src/designer/elsa-workflows-designer/src/modules/switch/switch-port-provider.ts index b6a12f240..db0104ba0 100644 --- a/src/designer/elsa-workflows-designer/src/modules/switch/switch-port-provider.ts +++ b/src/designer/elsa-workflows-designer/src/modules/switch/switch-port-provider.ts @@ -15,7 +15,9 @@ export class SwitchPortProvider implements PortProvider { return []; const cases = activity.cases ?? []; - return cases.map(x => ({name: x.label, displayName: x.label, mode: PortMode.Embedded})); + const ports = cases.map(x => ({name: x.label, displayName: x.label, mode: PortMode.Embedded})); + const defaultPort = {name: 'default', displayName: 'Default', mode: PortMode.Embedded}; + return [...ports, defaultPort]; } resolvePort(portName: string, context: PortProviderContext): Activity | Array { diff --git a/src/modules/Elsa.Workflows.Core/Activities/Switch.cs b/src/modules/Elsa.Workflows.Core/Activities/Switch.cs index 72ee0c27b..68f4e1942 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/Switch.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/Switch.cs @@ -34,7 +34,7 @@ public class Switch : Activity public Output? Output { get; set; } [Input(UIHint = "switch-editor")] public ICollection Cases { get; set; } = new List(); - public IActivity? Default { get; set; } + [Port]public IActivity? Default { get; set; } /// protected override async ValueTask ExecuteAsync(ActivityExecutionContext context) @@ -44,13 +44,11 @@ public class Switch : Activity if (matchingCase != null) { - if (matchingCase.Activity != null) - await context.ScheduleActivityAsync(matchingCase.Activity, OnChildActivityCompletedAsync); + await context.ScheduleActivityAsync(matchingCase.Activity, OnChildActivityCompletedAsync); return; } - if (Default != null) - await context.ScheduleActivityAsync(Default, OnChildActivityCompletedAsync); + await context.ScheduleActivityAsync(Default, OnChildActivityCompletedAsync); } private async Task FindMatchingCaseAsync(ExpressionExecutionContext context)