Activity Type Descriptor Locator API

You can use the Activity Type Descriptor Locator API (Descriptor Locator API) to retrieve descriptors by ID or by classification. Use Sitecore’s service locator to get an instance of the Descriptor Locator API:

using Sitecore.DependencyInjection;
using Sitecore.Xdb.Locators.AutomationPlans;
using Microsoft.Extensions.DependencyInjection;

namespace Documentation
{
    public class ActivityLocatorService
    {
        public void Example()
        {
            var locatorService = ServiceLocator.ServiceProvider.GetService<IActivityDescriptorLocator>();
        }
    }
}

Note

The Activity Type Descriptor Locators API is separate from the Marketing Operations API. Activity type descriptors represent a registration of an implemented type and are created by developers. Definitions managed by the Marketing Operations API are created by marketers.

Use the .GetDescriptor() method to get a descriptor by ID. The ID corresponds to the ID of the descriptor item in Sitecore.

using Sitecore.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using System;
using Sitecore.Xdb.MarketingAutomation.Locators.AutomationPlans;
using Sitecore.Xdb.MarketingAutomation.Locators.AutomationPlans.Model;

namespace Documentation
{
    public class ActivityLocatorCreate
    {
        public void Example()
        {
            var locatorService = ServiceLocator.ServiceProvider.GetService<IActivityDescriptorLocator>();

            var locatorId = Guid.Parse("{743489A2-8BD0-49ED-B284-5534AC59685A}"); // Item ID

            IActivityDescriptor descriptor = locatorService.GetDescriptor(locatorId, new System.Globalization.CultureInfo("dk"));
        }
    }
}

Use the .GetAllDescriptors() method to get all activity types. The results can be paginated.

using Sitecore.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using System;
using Sitecore.Marketing.Core;
using Sitecore.Xdb.MarketingAutomation.Locators.AutomationPlans.Model;
using Sitecore.Xdb.MarketingAutomation.Locators.AutomationPlans;

namespace Documentation
{
    public class ActivityLocatorGetAll
    {
        public void Example()
        {
            var locatorService = ServiceLocator.ServiceProvider.GetService<IActivityDescriptorLocator>();

            // Get first 200 descriptors with 'DK' culture
            ResultSet<IActivityDescriptor> descriptors = locatorService.GetAllDescriptors(new System.Globalization.CultureInfo("dk"), 1, 200);

            // Cycle through results
            var firstPage = descriptors.DataPage;
            var total = descriptors.Total;

            foreach (var descriptor in firstPage)
            {
                var nameOfDescriptor = descriptor.Name;
            }

        }
    }
}

Use the .GetDescriptorsByClassification() method to get all activity type descriptors with a particular taxonomy value assigned.

using Sitecore.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using System;
using Sitecore.Marketing.Core;
using Sitecore.Xdb.MarketingAutomation.Locators.AutomationPlans;

namespace Documentation
{
    public class ActivityLocatorGetByClassification
    {
        public void Example()
        {
            var locatorService = ServiceLocator.ServiceProvider.GetService<IActivityDescriptorLocator>();

            var taxonomyId = Guid.Parse("{340062A7-9F50-4CE1-8A53-DA3F6A23B73A}"); // Activity functional type taxonomy
            var taxonomyValue = Guid.Parse("{144EEBB0-1CD1-4DEA-95A7-04D24D16FDC0}"); // Marketing action value

            var descriptors = locatorService.GetDescriptorsByClassification(new System.Globalization.CultureInfo("dk"), taxonomyId, taxonomyValue, 1, 20);

            var pageData = descriptors.DataPage;

            foreach (var descriptor in pageData)
            {
                var name = descriptor.Name;
            }
        }
    }
    }

Important

For performance reasons, you must supply the root taxonomy Guid as well as the value Guid.