Как проверить, используется ли текущий компонент, а также сведения о пользователе, который оформляет заказ с помощью 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;
}