Как получить пользователя, который инициировал действие публикации в SDL Tridion C# TBB

Можно ли из C# TBB, используемого шаблоном модульной страницы в SDL Tridion 2011, получить доступ к объекту пользователя, который инициировал действие публикации?

Глядя на Справочное руководство программиста TOM.NET 6, кажется, что мне нужно свойство Creator объекта PublicationTransaction, но я не могу найти способ получить к нему доступ из C# TBB, Я не вижу очевидного способа получить текущий PublicationTransaction из объектов engine или package, и я могу найти только способ получить список объектов PublicationTransaction с помощью объекта PublishEngine.

Мы будем очень признательны за любые советы.


person GourmetCMS    schedule 27.07.2012    source источник


Ответы (1)


Взгляните на эти два поста в блоге от Михая Кадариу:

С этими двумя вы сможете найти то, что вам нужно.

Основная функция, которая вам нужна в вашем TBB, такова:

public PublishTransaction GetPublishTransaction(Engine engine)
{
    String binaryPath = engine.PublishingContext.PublishInstruction.
                                         RenderInstruction.BinaryStoragePath;
    Regex tcmRegex = new Regex(@"tcm_\d+-\d+-66560");
    Match match = tcmRegex.Match(binaryPath);

    if (match.Success)
    {
        String transactionId = match.Value.Replace('_', ':');
        TcmUri transactionUri = new TcmUri(transactionId);
        return new PublishTransaction(transactionUri, engine.GetSession());
    }

    return null;
}

Также стоит отметить, что свойство engine.PublishingContext.PublishInstruction.RenderInstruction.BinaryStoragePath будет возвращать что-то другое при рендеринге кодировщика в PreviewMode или из Template Builder по сравнению с тем, когда код выполняется в Publisher. Чтобы увидеть URI PublishTransaction в BinaryStoragePath, вы должны присоединить свой проект отладки Visual Studio TBB к процессу TcmPublisher.exe, чтобы на самом деле присутствовал объект PublishTransaction, иначе BinaryStoragePath будет просто содержать общий путь, например ../preview.

person Community    schedule 27.07.2012
comment
Отлично, я добавил код от Михая и Криса, и теперь у меня есть PublishTransaction. Большое спасибо. - person GourmetCMS; 27.07.2012