Подтвердить что ты не робот

Tridion Workflow - история версий компонентов неверна

У нас есть YAWF (еще одна рабочая платформа), настроенная для одного из наших клиентов. У нас есть простой процесс Workflow, который работает именно так, как нам требуется, за исключением истории версий компонентов.

В истории версий вместо имени пользователя, создавшего или обновляющего компонент, мы видим только "Tridion Content Manager System NT Author".

Я подозреваю, что это учетная запись пользователя MTS, которая используется для выполнения YAWF. Однако нам действительно нужно, чтобы имя пользователя отображалось в истории версий.

Возможно, мы неправильно настроили YAWF?

У кого-нибудь еще была эта проблема, или у нее появилась идея, как мы можем ее решить?

Мы используем Tridion 2011. (Еще не SP1)

4b9b3361

Ответ 1

Это будет учетная запись, которая выполнила последний шаг в вашем рабочем процессе?

Вы, похоже, убедились в YAWF, вы пробовали без него?

Ответ 2

В общем, может быть, что в одной версии работают разные люди, так как регистрация происходит только после завершения всех действий.

Вы можете решить эту проблему, выполнив итерацию с помощью исполнителей действий и включив комментарий в сообщение завершения.

Другой вариант может заключаться в том, чтобы выдать себя за автора:

Set oTDSE = CreateObject("TDS.TDSE") 
oTDSE.Impersonate("[Author]") 
oTDSE.Initialize() 

' use TDSE 

Set oTDSE = Nothing

Ответ 3

Я понимаю, что это старый вопрос, но я недавно сражался с этой же проблемой с точки зрения Core Service и хотел поделиться тем маршрутом, который я взял (и, возможно, кто-то укажет, где я, возможно, ошибся, прежде чем я его установлю производство).

После нескольких разных подходов к Core Service я решил добавить последнее ручное действие к своим рабочим процессам и пользовательской логике к предыдущей автоматической активности. В логике активной службы активной активности я завершаю текущую автоматическую деятельность (которая возвращает конечный экземпляр ручной операции), олицетворяет оригинального автора, запускает экземпляр последней операции (как автора) и завершает этот экземпляр конечной активности (опять же, поскольку автор).

Я использую SessionAwareCoreServiceClient и запускаюсь на самой машине Content Manager. Я должен был добавить "NT AUTHORITY\SYSTEM" для пользователей олицетворения в утилите настройки Tridion Content Manager (могут возникнуть последствия для безопасности с использованием Impersonate, поэтому убедитесь, что это имеет смысл для вашей среды):

Impersonation Users

Код выглядит примерно так (хотя я не учитывал некоторые вещи, такие как получение текущего экземпляра активности, извлечение исходного автора из первого действия вручную, и я добавил использование SessionAwareCoreServiceClient, чтобы дать некоторый контекст):

using (SessionAwareCoreServiceClient client = new SessionAwareCoreServiceClient())
{
    ActivityFinishData activityFinish = new ActivityFinishData()
    {
        Message = message,
        NextAssignee = new LinkToTrusteeData() { IdRef = authorUser.IdRef }
    };

    // Finish current automatic activity
    ActivityInstanceData finalActivity = client.FinishActivity(activityInstance.Id, activityFinish, new ReadOptions());

    // Impersonate original author
    client.Impersonate(authorUser.Title);

    // Start final (manual) activity as author - if you don't start it, then non-Administrators can't finish them.
    client.StartActivity(finalActivity.Id, null);
    // Finish final (manual) activity as author
    client.FinishActivity(finalActivity.Id, activityFinish, null);
}

Надеюсь, я не делаю ничего слишком ужасно глупого, и, возможно, этот ответ поможет кому-то вроде меня, который должен был сгребать его из разных других вопросов/блогов/ссылок и выполнить несколько пробных ошибок (которые могут получить утомительный с рабочим процессом).

Ответ 4

Это ожидаемое поведение. Если последний рабочий процесс является автоматическим. Он всегда выполняется системой Tridion Content Manager System NT. Пользователь, с которым работает агент обслуживания рабочего процесса. В качестве рабочего решения вы можете использовать решение J stuarts. Я тоже схожу.

Добавлена ​​другая активность как автоматическая. И выполнил эту операцию с пользователем, который первоначально создал контент. Таким образом, содержимое проверяется с подробностями автора. Однако, чтобы олицетворять в рабочем процессе, убедитесь, что у вашей машины Tridion есть пользовательский пользователь NT AUTHORITY\SYSTEM с пользовательским типом Windows.

public void UpdateVersion(string workitemid,string componentid)
    {
        try
        {
            Stopwatch _watch = new Stopwatch();
            _watch.Start();
            Logger.Debug("Entered RPPTridionWorkflow UpdateVersion ");
            WorkItemData workItem = (WorkItemData)CoreServiceClient.Read(workitemid, options);
            ProcessInstanceData processInstance =
                (ProcessInstanceData)CoreServiceClient.Read(workItem.Process.IdRef, options);
            ActivityData creatorActivityData = getActivityDataBasedOnName(workitemid, "Content Creation");
            if (creatorActivityData != null)
            {
                LinkToUserData linktoAuthorUser = creatorActivityData.Owner;
                UserData authorUser = (UserData)CoreServiceClient.Read(linktoAuthorUser.IdRef, options);
                CoreServiceClient.Impersonate(authorUser.Title);
            }
            ActivityData[] ieActivities = processInstance.Activities;
            int currentActivity = ieActivities.Length - 1;
            if (ieActivities != null)
            {
                ActivityInstanceData activityInstance =
                   (ActivityInstanceData)CoreServiceClient.Read(processInstance.Activities[currentActivity].Id, options);

                ActivityFinishData finishData = new ActivityFinishData();
                finishData.Message = "Finished automatically and upded version info for component checked in";
                CoreServiceClient.FinishActivity(activityInstance.Id, finishData, options);
                CoreServiceClient.Close();
            }