Use correct output name identifiers based on workflow tool version

This commit is contained in:
Sipke Schoorstra 2023-08-02 22:52:02 +02:00
parent c8dd70693e
commit cd5c7fbb1b

View file

@ -168,8 +168,13 @@ public class JintJavaScriptEvaluator : IJavaScriptEvaluator
{
// Select activities with outputs.
var activityExecutionContext = context.GetActivityExecutionContext();
var toolVersion = activityExecutionContext.WorkflowExecutionContext.Workflow.WorkflowMetadata.ToolVersion;
var useActivityName = toolVersion?.Major >= 3;
var activitiesWithOutputs = activityExecutionContext.GetActivitiesWithOutputs();
if (useActivityName)
activitiesWithOutputs = activitiesWithOutputs.Where(x => !string.IsNullOrWhiteSpace(x.Activity.Name));
foreach (var activityWithOutput in activitiesWithOutputs)
{
var activity = activityWithOutput.Activity;
@ -178,7 +183,8 @@ public class JintJavaScriptEvaluator : IJavaScriptEvaluator
foreach (var output in activityDescriptor.Outputs)
{
var outputPascalName = output.Name.Pascalize();
var activityIdPascalName = activity.Id.Pascalize();
var activityIdentifier = useActivityName ? activity.Name : activity.Id;
var activityIdPascalName = activityIdentifier.Pascalize();
engine.SetValue($"get{outputPascalName}From{activityIdPascalName}", (Func<object?>)(() => GetOutput(context, activity.Id, output.Name)));
}
}