Compartilhar via


SPContentType.WorkflowAssociations property

Obtém um objeto SPWorkflowAssociationCollection que representa as associações de fluxo de trabalho para este tipo de conteúdo.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaração
Public ReadOnly Property WorkflowAssociations As SPWorkflowAssociationCollection
    Get
'Uso
Dim instance As SPContentType
Dim value As SPWorkflowAssociationCollection

value = instance.WorkflowAssociations
public SPWorkflowAssociationCollection WorkflowAssociations { get; }

Property value

Type: Microsoft.SharePoint.Workflow.SPWorkflowAssociationCollection
A coleção de fluxos de trabalho associados com o tipo de conteúdo.

Comentários

A propriedade WorkflowAssociations retorna um objeto SPWorkflowAssociationCollection com o conjunto do tipo de conteúdo de associações do fluxo de trabalho. Você pode recuperar uma associação da coleção usando o valor da propriedade Id como um indexador ou passando o nome da associação de fluxo de trabalho para o método GetAssociationByName .

Cada associação de fluxo de trabalho em uma coleção deve ter um valor exclusivo na propriedade Name . Quando você adiciona uma nova associação de fluxo de trabalho, você deve testar para ver se uma associação de fluxo de trabalho com esse nome já existe na coleção. Se a associação de fluxo de trabalho já é um membro da coleção e para atualizar a associação existente, chame o método Update .

Você pode testar a existência de uma associação de fluxo de trabalho na coleção do tipo de conteúdo, chamando o método GetAssociationByName . Se o valor de retorno do método não for a null reference (Nothing in Visual Basic), então a associação já está na coleção. O exemplo a seguir demonstra essa técnica.

If contentType.WorkflowAssociations.GetAssociationByName(workflowAssociation.Name, site.Locale) Is Nothing Then
    contentType.WorkflowAssociations.Add(workflowAssociation)
Else
    contentType.WorkflowAssociations.Update(workflowAssociation)
End If
if (contentType.WorkflowAssociations.GetAssociationByName(workflowAssociation.Name, site.Locale) == null)
{
    contentType.WorkflowAssociations.Add(workflowAssociation);
}
else
{
    contentType.WorkflowAssociations.Update(workflowAssociation);
}

Examples

O exemplo a seguir é um aplicativo de console que cria uma associação de fluxo de trabalho, adiciona à coleção de um tipo de conteúdo de associações do fluxo de trabalho e, em seguida, propaga a alteração para os filhos do tipo de conteúdo.

Imports System
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Workflow

Module ConsoleApp

    Sub Main()
        Console.WriteLine()

        Dim siteCollection As SPSite = New SPSite("https://localhost")
        Dim site As SPWeb = siteCollection.OpenWeb()

        Dim siteContentType As SPContentType = site.ContentTypes("Test Document")
        Dim taskListTitle As String = "Tasks"
        Dim historyListTitle As String = "Workflow History"
        Dim workflowName As String = "Red-Yellow-Green"

        ' Get a template.
        Dim workflowTemplate As SPWorkflowTemplate = Nothing
        For Each template As SPWorkflowTemplate In site.WorkflowTemplates
            workflowTemplate = template
            ' We'll take a template everyone has
            If workflowTemplate.Name = "Three-state" Then
                Exit For
            End If
        Next template

        ' Create an association.
        Dim workflowAssociation As SPWorkflowAssociation = _
                  SPWorkflowAssociation.CreateSiteContentTypeAssociation(workflowTemplate, _
                                                                         workflowName, _
                                                                         taskListTitle, _
                                                                         historyListTitle)

        ' Add the association to the content type or update it if it already exists.
        Console.Write("Workflow association {0} has been ", workflowAssociation.Name)
        If siteContentType.WorkflowAssociations.GetAssociationByName(workflowAssociation.Name, site.Locale) Is Nothing Then
            siteContentType.WorkflowAssociations.Add(workflowAssociation)
            Console.WriteLine("added.")
        Else
            siteContentType.WorkflowAssociations.Update(workflowAssociation)
            Console.WriteLine("updated.")
        End If

        ' Propagate to children of this content type.
        siteContentType.UpdateWorkflowAssociationsOnChildren(False, True, True, False)

        ' Clean up.
        site.Dispose()
        siteCollection.Dispose()

        Console.WriteLine()
        Console.Write("Press ENTER to continue...")
        Console.ReadLine()
    End Sub

End Module
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Workflow;

