EcmDocumentRouterRule Class

Definition

Represents a rule that defines document-routing behavior for the content organizer.

public ref class EcmDocumentRouterRule
public class EcmDocumentRouterRule
type EcmDocumentRouterRule = class
Public Class EcmDocumentRouterRule
Inheritance
EcmDocumentRouterRule

Examples

The following sample code creates a rule to organize documents of the “Contract” content type into a document library on the site. It exemplifies how to use the Content Organizer API to organize documents on the site.

using System;
using System.Text;
using Microsoft.SharePoint;
using TaxonomyField = Microsoft.SharePoint.Taxonomy.TaxonomyField;
using EcmDocumentRoutingWeb = Microsoft.Office.RecordsManagement.RecordsRepository.EcmDocumentRoutingWeb;
using EcmDocumentRouterRule = Microsoft.Office.RecordsManagement.RecordsRepository.EcmDocumentRouterRule;
using EcmDocumentRouter = Microsoft.Office.RecordsManagement.RecordsRepository.EcmDocumentRouter;
using DocumentRouterAutoFolderSettings = Microsoft.Office.RecordsManagement.RecordsRepository.DocumentRouterAutoFolderSettings;

namespace Microsoft.SDK.SharePointServer.Samples { class ContentOrganizerCodeSample { /// <summary> /// Sample code to create a content organizer rule that organizes documents of the Contract content type to a document library within the site. /// Also exemplifies usage of content organizer API to organize documents in the site. /// </summary> /// <remarks>This code sample assumes that the site contains a content type called "Contract" derived from the Document content type. /// The Contract content type contains a required TaxonomyField called "Business Division" </remarks> /// <param name="args"></param> /// <see cref="SPContentType"/> /// <see cref="SPField.Required"/> /// <see cref="TaxonomyField"/> /// <exception cref="System.ArgumentException">List did not exist in the site</exception> static void Main(string[] args) { // Change http://SiteUrl to the absolute url of the content organizer enabled site where the custom router needs to be registered. const string absoluteSiteUrl = "http://SiteUrl"; // Change Organize Documents to the desired name for the rule. const string ruleName = "Organize Documents"; // Change "Sample rule to organize documents" to a description for the rule. const string ruleDescription = "Sample rule to organize documents"; // Change My Documents to the desired library to which documents matching this rule should be organized. const string ruleLibraryName = "My Documents"; // Change Contract to the name of the content type on which this rule should be based. const string ruleContentTypeName = "Contract";

        // Values for Condition on fields - See SPField class for more details
        // Set conditionFieldId with the serialized Guid, Id property of the SPField used in the condition
        const string conditionFieldId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
        // Set conditionFieldInternalName with the InternalName property of the SPField
        const string conditionFieldInternalName = "FieldInternalName";
        // Set conditionFieldTitle with the Title property of the SPField.
        const string conditionFieldTitle = "FieldTitle";
        // Set conditionOperator with the operator used to evaluate whether a document matches this rule. 
        // If conditionOperator is set to be a unary operator (IsEmpty or IsNotEmpty), it will be applied on the value of the condition field on the document.            
        const string conditionOperator = "Contains";
        // Set conditionFieldValue with the value used as an operand for "Op" if "Op" is a binary operator (Contains, Equal etc.,).
        const string conditionFieldValue = "Restaurant";

        // Values for automatic folder creation settings
        // Change Business Division to the name of the managed metadata field on which automatic folder creation is based.
        const string autoFolderPropertyName = "Business Division";
        // Replace with a format of your choice. Place holder %1 will be replaced by the name of the field and %2 will be replaced by the value of the field for the document.
        const string autoFolderNameFormat = "Contract %1 - %2";

        // An empty title indicates absence of conditions.
        string conditionXml = string.IsNullOrEmpty(conditionFieldTitle) ?
            string.Empty :
            String.Format(@"<Condition Column=""{0}|{1}|{2}"" Operator=""{3}"" Value=""{4}"" />",
            conditionFieldId, conditionFieldInternalName, conditionFieldTitle,
            conditionOperator,
            conditionFieldValue);

        // The condition Xml can repeat 0-5 times depending on the number of conditions required for a document to match this rule.
        string conditionsXml = String.Format("<Conditions>{0}</Conditions>", conditionXml);

