Я предполагаю, что настраиваемое действие - это развернутая ферма, которая наследуется от System.Workflow.ComponentModel.Activity (возможно, с использованием подкласса SequenceActivity, но на самом деле это не имеет значения)
Я предполагаю, что вы не создали требуемый файл ACTIONS, который развертывается в TEMPLATE \ 1033 \ Workflow
<?xml version="1.0" encoding="utf-8" ?>
<WorkflowInfo>
<Actions Sequential="then" Parallel="and">
<Action Name="Description for SP Designer"
Assembly="$SharePoint.Project.AssemblyFullName$"
ClassName="AssemblyName.ClassName"
AppliesTo="all"
Category="SPD category"
UsesCurrentItem="true"
>
<RuleDesigner Sentence="Line as it appears in SPD workflow" />
<Parameters>
<Parameter Name="__ActivationProperties" Type="Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties, Microsoft.SharePoint" Direction="In" />
</Parameters>
</Action>
</Actions>
</WorkflowInfo>
SPD читает список действий из файлов ACTIONS. Добавив файл, вы попадете в меню. Чтобы фактически добавить его в рабочий процесс, вам также необходимо авторизовать пользовательское действие рабочего процесса по имени класса.
Чтобы добавить авторизованный тип, я использую приемник функций со следующим spwebmodification:
private SPWebConfigModification CreateWebConfigModification(string assembly, string assemblyNamespace)
{
return new SPWebConfigModification()
{
Type = (SPWebConfigModification.SPWebConfigModificationType)0,
Name = String.Format("authorizedType[@Assembly='{0}'][@Namespace='{1}'][@TypeName='*'][@Authorized='True']", (object)assembly, (object)assemblyNamespace),
Path = "configuration/System.Workflow.ComponentModel.WorkflowCompiler/authorizedTypes",
Owner = assemblyNamespace,
Sequence = 0U,
Value = String.Format("<authorizedType Assembly='{0}' Namespace='{1}' TypeName='*' Authorized='True' />", (object)assembly, (object)assemblyNamespace)
};
}
это сгенерирует SPWebConfigModification, которую можно использовать во время установки / удаления.