Los flujos de trabajo le permiten automatizar actividades de Adobe Experience Manager (AEM).
A menudo representan una gran cantidad del procesamiento que se produce en un entorno de AEM, por lo que cuando los pasos del flujo de trabajo personalizado no se escriben según las prácticas recomendadas, o cuando los flujos de trabajo listos para usar no se configuran para ejecutarse de la manera más eficiente posible, el sistema puede sufrir las consecuencias.
Por lo tanto, es muy recomendable planificar cuidadosamente las implementaciones de flujos de trabajo.
Al configurar procesos de flujo de trabajo (personalizados y/o predeterminados), hay algunas cosas que deben tenerse en cuenta.
Para optimizar las cargas de ingestión alta, puede definir un flujo de trabajo como transitorio.
Cuando un flujo de trabajo es transitorio, los datos del tiempo de ejecución relacionados con los pasos de trabajo intermedios no persisten en el JCR cuando se ejecutan (las representaciones de salida se mantienen, por supuesto).
Las ventajas pueden incluir:
Si su empresa dicta que los datos de tiempo de ejecución del flujo de trabajo de mantenimiento y archivado se conservan con fines de auditoría, no active esta función.
Para obtener instrucciones de ajuste del rendimiento para flujos de trabajo DAM, consulte la Guía de ajuste del rendimiento de AEM Assets.
AEM permitir que se ejecuten varios subprocesos de flujo de trabajo al mismo tiempo. De forma predeterminada, el número de subprocesos está configurado para ser la mitad del número de núcleos de procesador del sistema.
En los casos en los que los flujos de trabajo que se ejecutan exigen recursos del sistema, esto puede significar que queda poco para AEM para usarla en otras tareas, como procesar la IU de creación. Como resultado, el sistema puede ser lento durante actividades como la carga masiva de imágenes.
Para solucionar este problema, Adobe recomienda configurar el número de Trabajos paralelos máximos para que se encuentre entre la mitad y las tres cuartas partes del número de núcleos del procesador en el sistema. Esto debería permitir que el sistema tenga suficiente capacidad para responder al procesar estos flujos de trabajo.
Para configurar Número máximo de trabajos paralelos, puede:
Configure la Configuración de OSGi desde la consola Web de AEM; para Cola: Granite Workflow Queue (una Configuración de cola de trabajos Sling de Apache).
Configure la cola desde la opción Trabajos de sling de la consola web de AEM; para Configuración de cola de trabajos: Granite Workflow Queue, en http://localhost:4502/system/console/slingevent
.
Además, existe una configuración independiente para la Cola de trabajos de proceso externo de Granite Workflow. Se utiliza para procesos de flujo de trabajo que inician binarios externos, como InDesign Server o Image Magick.
En algunos casos, es útil configurar colas de trabajos individuales para controlar los subprocesos simultáneos u otras opciones de cola, en un trabajo individual. Puede agregar y configurar una cola individual desde la consola Web a través de la Configuración de cola de trabajos de Apache Sling fábrica. Para encontrar el tema apropiado para la lista, ejecute el modelo del flujo de trabajo y búsquelo en la consola Trabajos de sling; por ejemplo, en http://localhost:4502/system/console/slingevent
.
También se pueden agregar colas de trabajos individuales para flujos de trabajo transitorios.
En una instalación estándar, el AEM proporciona una consola de mantenimiento donde se pueden programar y configurar actividades de mantenimiento diarias y semanales; por ejemplo, en:
http://localhost:4502/libs/granite/operations/content/maintenance.html
De forma predeterminada, la Ventana de mantenimiento semanal tiene una tarea Depuración del flujo de trabajo, pero esto debe configurarse antes de que se ejecute. Para configurar las purgas de flujo de trabajo, debe agregarse una nueva Configuración de depuración de flujo de trabajo de granito de Adobe en la consola Web.
Para obtener más información sobre las tareas de mantenimiento en AEM, consulte el Panel de operaciones.
Al escribir procesos de flujo de trabajo personalizados, hay algunas cosas que deben tenerse en cuenta.
Las definiciones de modelos de flujo de trabajo, lanzadores, secuencias de comandos y notificaciones se guardan en el repositorio según el tipo; es decir, lista para usar, personalizada, entre otros.
Consulte también Reestructuración del repositorio en AEM 6.5.
Los modelos de flujo de trabajo se almacenan en el repositorio según el tipo:
Los diseños de flujo de trabajo predeterminados se mantienen en la siguiente ruta:
/libs/settings/workflow/models/
No:
/libs
Como cualquier cambio se puede sobrescribir al actualizar o al instalar correcciones urgentes, paquetes de correcciones acumulativas o Service Packs.
Los diseños de flujo de trabajo personalizados se incluyen en:
/conf/global/settings/workflow/models/...
Los diseños de flujo de trabajo en tiempo de ejecución (tanto predeterminados como personalizados) se mantienen en la siguiente ruta:
/var/workflow/models/
Los diseños de flujo de trabajo heredados (tanto en tiempo de diseño como en tiempo de ejecución) se mantienen en la siguiente ruta:
/etc/workflow/models/
Si estos diseños se editan con la IU de AEM, los detalles se copiarán en las nuevas ubicaciones.
Las definiciones del iniciador de flujo de trabajo también se almacenan en el repositorio según el tipo:
Los lanzadores de flujo de trabajo listos para usar se encuentran en la siguiente ruta:
/libs/settings/workflow/launcher/
No:
/libs
Como cualquier cambio se puede sobrescribir al actualizar o al instalar correcciones urgentes, paquetes de correcciones acumulativas o Service Packs.
Los lanzadores de flujo de trabajo personalizados se encuentran en:
/conf/global/settings/workflow/launcher/...
Los iniciadores de flujo de trabajo heredados se mantienen en la siguiente ruta:
/etc/workflow/launcher/
Si estas definiciones se editan con la IU de AEM, los detalles se copiarán en las nuevas ubicaciones.
Las secuencias de comandos de flujo de trabajo también se almacenan en el repositorio según el tipo:
Las secuencias de comandos de flujo de trabajo integradas se mantienen en la siguiente ruta:
/libs/workflow/scripts/
No:
/libs
Como cualquier cambio se puede sobrescribir al actualizar o al instalar correcciones urgentes, paquetes de correcciones acumulativas o Service Packs.
Las secuencias de comandos de flujo de trabajo personalizadas se incluyen en:
/apps/workflow/scripts/...
Las secuencias de comandos de flujo de trabajo heredadas se mantienen en la siguiente ruta:
/etc/workflow/scripts/
Las notificaciones de flujo de trabajo también se almacenan en el repositorio según el tipo:
Las definiciones de notificación de flujo de trabajo integradas se mantienen en la siguiente ruta:
/libs/settings/workflow/notification/
No:
/libs
Como cualquier cambio se puede sobrescribir al actualizar o al instalar correcciones urgentes, paquetes de correcciones acumulativas o Service Packs.
Las definiciones de notificación de flujo de trabajo personalizado se encuentran en:
/conf/global/settings/workflow/notification/...
Si desea anular un texto de notificación de flujo de trabajo, cree una ruta superpuesta en:
/conf/global/settings/workflow/notification/<path-under-libs>
Las definiciones de notificación de flujo de trabajo heredadas se mantienen en la siguiente ruta:
/etc/workflow/notification/
Como en cualquier desarrollo personalizado, siempre se recomienda utilizar una sesión de usuario cuando sea posible:
Al implementar un proceso de flujo de trabajo:
public void execute(WorkItem item, WorkflowSession workflowSession, MetaDataMap args) throws WorkflowException {
// to obtain a jcr session:
javax.jcr.Session jcrSession = workflowSession.adaptTo(javax.jcr.Session.class);
// to obtain a sling resource resolver:
org.apache.sling.api.resource.ResourceResolver slingResourceResolver = workflowSession.adaptTo(org.apache.sling.api.resource.ResourceResolver.class);
Guardar una sesión:
Dentro de un proceso de flujo de trabajo, si se utiliza WorkflowSession
para modificar el repositorio, no se guarda explícitamente la sesión. El flujo de trabajo guardará la sesión cuando se complete.
Session.Save
no se debe llamar desde dentro de un paso de flujo de trabajo:
save
no es necesario, ya que el motor de flujos de trabajo guarda la sesión automáticamente una vez que el flujo de trabajo ha terminado de ejecutarse.Al eliminar los ahorros innecesarios, puede reducir la sobrecarga y, por lo tanto, hacer que los flujos de trabajo sean más eficientes.
Si, a pesar de las recomendaciones aquí, crea su propia sesión de jcr, deberá guardarla.
Hay un detector responsable de todos los lanzadores de flujo de trabajo registrados:
La creación de demasiados lanzadores hará que el proceso de evaluación se ejecute más lentamente.
La creación de una ruta de acceso de globalización en la raíz del repositorio en un único iniciador haría que el motor de flujos de trabajo escuchara y evaluara los eventos de creación y modificación de cada nodo del repositorio. Por este motivo, se recomienda crear únicamente lanzadores que sean necesarios y hacer que la ruta de globalización sea lo más específica posible.
Debido al impacto de estos lanzadores en el comportamiento del flujo de trabajo, también puede resultar útil desactivar cualquier iniciador incorporado que no esté en uso.
Se ha mejorado la configuración personalizada del iniciador para admitir lo siguiente:
Los flujos de trabajo pueden soportar una considerable cantidad de sobrecarga, tanto en términos de objetos creados en memoria como de nodos rastreados en el repositorio. Por este motivo, es mejor que un flujo de trabajo realice su procesamiento en sí mismo en lugar de inicio de flujos de trabajo adicionales.
Un ejemplo de esto sería un flujo de trabajo que implementa un proceso comercial en un conjunto de contenido y luego activa dicho contenido. Es mejor crear un proceso de flujo de trabajo personalizado que active cada uno de estos nodos, en lugar de iniciar un modelo de activación de contenido para cada uno de los nodos de contenido que necesita publicarse. Este enfoque requerirá trabajo de desarrollo adicional, pero es más eficaz cuando se ejecuta que cuando se inicia una instancia de flujo de trabajo independiente para cada activación.
Otro ejemplo sería un flujo de trabajo que procesa varios nodos, crea un paquete de workflow y, a continuación, activa dicho paquete. En lugar de crear el paquete y luego iniciar un flujo de trabajo independiente con el paquete como carga útil, puede cambiar la carga útil del flujo de trabajo en el paso que crea el paquete y, a continuación, llamar al paso para activar el paquete dentro del mismo modelo de flujo de trabajo.
Al diseñar un modelo de flujo de trabajo, tiene la opción de habilitar el avance del controlador en los pasos del flujo de trabajo. También puede agregar código al paso del flujo de trabajo para determinar qué paso debe ejecutarse a continuación y luego ejecutarlo.
Se recomienda utilizar el avance de los controladores para ofrecer un mejor rendimiento.
Puede definir etapas del flujo de trabajo y, a continuación, asignar tareas/pasos a una etapa específica del flujo de trabajo.
Esta información se utiliza para mostrar el progreso de un flujo de trabajo al hacer clic en la ficha Información del flujo de trabajo de un elemento de trabajo desde la Bandeja de entrada. Los modelos de flujo de trabajo existentes se pueden editar para agregar etapas.
El paso Activar proceso de página activará las páginas para usted, pero no encontrará automáticamente ningún recurso DAM al que se haga referencia y tampoco los activará.
Esto es algo que hay que tener en cuenta si piensa utilizar este paso como parte de un modelo de flujo de trabajo.
Al actualizar la instancia:
asegúrese de que se realiza una copia de seguridad de los modelos de flujo de trabajo personalizados antes de actualizar una instancia.
confirme que ninguno de sus flujos de trabajo personalizados se almacena en la ubicación:
/libs/settings/workflow/models/projects
Consulte también Reestructuración del repositorio en AEM 6.5.
Existen muchas herramientas del sistema disponibles para ayudar con los flujos de trabajo de supervisión, mantenimiento y resolución de problemas. Todas las direcciones URL de ejemplo siguientes utilizan localhost:4502
, pero deben estar disponibles en cualquier instancia de autor ( <hostname>:<port>
).
http://localhost:4502/system/console/slingevent
La consola de Sling Job Handling mostrará:
La herramienta de sistema de informes de flujo de trabajo se está eliminando en la versión 6.3 para evitar la degradación del rendimiento.
http://localhost:4502/system/console/jmx/com.adobe.granite.workflow:type=Maintenance
El MBean de mantenimiento del flujo de trabajo expone varias rutinas de mantenimiento útiles, como purgar flujos de trabajo completados y recuperar estadísticas del flujo de trabajo.
Para obtener más información, consulte: