Есть ли быстрый способ удалить большой стек истории рабочих процессов? - PullRequest
7 голосов
/ 20 февраля 2012

Есть ли какой-нибудь быстрый способ / хитрость, чтобы удалить около 85 КБ записей для истории процесса рабочего процесса? Попытка из графического интерфейса дает проблему с хранилищем, и для решения этой проблемы нужно сбросить флажок.

Также попытка PowerTool дает сбой после долгого времени. Мысль спросить у более широкого сообщества. ценим ваши мысли.

Спасибо Vin

Ответы [ 2 ]

4 голосов
/ 20 февраля 2012

Какая версия Tridion? 2011

Возможно, вам не помешает клиентское приложение CoreService, которое регулярно делает это для вас. Под «PowerTool» я предполагаю, что вы имеете в виду инструмент «Очистка»?

Кроме того - я бы, вероятно, связался со службой поддержки клиентов по поводу ошибок, которые вы видите, не похоже на использование графического интерфейса, или инструмент очистки может дать сбой.

Если вы используете 2011 SP1, вы можете использовать следующий код:

using System;
using System.ServiceModel;
using System.Xml;
using Tridion.ContentManager.CoreService.Client;

namespace DeleteWorkflowHistory
{
    class Program
    {
        private const string NetTcpEndpoint = 
            "net.tcp://localhost:2660/CoreService/2011/netTcp";
        private static readonly EndpointAddress EndpointAddress =
            new EndpointAddress(NetTcpEndpoint);

        static void Main(string[] args)
        {
            var binding = new NetTcpBinding 
            { 
                MaxReceivedMessageSize = 2147483647 
            };

            var quota = new XmlDictionaryReaderQuotas
            {
                MaxStringContentLength = 2147483647,
                MaxArrayLength = 2147483647
            };
            binding.ReaderQuotas = quota;
            var client = new SessionAwareCoreServiceClient(binding, EndpointAddress);
            Log("Connected to Tridion Content Manager version: " + client.GetApiVersion());
            ProcessesFilterData filter = new ProcessesFilterData
            {
                BaseColumns = ListBaseColumns.IdAndTitle,
                ProcessType = ProcessType.Historical
            };
            foreach (IdentifiableObjectData data in client.GetSystemWideList(filter))
            {
                var processHistory = data as ProcessHistoryData;
                if (processHistory != null)
                {
                    Log("Deleting history: " + processHistory.Id + " / " + processHistory.Title);
                    client.Delete(processHistory.Id);
                }
            }
            client.Close();
        }

        private static void Log(string message)
        {
            Console.WriteLine(string.Format("[{0}] {1}", DateTime.Now.ToString("HH:mm:ss.fff"), message));
        }
    }
}

N

1 голос
/ 27 марта 2012

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

...