2

我发现旧的 VBScript API 和 .Net API 之间有以下区别:

在旧的 VBScript API 中,可以调用“TDSE.getObject”来检索通过 webdav 路径传递的 Tridion 对象、一个整数来选择如何打开它(只读、读取和写入等)以及发布位置的 ID有我们想要的蓝图的确切元素。

在新的 .Net API 中,我发现的只是“Engine.GetObject”,但它只接收 TCM ID 或元素的 webdav 路径。

我们的场景如下;在旧的 VBScript 代码中,getObject 方法的这种重载被用来避免在使用 TCM ID 而不是 webdav 路径时检测到的一些权限问题,并且因为当您需要在不同环境之间复制代码时,它会更加少见(参见 DEV,PREPROD和 PROD 例如),避免更改 TCM ID。

所以我的问题是:

  1. 新的 .Net API 中是否存在和旧的一样的过载?
  2. 如果没有,是否有办法通过 webdav 检索项目,记住其中一些可以本地化并从其父项更改?(旧方法适用于此,如果您发送根 webdav 路径,它将检索本地对象,即使它们的名称与父对象不完全相同)

谢谢!

4

4 回答 4

5

您是否希望能够使用顶级项目的 webdav url,并指定从中获取项目的发布 id?

我会在 Engine 上为您创建一个扩展方法:

public static T GetObject<T>(this Engine engine, string webDavUrl, int publicationId)
    where T : IdentifiableObject
{
    [logic to retreive the item and then if needed
     get the correct tcm uri and get the intended item]

    return item as T;
}

然而,这是一个相当昂贵的操作,因为你得到了两个对象而不是一个。所以我不知道我是否会经常使用这种方法。

于 2012-05-16T08:52:09.937 回答
3

这里有一些样本

IdentifiableObject item = engine.GetObject(new TcmUri("tcm:5-677")); 
//will give you the latest approved version in the publication 5.

IdentifiableObject item = engine.GetObject(new TcmUri("tcm:5-677-v0")); 
//will give you the WF or Editable version.

TcmUri uri = new TcmUri("tcm:5-677");
uri.PublicationId = 6;
IdentifiableObject item = engine.GetObject(uri); 
//will give you the latest approved version in the publication 6.
于 2012-06-25T18:22:35.560 回答
2

Engine.GetObject 有 4 个重载方法。

GetObject(会话,字符串)

获取对象(字符串)

获取对象(TcmUri)

获取对象(项目)

您可以查看 Tom.Net Api 了解更多详细信息。

于 2012-05-16T08:12:52.447 回答
2

实际上,使用Engine.GetObject Method (String)应该可以。

public virtual IdentifiableObject GetObject(
    string itemUriOrWebDavUrl
)

你可以用这种方式做一些事情: -

  1. 根据 WebDav URL 获取 Object
  2. 从此对象获取 TCM ID
  3. 根据您的出版物,相应地修改您的 TCM ID 并做您的事情

或者

也尝试这种方式:-

Repository testRepository = (Repository)session.GetObject("tcm:0-2-1");
Component testComponent = (Component)testRepository.GetObject(webdavURL); //Assuming actual TCM ID is "tcm:1-3"
Console.WriteLine(testComponent.Id); // should show "tcm:2-3"
// Do Your Other Stuff
于 2012-05-16T10:38:01.637 回答