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
Microsoft.SharePoint namespace