        using (SPSite contentOrganizerSiteCollection = new SPSite(absoluteSiteUrl))
        {
            SPWeb contentOrganizerSite = contentOrganizerSiteCollection.OpenWeb();
            EcmDocumentRoutingWeb contentOrganizerSiteWrapper = new EcmDocumentRoutingWeb(contentOrganizerSite);

            // Ensure that the content type exists for this rule                
            SPContentType ruleContentType = contentOrganizerSite.ContentTypes[ruleContentTypeName];

            // Ensure that the final location exists for this rule.
            SPList ruleLibrary = contentOrganizerSite.Lists[ruleLibraryName];
            // Ensure that the final location contains the content type of the rule.
            if (ruleLibrary.ContentTypes.BestMatch(ruleContentType.Id) == null)
            {
                throw new ArgumentException(String.Format(
                    "Ensure that the library {0} contains content type {1} before creating the rule",
                    ruleLibraryName,
                    ruleContentTypeName));
            }
            // Create a blank rule
            EcmDocumentRouterRule organizeDocument = new EcmDocumentRouterRule(contentOrganizerSite);
            // Configure the rule to specify conditions that match the rule and final location for documents matching this rule.
            organizeDocument.Name = ruleName;
            organizeDocument.Description = ruleDescription;
            // Configure the rule so that it will be evaluated on documents of "Contract" content type
            organizeDocument.ContentTypeString = ruleContentType.Name;
            organizeDocument.RouteToExternalLocation = false;
            // Set a priority for this rule which indicates the order in which rules are executed. This is a number between 0 and 9.
            organizeDocument.Priority = "2";
            // Specify where the documents that match this rule get saved to.
            // To route documents externally, the TargetPath value can be set to one of the SendTo connections configured for this web application or site subscription.
            // Example: organizeDocument.TargetPath = contentOrganizerSiteCollection.WebApplication.OfficialFileHosts[0];
            organizeDocument.TargetPath = ruleLibrary.RootFolder.ServerRelativeUrl;

            // Set the conditions string for this rule
            organizeDocument.ConditionsString = conditionsXml;
            // AutoFolder configuration: Optionally enable automatic folder creation for this rule based on a non-empty (required or boolean) field. 
            // Folders will be created for each unique value of this field in the TargethPath and documents will be saved here.

            // Ensure the SPField for the autofolder property
            TaxonomyField autoFolderField = ruleContentType.Fields[autoFolderPropertyName] as TaxonomyField;
            if (autoFolderField == null)
                throw new ArgumentException(String.Format("The field {0} is not a valid Taxonomy Field", autoFolderPropertyName));

            // Get a handle to the rule auto folder settings.
            DocumentRouterAutoFolderSettings autoFolderSettings = organizeDocument.AutoFolderSettings;
            // Configure AutoFolderSettings for this rule based on the "Business Division" Taxonomy field.                 
            autoFolderSettings.AutoFolderPropertyName = autoFolderField.Title;
            autoFolderSettings.AutoFolderPropertyInternalName = autoFolderField.InternalName;
            autoFolderSettings.AutoFolderPropertyId = autoFolderField.Id;
            // Term store Id required to get the value of the field from the document. Required for TaxonomyField types.
            autoFolderSettings.TaxTermStoreId = autoFolderField.SspId;
            // Set a format for the name of the folder. 
            autoFolderSettings.AutoFolderFolderNameFormat = autoFolderNameFormat;
            // Enabled automatic folder creation for values of the "Business Division" field.
            autoFolderSettings.Enabled = true;

            // Update the rule and commit changes.
            organizeDocument.Update();
        }
    }
}

}

Constructors

EcmDocumentRouterRule(SPWeb)

Initializes a new instance of an object.

Properties

Aliases

Gets or sets aliases for an object.

AutoFolderPropertyName

Gets or sets the name of the AutoFolder property for the current object.

AutoFolderSettings

Gets the AutoFolder settings for the current object.

ConditionsString

Gets or sets the XML string representing the conditions that must be matched for this rule to execute.

ContentTypeString

Gets or sets the name of the SPContentType that is used for metadata matching against this rule's conditions.

CustomRouter

Gets or sets the custom router that should be executed in association with this rule.

Description

Gets or sets the description for the current object.

Enabled

Gets or sets a Boolean value to indicate if the rule is enabled.

Name

Gets or sets the name of the current object.

Priority

Gets or sets the priority of the current object.

RouteToExternalLocation

Gets or sets a value that is true if the rule routes the object to a different location; otherwise, false.

TargetPath

Gets or sets the server-relative path to the destination folder for the documents that match this rule.

Methods

Copy()

Copies a document router rule.

Delete()

Deletes a document router rule.

Update()

Updates a document router rule.

Applies to