diff --git a/src/core/Elsa.Core/Activities/ControlFlow/Join/Join.cs b/src/core/Elsa.Core/Activities/ControlFlow/Join/Join.cs index 0d8a96716..257d0fc5f 100644 --- a/src/core/Elsa.Core/Activities/ControlFlow/Join/Join.cs +++ b/src/core/Elsa.Core/Activities/ControlFlow/Join/Join.cs @@ -60,10 +60,10 @@ namespace Elsa.Activities.ControlFlow var ancestorActivityIds = workflowExecutionContext.GetInboundActivityPath(Id).ToList(); var activities = workflowExecutionContext.WorkflowBlueprint.Activities.ToDictionary(x => x.Id); var ancestors = ancestorActivityIds.Select(x => activities[x]).ToList(); - var fork = ancestors.FirstOrDefault(x => x.Type == nameof(Fork)); + var forks = ancestors.Where(x => x.Type == nameof(Fork)).ToList(); - await RemoveBlockingActivitiesAsync(workflowExecutionContext, fork); - await RemoveScopeActivitiesAsync(workflowExecutionContext, ancestors, fork); + await RemoveBlockingActivitiesAsync(workflowExecutionContext, forks); + await RemoveScopeActivitiesAsync(workflowExecutionContext, ancestors, forks); // Clear the recorded inbound transitions. This is necessary in case we're in a looping construct. InboundTransitions = new List(); @@ -83,6 +83,12 @@ namespace Elsa.Activities.ControlFlow }; } + private async Task RemoveBlockingActivitiesAsync(WorkflowExecutionContext workflowExecutionContext, IEnumerable forks) + { + foreach (var fork in forks) + await RemoveBlockingActivitiesAsync(workflowExecutionContext, fork); + } + private async Task RemoveBlockingActivitiesAsync(WorkflowExecutionContext workflowExecutionContext, IActivityBlueprint? fork) { var blockingActivities = workflowExecutionContext.WorkflowInstance.BlockingActivities.ToList(); @@ -105,6 +111,12 @@ namespace Elsa.Activities.ControlFlow } } + private async Task RemoveScopeActivitiesAsync(WorkflowExecutionContext workflowExecutionContext, ICollection ancestors, IEnumerable forks) + { + foreach (var fork in forks) + await RemoveScopeActivitiesAsync(workflowExecutionContext, ancestors, fork); + } + private async Task RemoveScopeActivitiesAsync(WorkflowExecutionContext workflowExecutionContext, ICollection ancestors, IActivityBlueprint? fork) { var scopes = workflowExecutionContext.WorkflowInstance.Scopes.AsEnumerable().Reverse().ToList(); diff --git a/src/designer/elsa-workflows-studio/src/components.d.ts b/src/designer/elsa-workflows-studio/src/components.d.ts index 2cb06fbc7..02283a4b7 100644 --- a/src/designer/elsa-workflows-studio/src/components.d.ts +++ b/src/designer/elsa-workflows-studio/src/components.d.ts @@ -20,6 +20,8 @@ export namespace Components { interface ElsaActivityEditorModal { "culture": string; } + interface ElsaActivityPickerModal { + } interface ElsaCheckListProperty { "propertyDescriptor": ActivityPropertyDescriptor; "propertyModel": ActivityDefinitionProperty; @@ -303,6 +305,12 @@ declare global { prototype: HTMLElsaActivityEditorModalElement; new (): HTMLElsaActivityEditorModalElement; }; + interface HTMLElsaActivityPickerModalElement extends Components.ElsaActivityPickerModal, HTMLStencilElement { + } + var HTMLElsaActivityPickerModalElement: { + prototype: HTMLElsaActivityPickerModalElement; + new (): HTMLElsaActivityPickerModalElement; + }; interface HTMLElsaCheckListPropertyElement extends Components.ElsaCheckListProperty, HTMLStencilElement { } var HTMLElsaCheckListPropertyElement: { @@ -593,6 +601,7 @@ declare global { }; interface HTMLElementTagNameMap { "elsa-activity-editor-modal": HTMLElsaActivityEditorModalElement; + "elsa-activity-picker-modal": HTMLElsaActivityPickerModalElement; "elsa-check-list-property": HTMLElsaCheckListPropertyElement; "elsa-checkbox-property": HTMLElsaCheckboxPropertyElement; "elsa-confirm-dialog": HTMLElsaConfirmDialogElement; @@ -647,6 +656,8 @@ declare namespace LocalJSX { interface ElsaActivityEditorModal { "culture"?: string; } + interface ElsaActivityPickerModal { + } interface ElsaCheckListProperty { "propertyDescriptor"?: ActivityPropertyDescriptor; "propertyModel"?: ActivityDefinitionProperty; @@ -918,6 +929,7 @@ declare namespace LocalJSX { } interface IntrinsicElements { "elsa-activity-editor-modal": ElsaActivityEditorModal; + "elsa-activity-picker-modal": ElsaActivityPickerModal; "elsa-check-list-property": ElsaCheckListProperty; "elsa-checkbox-property": ElsaCheckboxProperty; "elsa-confirm-dialog": ElsaConfirmDialog; @@ -973,6 +985,7 @@ declare module "@stencil/core" { export namespace JSX { interface IntrinsicElements { "elsa-activity-editor-modal": LocalJSX.ElsaActivityEditorModal & JSXBase.HTMLAttributes; + "elsa-activity-picker-modal": LocalJSX.ElsaActivityPickerModal & JSXBase.HTMLAttributes; "elsa-check-list-property": LocalJSX.ElsaCheckListProperty & JSXBase.HTMLAttributes; "elsa-checkbox-property": LocalJSX.ElsaCheckboxProperty & JSXBase.HTMLAttributes; "elsa-confirm-dialog": LocalJSX.ElsaConfirmDialog & JSXBase.HTMLAttributes;