2012-02-20 5 views
7

¿Hay alguna forma rápida/truco para eliminar alrededor de 85K entradas para el historial de procesos del flujo de trabajo? Probar desde la GUI brinda un problema de almacenamiento y para resolver este problema es necesario rebotar la caja.¿Existe alguna manera rápida de eliminar una pila de historial de proceso de flujo de trabajo grande?

También probando los bloqueos de PowerTool después de un largo tiempo. Pensé preguntarle a la comunidad en general. aprecia por tus pensamientos

Gracias Vin

+1

¿Qué versión de Tridion estás usando? Por lo general, escribiré un código de muestra con el Core Service, que no sirve de nada cuando estás en algo <2011. –

Respuesta

4

¿Qué versión de Tridion? 2011?

Probablemente pueda salirse con la suya con una aplicación de cliente CoreService que hace esto regularmente. Por "PowerTool", supongo que te refieres a la herramienta de purga?

También - Probablemente me pondría en contacto con Atención al cliente acerca de los errores que ve, no parece utilizar la GUI o la Herramienta de purga debería fallar.

Si estás en 2011 SP1 se puede utilizar el siguiente código:

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

Si no puede utilizar el Servicio básico, eche un vistazo a this blog entry, que describe el uso de la Powershell para forzar procesos de flujo de trabajo para completar. Con algunas modificaciones menores, la misma técnica funcionaría para eliminar procesos de flujo de trabajo.

Cuestiones relacionadas