Если кому-то это поможет, я написал автоматическийPropertyCategorizer для присвоения категориям всех действий:
public class AutomaticPropertyCategorizer : IRegisterMetadata
{
public void Register()
{
AttributeTableBuilder builder = new AttributeTableBuilder();
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies().
Where(a => !a.FullName.StartsWith("System")))
{
var activityTypes = from t in assembly.GetTypes()
where t.IsSubclassOf(typeof(Activity))
select t;
foreach (Type t in activityTypes)
{
foreach (PropertyDescriptor pd in properties)
{
if (pd.PropertyType.IsSubclassOf(typeof(InArgument)))
{
tableBuilder.AddCustomAttributes(activityType, pd.Name, new CategoryAttribute("Input"));
}
else if (pd.PropertyType.IsSubclassOf(typeof(OutArgument)))
{
tableBuilder.AddCustomAttributes(activityType, pd.Name, new CategoryAttribute("Output"));
}
else if (pd.PropertyType.IsSubclassOf(typeof(InOutArgument)))
{
tableBuilder.AddCustomAttributes(activityType, pd.Name, new CategoryAttribute("Input / Output"));
}
}
}
}
AttributeTable attributes = builder.CreateTable();
MetadataStore.AddAttributeTable(attributes);
}
}