es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Flujo de trabajo activado en el escucha de eventos de replicación bucleándose en AEM.

Tengo un flujo de trabajo en AEM 6.5 que se activa desde código java en un listener de eventos de replicación, pero el problema es que mi flujo de trabajo tiene un paso de proceso que activa la página después de la revisión del paso del participante. Esta activación vuelve a llamar a mi flujo de trabajo ya que es un evento de replicación. ¿Cómo puedo evitar esto? ¿Existe un enfoque mejor o alguna solución alternativa?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución Posible

    Para evitar que el flujo de trabajo se active nuevamente durante el proceso de activación, puedes agregar una propiedad personalizada al nodo de página que indique si el flujo de trabajo ya se ha ejecutado para esa página.

    En el código Java que activa el flujo de trabajo, puedes verificar esta bandera antes de iniciar el flujo de trabajo. Si la bandera está configurada en verdadero, significa que el flujo de trabajo ya se ha ejecutado para esa página y puedes omitirlo.

    Aquí están los pasos para implementar esta solución:

    1. Agrega una propiedad personalizada al nodo de página que indique si el flujo de trabajo ya se ha ejecutado para esa página. Puedes usar cualquier nombre para esta propiedad, pero para este ejemplo, llamémosla “workflowExecuted”.

      Puedes agregar esta propiedad manualmente a través de la consola de AEM o programáticamente utilizando la API de JCR. Aquí tienes un ejemplo de código Java para agregar la propiedad:

      // Obtén el nodo de página
      Node pageNode = session.getNode(pagePath);
      
      // Establece la propiedad personalizada
      pageNode.setProperty("workflowExecuted", true);
      
      // Guarda los cambios
      session.save();
      
    2. En el código Java que activa el flujo de trabajo, verifica el valor de la propiedad “workflowExecuted” antes de iniciar el flujo de trabajo. Si la propiedad está configurada en verdadero, omite el flujo de trabajo.

      Aquí tienes un ejemplo de código Java para verificar la propiedad:

      // Obtén el nodo de página
      Node pageNode = session.getNode(pagePath);
      
      // Verifica si el flujo de trabajo ya se ha ejecutado para esta página
      if (pageNode.hasProperty("workflowExecuted") && pageNode.getProperty("workflowExecuted").getBoolean()) {
         // El flujo de trabajo ya se ha ejecutado para esta página, así que omítelo
         return;
      }
      
      // Inicia el flujo de trabajo
      // ...
      
    3. En el paso de participante del flujo de trabajo, agrega un script que establezca el valor de la propiedad “workflowExecuted” en verdadero.

      Aquí tienes un ejemplo de script para establecer la propiedad:

      // Obtén el nodo de página
      var pageNode = workflowSession.getSession().getNode(absPath);
      
      // Establece la propiedad personalizada
      pageNode.setProperty("workflowExecuted", true);
      

    Con esta solución, el flujo de trabajo se ejecutará solo una vez para cada página, incluso si la página se activa varias veces.

Comments are closed.