private async Task <object?> TryEvaluatePropertyAsync(IActivityBlueprintWrapper activityWrapper, string propertyName, CancellationToken cancellationToken)
        {
            try
            {
                return(await activityWrapper.EvaluatePropertyValueAsync(propertyName, cancellationToken));
            }
            catch
            {
                // ignored
            }

            return(null);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 public TriggerProviderContext(IWorkflowBlueprintWrapper workflowWrapper, IActivityBlueprintWrapper activityWrapper)
 {
     WorkflowWrapper = workflowWrapper;
     ActivityWrapper = activityWrapper;
 }
Exemplo n.º 4
0
        private static async Task <object?> GetPropertyValueAsync(IWorkflowBlueprint workflowBlueprint, IActivityBlueprintWrapper activityBlueprintWrapper, ActivityInputDescriptor propertyDescriptor, CancellationToken cancellationToken)
        {
            if (propertyDescriptor.IsDesignerCritical)
            {
                try
                {
                    return(await activityBlueprintWrapper.EvaluatePropertyValueAsync(propertyDescriptor.Name, cancellationToken));
                }
                catch (Exception e)
                {
                    throw new WorkflowException("Failed to evaluate a designer-critical property value. Please make sure that the value does not rely on external context.", e);
                }
            }

            return(workflowBlueprint.GetActivityPropertyRawValue(activityBlueprintWrapper.ActivityBlueprint.Id, propertyDescriptor.Name));
        }
Exemplo n.º 5
0
        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);
        }