none
El Flujo de Trabajo fue cancelado por la Cuenta del Sistema. RRS feed

  • Pregunta

  • Tengo un problema con los flujos de trabajo.

    Cambiamos hace poco la configuracion de procesos de nuestros sistema (cuentas del dominio etc.) y eso al parecer ha afectado a los flujos de trabajo ya que TODOS los flujos se cancelan ahora por la cuenta del sistema automaticamente.

    He probado ha realizar el cambio tal y como se comenta en algunos foros y he cambiado la cuenta del sistema por una que no es administrador del dominio si no solo "usuario".

    Pero pese al cambio y despues del iireset /noforce que exige no consigo quitarme de encima el error al iniciar (que deriva en "El flujo de trabajo XXX fue cancelado por Cuenta del sistema").

    Debo hacer algo mas?

    viernes, 7 de enero de 2011 7:19

Respuestas

  • Hola Brisha,

    Hay una forma de automatizar el re-despliegue de flujos de trabajo de SPD 2007 que te podría ahorrar trabajo de tener que re-crear los flujos desde cero: http://geeks.ms/blogs/ciin/archive/2009/02/04/wss-3-0-amp-moss-como-exportar-e-importar-flujos-de-trabajo-creados-con-sharepoint-designer-2007.aspx

    El problema que te ha pasado tiene pinta de que es como dices debido al cambio de cuentas de usuario...que yo sepa no existe una forma de reciclar los flujos de trabajo fuera de ejecutar en línea de comandos stsadm - o execadmsvcjobs (http://technet.microsoft.com/es-es/library/cc262783(office.12).aspx) + un IISRESET para ver si se solucionaba el problema (no pondría la mano en el fuego). Otra posibilidad que se me ocurre es indagar en el modelo de objetos si existe el disparador que comentas...en SharePoint 2010 si que puedes iniciar un flujo si dispones de su GUID, asique seguro que en SharePoint 2007 la opción existe. Para SharePoint 2010 el código es más o menos similar al siguiente (funciona perfectamente para flujos creado con Visual Studio, para flujos creado con SharePoint Designer no lo he probado):

      public class SiteEventReceiver : SPWebEventReceiver
      {
        static readonly Guid TemplateID = new Guid("4ae03235-4424-4c83-ab5c-edad16d85e84");
        /// <summary>
        /// A site was provisioned.
        /// </summary>
        public override void WebProvisioned(SPWebEventProperties properties)
        {
          SPWeb newSite = properties.Web;
          Guid taskListID = newSite.Lists.Add(
            "Tasks for auto-start workflow", "",
            SPListTemplateType.Tasks);
          Guid historyListID = newSite.Lists.Add(
            "History for auto-start workflow", "",
            SPListTemplateType.WorkflowHistory);
    
          SPWorkflowTemplate template = newSite.WorkflowTemplates[TemplateID];
          SPWorkflowAssociation association =
             SPWorkflowAssociation.CreateWebAssociation(template,
              "Auto-start workflow",
              newSite.Lists[taskListID],
              newSite.Lists[historyListID]);
          newSite.AddWorkflowAssociation(association);
          newSite.Site.WorkflowManager.StartWorkflow(
             newSite,
             association, "", SPWorkflowRunOptions.Synchronous);
        }
    
    
      }
    

    En este caso, el workflow se arranca y asocia en el momento en el que se crea un sitio en SharePoint (Es un workflow de sitio),

    Saludos!

    viernes, 7 de enero de 2011 9:17

Todas las respuestas

  • Me medio respondo yo mismo aunque dejo la pregunta en el aire porque no es una solucion al problema si no un parche.

    Debido a la "urgencia" del asunto me he visto obligado a eliminar los flujos de trabajo (con Sharepoint designer) que estaban dando problemas y volverlos a crear (uno a uno con el asistente ese tan feo).

    El resultado es que los nuevos flujos de trabajo funcionan y no dan el problema antes mencionado, por lo que el trabajo diario puede seguir realizandose. Pero como ya he dicho no es una solucion.

    Si he creado unos nuevos flujos de trabajo y estos funcionan ..

    ¿A que se debe que no funcionen los anteriores si fueron creados igualmente desde la misma cuenta y son exactamente iguales?

    ¿Existe una manera de "reciclar" los flujos de trabajo para que dispare de nuevo el evento de inicio de estos?

    ¿Cual es el comando del timer para realizar ese "reset", si es que existe?

    Ni que decir que estamos hablando de sharepoint 2007 (ya nos queda menos para la migracion!!!) en un w2008 server contra sqlserver 2008 R2.

     

    Gracias. (por cierto que no lo he dicho: feliz año 2011).

    viernes, 7 de enero de 2011 7:56
  • Hola Brisha,

    Hay una forma de automatizar el re-despliegue de flujos de trabajo de SPD 2007 que te podría ahorrar trabajo de tener que re-crear los flujos desde cero: http://geeks.ms/blogs/ciin/archive/2009/02/04/wss-3-0-amp-moss-como-exportar-e-importar-flujos-de-trabajo-creados-con-sharepoint-designer-2007.aspx

    El problema que te ha pasado tiene pinta de que es como dices debido al cambio de cuentas de usuario...que yo sepa no existe una forma de reciclar los flujos de trabajo fuera de ejecutar en línea de comandos stsadm - o execadmsvcjobs (http://technet.microsoft.com/es-es/library/cc262783(office.12).aspx) + un IISRESET para ver si se solucionaba el problema (no pondría la mano en el fuego). Otra posibilidad que se me ocurre es indagar en el modelo de objetos si existe el disparador que comentas...en SharePoint 2010 si que puedes iniciar un flujo si dispones de su GUID, asique seguro que en SharePoint 2007 la opción existe. Para SharePoint 2010 el código es más o menos similar al siguiente (funciona perfectamente para flujos creado con Visual Studio, para flujos creado con SharePoint Designer no lo he probado):

      public class SiteEventReceiver : SPWebEventReceiver
      {
        static readonly Guid TemplateID = new Guid("4ae03235-4424-4c83-ab5c-edad16d85e84");
        /// <summary>
        /// A site was provisioned.
        /// </summary>
        public override void WebProvisioned(SPWebEventProperties properties)
        {
          SPWeb newSite = properties.Web;
          Guid taskListID = newSite.Lists.Add(
            "Tasks for auto-start workflow", "",
            SPListTemplateType.Tasks);
          Guid historyListID = newSite.Lists.Add(
            "History for auto-start workflow", "",
            SPListTemplateType.WorkflowHistory);
    
          SPWorkflowTemplate template = newSite.WorkflowTemplates[TemplateID];
          SPWorkflowAssociation association =
             SPWorkflowAssociation.CreateWebAssociation(template,
              "Auto-start workflow",
              newSite.Lists[taskListID],
              newSite.Lists[historyListID]);
          newSite.AddWorkflowAssociation(association);
          newSite.Site.WorkflowManager.StartWorkflow(
             newSite,
             association, "", SPWorkflowRunOptions.Synchronous);
        }
    
    
      }
    

    En este caso, el workflow se arranca y asocia en el momento en el que se crea un sitio en SharePoint (Es un workflow de sitio),

    Saludos!

    viernes, 7 de enero de 2011 9:17
  • No se me habia ocurrido, pero he probado a exportarlos y volverlos a poner y da la impresion de que al menos si los toma como version valida y los ejecuta.  Que sumado al reset de los flujos funciona. Asi que dejare de ir llorando por las esquinas y acordandome del sharepoint (y de sus santos padres) a cada rato.

     

    Lo del codigo me lo guardo para cuando hagamos el cambio al 2010 que espero sea a lo largo de este año.

     

    Gracias

    viernes, 7 de enero de 2011 10:03