Add support for (non-)browsable activities
This commit is contained in:
parent
6bddf50d77
commit
da2a395d49
|
|
@ -4,6 +4,6 @@ namespace Elsa.Metadata
|
|||
{
|
||||
public static class ActivityDescriberExtensions
|
||||
{
|
||||
public static ActivityDescriptor Describe<T>(this IActivityDescriber describer) where T : IActivity => describer.Describe(typeof(T));
|
||||
public static ActivityDescriptor? Describe<T>(this IActivityDescriber describer) where T : IActivity => describer.Describe(typeof(T));
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,6 @@ namespace Elsa.Metadata
|
|||
{
|
||||
public interface IActivityDescriber
|
||||
{
|
||||
ActivityDescriptor Describe(Type activityType);
|
||||
ActivityDescriptor? Describe(Type activityType);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.ActivityResults;
|
||||
|
|
@ -11,6 +12,7 @@ namespace Elsa.Activities.Primitives
|
|||
/// <summary>
|
||||
/// Run arbitrary .NET code from coded workflows.
|
||||
/// </summary>
|
||||
[Browsable(false)]
|
||||
public class Inline : Activity
|
||||
{
|
||||
public Inline() => Function = context => new ValueTask<IActivityExecutionResult>(Done());
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Elsa.Attributes;
|
||||
|
|
@ -19,9 +20,16 @@ namespace Elsa.Metadata
|
|||
_optionsProviders = optionsProviders;
|
||||
}
|
||||
|
||||
public ActivityDescriptor Describe(Type activityType)
|
||||
public ActivityDescriptor? Describe(Type activityType)
|
||||
{
|
||||
var browsableAttribute = activityType.GetCustomAttribute<BrowsableAttribute>();
|
||||
var isBrowsable = browsableAttribute == null || browsableAttribute.Browsable;
|
||||
|
||||
if (!isBrowsable)
|
||||
return null;
|
||||
|
||||
var activityAttribute = activityType.GetCustomAttribute<ActivityAttribute>();
|
||||
|
||||
var typeName = activityAttribute?.Type ?? activityType.Name;
|
||||
|
||||
var displayName =
|
||||
|
|
|
|||
|
|
@ -33,11 +33,11 @@ namespace Elsa.Server.Api.Endpoints.Activities
|
|||
]
|
||||
public IActionResult Handle()
|
||||
{
|
||||
var descriptors = _activities.Select(DescribeActivity).ToList();
|
||||
var descriptors = _activities.Select(DescribeActivity).Where(x => x != null).Select(x => x!).ToList();
|
||||
var model = new Models.List<ActivityDescriptor>(descriptors);
|
||||
return Ok(model);
|
||||
}
|
||||
|
||||
private ActivityDescriptor DescribeActivity(IActivity activity) => _activityDescriber.Describe(activity.GetType());
|
||||
private ActivityDescriptor? DescribeActivity(IActivity activity) => _activityDescriber.Describe(activity.GetType());
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue