如何检查当前组件是否结帐以及使用tridion coreservices结帐的用户详细信息

时间:2013-01-10 20:27:24

标签: tridion tridion-2011 tridion-core-services

我想编写一个小函数来检查传递的Item对象是否在Tridion中结帐,如果是,那么它将返回“true”并且我还想获​​得使用Tridion 2011核心结账的用户的详细信息服务。

我知道我们TryCheckout中有CheckoutCoreServiceClient,但它只返回可识别对象。

2 个答案:

答案 0 :(得分:11)

您需要查看项目上的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 - 该项目位于工作流程中。

答案 1 :(得分:0)

下面是获取ItemCheckout详情的示例代码,其中包含用户详细信息。

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;
}