7

ワークフロー プロセス履歴の約 85K エントリを削除する簡単な方法/トリックはありますか? GUI から試行するとストレージの問題が発生し、この問題を解決するにはボックスをバウンスする必要があります。

また、PowerTool を試してみると、久しぶりにクラッシュします。より広いコミュニティに尋ねることを考えました。あなたの考えに感謝します。

ありがとうヴィン

4

2 に答える 2

4

Tridionのどのバージョンですか?2011年?

あなたはおそらくあなたのためにこれを定期的に行うCoreServiceクライアントアプリで逃げることができます。「PowerTool」とは、パージツールを意味すると思いますか?

また、表示されるエラーについてカスタマーサポートに連絡する可能性があります。GUIを使用していないようです。そうしないと、パージツールが失敗するはずです。

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

于 2012-02-20T19:55:51.607 に答える
1

コア サービスを使用できない場合は、Powershell を使用してワークフロー プロセスを強制的に完了する方法について説明しているこのブログ エントリを参照してください。ごくわずかな変更を加えれば、ワークフロー プロセスの削除にも同じ手法を使用できます。

于 2012-03-27T09:17:11.510 に答える