using Elsa.ActivityDefinitions.Activities; using Elsa.ActivityDefinitions.Services; using Elsa.Workflows.Core.Services; namespace Elsa.ActivityDefinitions.Implementations; /// /// Returns a the root activity for a given . /// public class ActivityDefinitionPortResolver : IActivityPortResolver { private readonly IActivityDefinitionStore _store; private readonly IActivityDefinitionMaterializer _activityDefinitionMaterializer; public ActivityDefinitionPortResolver(IActivityDefinitionStore store, IActivityDefinitionMaterializer activityDefinitionMaterializer) { _store = store; _activityDefinitionMaterializer = activityDefinitionMaterializer; } public int Priority => 0; public bool GetSupportsActivity(IActivity activity) => activity is ActivityDefinitionActivity; public async ValueTask> GetPortsAsync(IActivity activity, CancellationToken cancellationToken = default) { var root = await _activityDefinitionMaterializer.MaterializeAsync((ActivityDefinitionActivity)activity, cancellationToken); return new[] { root }; } }