private async ValueTask <(Variables InputProperties, Variables OutputProperties)> GetActivityPropertiesAsync(IWorkflowBlueprintWrapper workflowBlueprintWrapper, IActivityBlueprintWrapper activityBlueprintWrapper, CancellationToken cancellationToken) { var activityBlueprint = activityBlueprintWrapper.ActivityBlueprint; var activityType = await _activityTypeService.GetActivityTypeAsync(activityBlueprint.Type, cancellationToken); var activityDescriptor = await _activityTypeService.DescribeActivityType(activityType, cancellationToken); var activityId = activityBlueprint.Id; var activityWrapper = workflowBlueprintWrapper.GetActivity(activityId) !; var inputProperties = new Variables(); var outputProperties = new Variables(); foreach (var property in activityDescriptor.InputProperties) { var value = await GetPropertyValueAsync(workflowBlueprintWrapper.WorkflowBlueprint, activityWrapper, property, cancellationToken); inputProperties.Set(property.Name, value); } foreach (var property in activityDescriptor.OutputProperties) { // Declare output properties to have at least a complete schema. outputProperties.Set(property.Name, null); } return(inputProperties, outputProperties); }
private async ValueTask <Variables> GetActivityPropertiesAsync(IWorkflowBlueprintWrapper workflowBlueprintWrapper, IActivityBlueprintWrapper activityBlueprintWrapper, CancellationToken cancellationToken) { var workflowBlueprint = workflowBlueprintWrapper.WorkflowBlueprint; var activityBlueprint = activityBlueprintWrapper.ActivityBlueprint; var activityId = activityBlueprint.Id; var activityPropertyValueProviders = workflowBlueprint.ActivityPropertyProviders.GetProviders(activityId); var activityWrapper = workflowBlueprintWrapper.GetActivity(activityId) !; var properties = new Variables(); if (activityPropertyValueProviders == null) { return(properties); } foreach (var valueProvider in activityPropertyValueProviders) { var value = await activityWrapper.EvaluatePropertyValueAsync(valueProvider.Key, cancellationToken); properties.Set(valueProvider.Key, value); } return(properties); }