namespace Test
{
    class ConsoleApp
    {
        static void Main(string[] args)
        {
            Console.WriteLine();
            SPSite siteCollection = new SPSite("https://localhost");
            SPWeb site = siteCollection.OpenWeb();

            SPContentType siteContentType = site.ContentTypes["Test Document"];
            string taskListTitle = "Tasks";
            string historyListTitle = "Workflow History";
            string workflowName = "Red-Yellow-Green";

            // Get a template.
            SPWorkflowTemplate workflowTemplate = null;
            foreach (SPWorkflowTemplate template in site.WorkflowTemplates)
            {
                workflowTemplate = template;

                // We'll take a template everyone has.
                if (workflowTemplate.Name == "Three-state") break;
            }

            // Create an association.
            SPWorkflowAssociation workflowAssociation = 
                SPWorkflowAssociation.CreateSiteContentTypeAssociation(workflowTemplate, 
                                                                       workflowName, 
                                                                       taskListTitle, 
                                                                       historyListTitle);

            // Add the association to the content type or update it if it already exists.
            Console.Write("Workflow association {0} has been ", workflowAssociation.Name);
            if (siteContentType.WorkflowAssociations.GetAssociationByName(workflowAssociation.Name, site.Locale) == null)
            {
                siteContentType.WorkflowAssociations.Add(workflowAssociation);
                Console.WriteLine("added.");
            }
            else
            {
                siteContentType.WorkflowAssociations.Update(workflowAssociation);
                Console.WriteLine("updated.");
            }

            // Propagate to children of this content type.
            siteContentType.UpdateWorkflowAssociationsOnChildren(false,  // Do not generate full change list
                                                                 true,   // Push down to derived content types
                                                                 true,   // Push down to list content types
                                                                 false); // Do not throw exception if sealed or readonly  

            site.Dispose();
            siteCollection.Dispose();

            Console.WriteLine();
            Console.Write("Press ENTER to continue...");
            Console.ReadLine();
        }
    }
}

O exemplo a seguir é um aplicativo de console que remove a associação de fluxo de trabalho é criada pelo exemplo anterior.

Imports System
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Workflow

Module ConsoleApp

    Sub Main()
        Dim site As SPSite = New SPSite("https://localhost")
        Try
            Dim web As SPWeb = site.OpenWeb()
            Try
                Dim ctName As String = "Test Document"
                Dim wfName As String = "Red-Yellow-Green"

                Dim contentType As SPContentType = web.ContentTypes(ctName)
                If Not contentType Is Nothing Then
                    Dim wfAssociation As SPWorkflowAssociation = _
                        contentType.WorkflowAssociations.GetAssociationByName(wfName, web.Locale)
                    If Not wfAssociation Is Nothing Then
                        ' Remove the workflow association.
                        contentType.WorkflowAssociations.Remove(wfAssociation)
                        Console.WriteLine("The association with {0} workflow has been removed.", wfAssociation.Name)
                    Else
                        Console.WriteLine("An association with {0} workflow was not found.", wfName)
                    End If
                Else
                    Console.WriteLine("Content type {0} does not exist.", ctName)
                End If

            Finally
                web.Dispose()
            End Try
        Finally
            site.Dispose()
        End Try
        Console.Write(vbCrLf + "Press ENTER to continue...")
        Console.ReadLine()
    End Sub
End Module
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Workflow;

namespace Test
{
    class ConsoleApp
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    string ctName = "Test Document";
                    string wfName = "Red-Yellow-Green";

                    SPContentType contentType = web.ContentTypes[ctName];
                    if (null != contentType)
                    {
                        SPWorkflowAssociation wfAssociation =
                            contentType.WorkflowAssociations.GetAssociationByName(wfName, web.Locale);

                        if (null != wfAssociation)
                        {
                            // Remove the workflow association.
                            contentType.WorkflowAssociations.Remove(wfAssociation);
                            Console.WriteLine("The association with {0} workflow has been removed.", wfAssociation.Name);
                        }
                        else
                        {
                            Console.WriteLine("An association with {0} workflow was not found.", wfName);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Content type {0} does not exist.", ctName);
                    }
                }
            }
            Console.Write("\nPress ENTER to continue...");
            Console.ReadLine();
        }
    }
}

Ver também

Referência

SPContentType class

SPContentType members

Microsoft.SharePoint namespace

Add(SPWorkflowAssociation)

Remove(SPWorkflowAssociation)

Outros recursos

Introduction to Workflows in Windows SharePoint Services