Fix output mapping naming collision
This commit is contained in:
parent
e4d6ad22c4
commit
3a4b15be13
|
|
@ -77,8 +77,10 @@ public class WorkflowDefinitionActivity : Composite, IInitializable
|
|||
var value = variable.Get(activityExecutionContext);
|
||||
|
||||
// Assign the value to the output synthetic property.
|
||||
// Make sure to select a parent scope to avoid naming collisions between outputs defined on the current scope and outputs defined on parent scopes.
|
||||
var parentActivityExecutionContext = activityExecutionContext.ParentActivityExecutionContext ?? activityExecutionContext;
|
||||
var output = SyntheticProperties.TryGetValue(outputDescriptor.Name, out var outputValue) ? (Output?)outputValue : default;
|
||||
activityExecutionContext.Set(output, value);
|
||||
parentActivityExecutionContext.Set(output, value);
|
||||
}
|
||||
|
||||
// Complete this activity with the signal value.
|
||||
|
|
|
|||
|
|
@ -132,6 +132,18 @@
|
|||
<None Update="Scenarios\ParentChildCompletion\Workflows\parent.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Scenarios\ParentChildOutputMapping\Workflows\a.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Scenarios\ParentChildOutputMapping\Workflows\b.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Scenarios\ParentChildOutputMapping\Workflows\c.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Scenarios\ParentChildOutputMapping\Workflows\d.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -41,4 +41,26 @@ public class Tests
|
|||
var lines = _capturingTextWriter.Lines.ToList();
|
||||
Assert.Equal(new[] { "Result: 9" }, lines);
|
||||
}
|
||||
|
||||
[Fact(DisplayName = "Multiple parent/child workflows receive output from child workflows even when using same output names.")]
|
||||
public async Task Test2()
|
||||
{
|
||||
// Populate registries.
|
||||
await _services.PopulateRegistriesAsync();
|
||||
|
||||
// Import workflows.
|
||||
await _services.ImportWorkflowDefinitionAsync("Scenarios/ParentChildOutputMapping/Workflows/a.json");
|
||||
await _services.ImportWorkflowDefinitionAsync("Scenarios/ParentChildOutputMapping/Workflows/b.json");
|
||||
await _services.ImportWorkflowDefinitionAsync("Scenarios/ParentChildOutputMapping/Workflows/c.json");
|
||||
|
||||
// Import root workflow.
|
||||
var workflowDefinition = await _services.ImportWorkflowDefinitionAsync("Scenarios/ParentChildOutputMapping/Workflows/d.json");
|
||||
|
||||
// Execute.
|
||||
await _services.RunWorkflowUntilEndAsync(workflowDefinition.DefinitionId);
|
||||
|
||||
// Assert expected output.
|
||||
var lines = _capturingTextWriter.Lines.ToList();
|
||||
Assert.Equal(new[] { "FooBar" }, lines);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"id":"5d8015cea7b44c96","definitionId":"7fe314161d2d2ac6","name":"A","createdAt":"2023-11-15T13:55:38.86581+00:00","version":1,"toolVersion":"3.0.0.0","variables":[],"inputs":[],"outputs":[{"type":"Object","name":"Output1","displayName":"Output 1","category":"Primitives","isArray":false}],"outcomes":[],"customProperties":{"Elsa:WorkflowContextProviderTypes":[]},"isReadonly":false,"isLatest":true,"isPublished":true,"options":{"usableAsActivity":true,"autoUpdateConsumingWorkflows":true},"root":{"type":"Elsa.Flowchart","version":1,"id":"d84ccfca1b90bc0c","nodeId":"Workflow1:d84ccfca1b90bc0c","metadata":{},"customProperties":{"source":"FlowchartJsonConverter.cs:47","notFoundConnections":[],"canStartWorkflow":false,"runAsynchronously":false},"activities":[{"outputName":{"typeName":"String","expression":{"type":"Literal","value":"Output1"},"memoryReference":{"id":"a6389a28e986c6ff:input-0"}},"outputValue":{"typeName":"Object","expression":{"type":"Literal","value":"Foo"},"memoryReference":{"id":"a6389a28e986c6ff:input-1"}},"id":"a6389a28e986c6ff","nodeId":"Workflow1:d84ccfca1b90bc0c:a6389a28e986c6ff","name":"SetOutput1","type":"Elsa.SetOutput","version":1,"customProperties":{"canStartWorkflow":false,"runAsynchronously":false},"metadata":{"designer":{"position":{"x":-60,"y":240},"size":{"width":107.734375,"height":50}}}}],"connections":[]}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"id":"d5221501eeb78037","definitionId":"8c751e0c53821439","name":"B","createdAt":"2023-11-15T13:59:18.773434+00:00","version":1,"toolVersion":"3.0.0.0","variables":[],"inputs":[],"outputs":[{"type":"Object","name":"Output1","displayName":"Output 1","category":"Primitives","isArray":false}],"outcomes":[],"customProperties":{"Elsa:WorkflowContextProviderTypes":[]},"isReadonly":false,"isLatest":true,"isPublished":true,"options":{"usableAsActivity":true,"autoUpdateConsumingWorkflows":true},"root":{"type":"Elsa.Flowchart","version":1,"id":"49a24a01a4c318de","nodeId":"Workflow1:49a24a01a4c318de","metadata":{},"customProperties":{"source":"FlowchartJsonConverter.cs:47","notFoundConnections":[],"canStartWorkflow":false,"runAsynchronously":false},"activities":[{"script":{"typeName":"String","expression":{"type":"Literal","value":"return \u0022Bar\u0022;"},"memoryReference":{"id":"247da1e267d76f80:input-0"}},"possibleOutcomes":null,"result":{"typeName":"Object","memoryReference":{"id":"Output1"}},"id":"247da1e267d76f80","nodeId":"Workflow1:49a24a01a4c318de:247da1e267d76f80","name":"RunCSharp1","type":"Elsa.RunCSharp","version":1,"customProperties":{"canStartWorkflow":false,"runAsynchronously":false},"metadata":{"designer":{"position":{"x":-200,"y":-140},"size":{"width":83.640625,"height":50}}}}],"connections":[]}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"id":"c4041d72854d317c","definitionId":"8472bcf9ca261e55","name":"C","createdAt":"2023-11-15T14:05:30.708042+00:00","version":6,"toolVersion":"3.0.0.0","variables":[],"inputs":[],"outputs":[{"type":"Object","name":"Output1","displayName":"Output 1","category":"Primitives","isArray":false},{"type":"Object","name":"Output2","displayName":"Output 2","category":"Primitives","isArray":false}],"outcomes":[],"customProperties":{"Elsa:WorkflowContextProviderTypes":[]},"isReadonly":false,"isLatest":true,"isPublished":true,"options":{"usableAsActivity":true,"autoUpdateConsumingWorkflows":true},"root":{"type":"Elsa.Flowchart","version":1,"id":"6ee60c9988b58904","nodeId":"Workflow1:6ee60c9988b58904","metadata":{},"customProperties":{"source":"FlowchartJsonConverter.cs:47","notFoundConnections":[],"canStartWorkflow":false,"runAsynchronously":false},"activities":[{"workflowDefinitionId":"7fe314161d2d2ac6","workflowDefinitionVersionId":"5d8015cea7b44c96","latestAvailablePublishedVersion":1,"latestAvailablePublishedVersionId":"5d8015cea7b44c96","id":"67daca2a2fc729b6","nodeId":"Workflow1:6ee60c9988b58904:67daca2a2fc729b6","name":"A1","type":"A","version":1,"customProperties":{"canStartWorkflow":false,"runAsynchronously":false},"metadata":{"designer":{"position":{"x":-311.5,"y":-145},"size":{"width":41.59375,"height":50}}},"output1":{"typeName":"Object","memoryReference":{"id":"Output1"}}},{"workflowDefinitionId":"8c751e0c53821439","workflowDefinitionVersionId":"d5221501eeb78037","latestAvailablePublishedVersion":1,"latestAvailablePublishedVersionId":"d5221501eeb78037","id":"d152d5815dcdea0d","nodeId":"Workflow1:6ee60c9988b58904:d152d5815dcdea0d","name":"B1","type":"B","version":1,"customProperties":{"canStartWorkflow":false,"runAsynchronously":false},"metadata":{"designer":{"position":{"x":-194.5,"y":-145},"size":{"width":41.125,"height":50}}},"output1":{"typeName":"Object","memoryReference":{"id":"Output2"}}}],"connections":[{"source":{"activity":"67daca2a2fc729b6","port":"Done"},"target":{"activity":"d152d5815dcdea0d","port":"In"}}]}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"id":"cbf12a4a3d1a52ef","definitionId":"133353946cd83e1d","name":"D","createdAt":"2023-11-15T14:07:04.052579+00:00","version":1,"toolVersion":"3.0.0.0","variables":[{"id":"f1106ece80fd17a8","name":"Variable1","typeName":"Object","isArray":false,"storageDriverTypeName":"Elsa.Workflows.Core.Services.WorkflowStorageDriver, Elsa.Workflows.Core"},{"id":"3a8b25edc9bf109","name":"Variable2","typeName":"Object","isArray":false,"storageDriverTypeName":"Elsa.Workflows.Core.Services.WorkflowStorageDriver, Elsa.Workflows.Core"}],"inputs":[],"outputs":[],"outcomes":[],"customProperties":{"Elsa:WorkflowContextProviderTypes":[]},"isReadonly":false,"isLatest":true,"isPublished":true,"options":{"autoUpdateConsumingWorkflows":false},"root":{"type":"Elsa.Flowchart","version":1,"id":"26838161a6f32e2e","nodeId":"Workflow1:26838161a6f32e2e","metadata":{},"customProperties":{"source":"FlowchartJsonConverter.cs:47","notFoundConnections":[],"canStartWorkflow":false,"runAsynchronously":false},"activities":[{"workflowDefinitionId":"8472bcf9ca261e55","workflowDefinitionVersionId":"c4041d72854d317c","latestAvailablePublishedVersion":6,"latestAvailablePublishedVersionId":"c4041d72854d317c","id":"db7bda6a28d8de82","nodeId":"Workflow1:26838161a6f32e2e:db7bda6a28d8de82","name":"C1","type":"C","version":6,"customProperties":{"canStartWorkflow":false,"runAsynchronously":false},"metadata":{"designer":{"position":{"x":-298.5,"y":-168},"size":{"width":41.578125,"height":50}}},"output1":{"typeName":"Object","memoryReference":{"id":"f1106ece80fd17a8"}},"output2":{"typeName":"Object","memoryReference":{"id":"3a8b25edc9bf109"}}},{"text":{"typeName":"String","expression":{"type":"CSharp","value":"return $\u0022{Variable.Variable1}{Variable.Variable2}\u0022;"},"memoryReference":{"id":"a815c4cf1e668419:input-0"}},"id":"a815c4cf1e668419","nodeId":"Workflow1:26838161a6f32e2e:a815c4cf1e668419","name":"WriteLine1","type":"Elsa.WriteLine","version":1,"customProperties":{"canStartWorkflow":false,"runAsynchronously":false},"metadata":{"designer":{"position":{"x":-139.5,"y":-168},"size":{"width":139.296875,"height":50}}}}],"connections":[{"source":{"activity":"db7bda6a28d8de82","port":"Done"},"target":{"activity":"a815c4cf1e668419","port":"In"}}]}}
|
||||
Loading…
Reference in a new issue