Как проверить, используется ли текущий компонент, а также сведения о пользователе, который оформляет заказ с помощью tridion coreservices

Я хочу написать небольшую функцию, чтобы проверить, является ли переданный Объект-объект проверкой в ​​Tridion или нет, если да, тогда он вернет "true", а также я хочу получить информацию о пользователе, который извлек товар, используя основные службы Tridion 2011.

Я знаю у нас TryCheckout так же как Checkout в нашем CoreServiceClient но он возвращает только опознаваемый объект.

2 ответа

Решение

Вам нужно посмотреть на LockType на предмете. Рассмотрите возможность сделать что-то вроде этого

SessionAwareCoreService2010Client client = new SessionAwareCoreService2010Client();
ComponentData data = (ComponentData)client.Read("tcm:300-85609", new ReadOptions());
FullVersionInfo info = (FullVersionInfo)data.VersionInfo;

Полная информация о версии содержит всю необходимую информацию (например, CheckOutUser и LockType). LockType - это перечисление, определенное Tridion.ContentManager.Data.ContentManagement.LockType, и включает в себя следующий набор флагов:

  • Нет - элемент не заблокирован.
  • CheckedOut - товар оформлен. Это может означать либо временную (редактирование) блокировку, либо постоянную блокировку (явная проверка выполняется пользователем), либо блокировку рабочего процесса.
  • Постоянный - элемент извлечен из памяти, то есть используется явное действие извлечения.
  • NewItem - элемент является новым элементом, то есть он был создан, но еще не зарегистрирован в первый раз.
  • InWorkflow - элемент находится в рабочем процессе.

Ниже приведен пример кода для получения подробной информации о ItemCheckedout с информацией о пользователях.

public static Dictionary<bool,string> ItemCheckedOutDetails(string ItemUri, CoreServiceClient client, ReadOptions readOpt, ItemType itemType)
{
    Dictionary<bool, string> itemDetails = null;
    FullVersionInfo itemInfo = null;
    if (itemType == ItemType.Component)
    {
        // reading the component data
        var itemData = (ComponentData)client.Read(ItemUri, readOpt);
        itemInfo = (FullVersionInfo)itemData.VersionInfo;
    }
    else if (itemType == ItemType.Page)
    {
        // reading the page data
        var itemData = (PageData)client.Read(ItemUri, readOpt);
        itemInfo = (FullVersionInfo)itemData.VersionInfo;
    }
    else if (itemType == ItemType.StructureGroup)
    {
        // reading the structuregroup data
        var itemData = (StructureGroupData)client.Read(ItemUri, readOpt);
        itemInfo = (FullVersionInfo)itemData.VersionInfo;
    }
    else if (itemType == ItemType.Publication)
    {
        // reading the Publication data
        var itemData = (PublicationData)client.Read(ItemUri, readOpt);
        itemInfo = (FullVersionInfo)itemData.VersionInfo;
    }
    else if (itemType == ItemType.ComponentTemplate)
    {
        // reading the component template data
        var itemData = (ComponentTemplateData)client.Read(ItemUri, readOpt);
        itemInfo = (FullVersionInfo)itemData.VersionInfo;
    }
    else if (itemType == ItemType.PageTemplate)
    {
        // reading the Page template data
        var itemData = (PageTemplateData)client.Read(ItemUri, readOpt);
        itemInfo = (FullVersionInfo)itemData.VersionInfo;
    }
    else if (itemType == ItemType.MultimediaType)
    {
        // reading the Multimedia Type data
        var itemData = (MultimediaTypeData)client.Read(ItemUri, readOpt);
        itemInfo = (FullVersionInfo)itemData.VersionInfo;
    }

    if (itemInfo != null)
    {
        if (itemInfo.LockType.Value == LockType.CheckedOut)
        {
            itemDetails.Add(true, itemInfo.CheckOutUser.Title);
        }
    }
    return itemDetails;
}
Другие вопросы по тегам