Bästa praxis för arbetsflöden

Med arbetsflöden kan du automatisera Adobe Experience Manager-aktiviteter (AEM).

De representerar ofta en stor del av den bearbetning som sker i en AEM miljö, så när anpassade arbetsflödessteg inte skrivs enligt bästa praxis, eller när färdiga arbetsflöden inte är konfigurerade att köras så effektivt som möjligt, kan systemet drabbas av detta.

Vi rekommenderar därför att du noga planerar implementeringarna av arbetsflödena.

Konfiguration

När du konfigurerar arbetsflödesprocesser (anpassade och/eller färdiga) finns det några saker som du bör tänka på.

Övergående arbetsflöden

Om du vill optimera stora mängder insatsmaterial kan du definiera ett arbetsflöde som transient.

När ett arbetsflöde är övergående bevaras inte körningsdata som relaterar till de mellanliggande arbetsstegen i JCR när de körs (utdatarenderingarna behålls förstås).

Fördelarna kan vara:

  • En minskning av arbetsflödets bearbetningstid. upp till 10 %.
  • Minska databastillväxten avsevärt.
  • Inga fler CRUD-arbetsflöden behövs för att rensa bort.
  • Dessutom minskar det antalet TAR-filer som ska komprimeras.
FÖRSIKTIGHET

Aktivera inte den här funktionen om ditt företag kräver att du ska spara/arkivera arbetsflödets körningsdata för granskning.

Justera arbetsflöden för DAM

Riktlinjer för prestandajustering för DAM-arbetsflöden finns i AEM Assets Performance Tuning Guide.

Konfigurera maximalt antal samtidiga arbetsflöden

AEM kan tillåta att flera arbetsflödestrådar körs samtidigt. Som standard är antalet trådar konfigurerat till halva antalet processorkärnor i systemet.

I de fall där arbetsflödena som körs kräver systemresurser, kan detta innebära att det inte finns mycket kvar AEM att använda för andra åtgärder, som att återge redigeringsgränssnittet. Det kan leda till att systemet blir trögt under aktiviteter som massöverföring av bilder.

För att åtgärda detta rekommenderar Adobe att du konfigurerar antalet maximalt antal parallella jobb till mellan hälften och tre fjärdedelar av antalet processorkärnor i systemet. Detta bör ge tillräcklig kapacitet för att systemet ska kunna vara responsivt när dessa arbetsflöden bearbetas.

Om du vill konfigurera maximalt antal parallella jobb kan du antingen:

  • Konfigurera OSGi Configuration från AEM webbkonsol; för Kö: Begränsa arbetsflödeskö (en konfiguration av Apache Sling-jobbkö).

  • Konfigurera kökanalen från alternativet Sling Jobs i AEM webbkonsol; för Konfiguration av jobbkö: Bevilja arbetsflödeskö, http://localhost:4502/system/console/slingevent.

Det finns dessutom en separat konfiguration för Bevilja arbetsflödets externa processjobbkö. Detta används för arbetsflödesprocesser som startar externa binärfiler, till exempel InDesign Server eller Image Magick.

Konfigurera enskilda jobbköer

I vissa fall kan det vara användbart att konfigurera enskilda jobbköer för att styra samtidiga trådar eller andra köalternativ, utifrån enskilda jobb. Du kan lägga till och konfigurera en enskild kö från webbkonsolen via fabriken Apache Sling Job Queue Configuration. Om du vill hitta rätt avsnitt att lista kör du arbetsflödets modell och letar efter det i konsolen Sling Jobs. till exempel på http://localhost:4502/system/console/slingevent.

Enskilda jobbköer kan även läggas till för tillfälliga arbetsflöden.

Konfigurera rensning av arbetsflöde

I en standardinstallation AEM en underhållskonsol där underhållsaktiviteter per dag och vecka kan schemaläggas och konfigureras. till exempel:

http://localhost:4502/libs/granite/operations/content/maintenance.html

Som standard har Veckounderhållsfönstret en tömningsåtgärd för arbetsflöde-aktivitet, men den måste konfigureras innan den kan köras. Om du vill konfigurera rensning av arbetsflöden måste en ny Adobe Granite Workflow Renge Configuration läggas till i webbkonsolen.

Mer information om underhållsåtgärder i AEM finns i Operations Dashboard.

Anpassning

När du skriver anpassade arbetsflödesprocesser finns det vissa saker som du bör tänka på.

Platser

Definitioner av arbetsflödesmodeller, startverktyg, skript och meddelanden lagras i databasen efter typ. dvs. färdiga, anpassade, bland annat.

OBSERVERA

Platser - arbetsflödesmodeller

Arbetsflödesmodeller lagras i databasen enligt typ:

  • Färdiga arbetsflöden finns under följande sökväg:

    /libs/settings/workflow/models/

    FÖRSIKTIGHET

    Gör inte:

    • placera någon av dina anpassade arbetsflödesmodeller i den här mappen
    • redigera vad som helst i /libs

    Alla ändringar kan skrivas över vid uppgradering eller vid installation av snabbkorrigeringar, kumulativa korrigeringspaket eller servicepaket.

  • Anpassade arbetsflödesdesigner finns under:

    /conf/global/settings/workflow/models/...
    
  • Arbetsflödesdesign vid körning (både färdiga och anpassade) finns på följande sökväg:

    /var/workflow/models/

  • Äldre arbetsflödesdesign (både designtid och körningsmiljö) finns under följande sökväg:

    /etc/workflow/models/

    OBSERVERA

    Om dessa designer redigeras med hjälp av AEM användargränssnitt kopieras informationen till de nya platserna.

Platser - Starta arbetsflöden

Definitioner av arbetsflödets startprogram lagras också i databasen enligt typ:

  • Körklara startprogram för arbetsflöden finns under följande sökväg:

    /libs/settings/workflow/launcher/

    FÖRSIKTIGHET

    Gör inte:

    • placera någon av dina anpassade startsidor för arbetsflöden i den här mappen
    • redigera vad som helst i /libs

    Alla ändringar kan skrivas över vid uppgradering eller vid installation av snabbkorrigeringar, kumulativa korrigeringspaket eller servicepaket.

  • Skräddarsydda arbetsflödesstarter finns under:

    /conf/global/settings/workflow/launcher/...
    
  • Inledande arbetsflöden finns på följande sökväg:

    /etc/workflow/launcher/

    OBSERVERA

    Om dessa definitioner redigeras med hjälp av det AEM användargränssnittet kopieras informationen till de nya platserna.

Platser - arbetsflödesskript

Arbetsflödesskript lagras också i databasen enligt typ:

  • Skript för färdiga arbetsflöden finns under följande sökväg:

    /libs/workflow/scripts/

    FÖRSIKTIGHET

    Gör inte:

    • placera något av dina anpassade arbetsflödesskript i den här mappen
    • redigera vad som helst i /libs

    Alla ändringar kan skrivas över vid uppgradering eller vid installation av snabbkorrigeringar, kumulativa korrigeringspaket eller servicepaket.

  • Skript för anpassade arbetsflöden finns under:

    /apps/workflow/scripts/...
    
  • Äldre arbetsflödesskript sparas under följande sökväg:

    /etc/workflow/scripts/

Platser - arbetsflödesmeddelanden

Arbetsflödesmeddelanden lagras också i databasen enligt typ:

  • Meddelandedefinitioner för färdiga arbetsflöden finns under följande sökväg:

    /libs/settings/workflow/notification/

    FÖRSIKTIGHET

    Gör inte:

    • placera någon av de anpassade definitionerna för arbetsflödesmeddelanden i den här mappen
    • redigera vad som helst i /libs

    Alla ändringar kan skrivas över vid uppgradering eller vid installation av snabbkorrigeringar, kumulativa korrigeringspaket eller servicepaket.

  • Definitioner för anpassade arbetsflödesmeddelanden finns under:

    /conf/global/settings/workflow/notification/...
    
    OBSERVERA

    Om du vill åsidosätta en meddelandetext i arbetsflödet skapar du en åsidosatt sökväg under:

    /conf/global/settings/workflow/notification/<path-under-libs>

  • De äldre definitionerna för arbetsflödesmeddelanden finns under följande sökväg:

    /etc/workflow/notification/

Processsessioner

Som vid all anpassad utveckling bör du alltid använda en användarsession när det är möjligt:

  • för att följa riktlinjerna för säkerhet på bästa sätt
  • så att systemet kan hantera öppning och stängning av sessionen

När en arbetsflödesprocess implementeras:

  • En arbetsflödessession tillhandahålls och bör användas om det inte finns någon tvingande anledning att inte göra det.
  • Nya sessioner ska inte skapas från arbetsflödessteg eftersom detta orsakar inkonsekvenser i tillståndet/tillstånden tillsammans med eventuella samtidiga problem i arbetsflödesmotorn.
  • Du bör inte hämta en ny JCR-session från ett processsteg i ett arbetsflöde. du bör anpassa arbetsflödessessionen som tillhandahålls av API:t för processsteg till en jcr-session. Till exempel:
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);

Spara en session:

  • Om WorkflowSession används för att ändra databasen i en arbetsflödesprocess ska du inte explicit spara sessionen. Arbetsflödet sparar då sessionen när den är klar.

  • Session.Save ska inte anropas inifrån ett arbetsflödessteg:

    • Vi rekommenderar att man anpassar arbetsflödets jcr-session. är save inte nödvändigt eftersom arbetsflödesmotorn sparar sessionen automatiskt när arbetsflödet har slutförts.
    • rekommenderas inte för ett processsteg för att skapa en egen jcr-session.
  • Genom att eliminera onödiga besparingar kan du minska omkostnaderna och på så sätt effektivisera arbetsflödena.

FÖRSIKTIGHET

Om du skapar en egen jcr-session, trots rekommendationerna här, måste den sparas.

Minimera antal/omfattning för startare

Det finns en avlyssnare som ansvarar för alla starter för arbetsflöden som är registrerade:

  • Den lyssnar efter ändringar på alla sökvägar som anges i de andra startarnas globbing-egenskaper.
  • När en händelse skickas utvärderas varje startprogram av arbetsflödesmotorn för att avgöra om den ska köras.

Om du skapar för många startprogram kommer utvärderingsprocessen att gå långsammare.

Om du skapar en globbningssökväg i roten av databasen för en enskild startfunktion kan arbetsflödesmotorn avlyssna och utvärdera händelserna create/modify för alla noder i databasen. Därför rekommenderar vi att du bara skapar startprogram som behövs och att du gör ordlistan så specifik som möjligt.

På grund av hur de här startverktygen påverkar arbetsflödets beteende kan det även vara praktiskt att inaktivera användningsklara startprogram som inte används.

Konfigurationsförbättringar för startare

Den anpassade startkonfigurationen har förbättrats med stöd för följande:

  • Ha flera villkor"OCH" tillsammans.
  • Har ELLER-villkor i ett enda villkor.
  • Inaktivera/aktivera startprogram baserat på om en funktionsflagga är aktiverad eller inaktiverad.
  • Support regex under startförhållanden.

Starta inte arbetsflöden från andra arbetsflöden

Arbetsflöden kan medföra en avsevärd mängd overheadkostnader, både när det gäller objekt som skapas i minnet och noder som spåras i databasen. Därför är det bättre att ha ett arbetsflöde som hanterar själva arbetsflödet i stället för att starta ytterligare arbetsflöden.

Ett exempel på detta är ett arbetsflöde som implementerar en affärsprocess för en uppsättning innehåll och sedan aktiverar innehållet. Det är bättre att skapa en anpassad arbetsflödesprocess som aktiverar var och en av dessa noder, i stället för att starta en Aktivera innehåll-modell för var och en av de innehållsnoder som behöver publiceras. Det här arbetssättet kräver ytterligare utvecklingsarbete, men är mer effektivt när det körs än att starta en separat arbetsflödesinstans för varje aktivering.

Ett annat exempel är ett arbetsflöde som bearbetar ett antal noder, skapar ett arbetsflödespaket och sedan aktiverar det paketet. I stället för att skapa paketet och sedan starta ett separat arbetsflöde med paketet som nyttolast, kan du ändra arbetsflödets nyttolast i det steg som skapar paketet och sedan anropa steget för att aktivera paketet i samma arbetsflödesmodell.

Handler Advance

När du utformar en arbetsflödesmodell kan du aktivera hanterare i dina arbetsflödessteg. Du kan också lägga till kod i arbetsflödessteget för att avgöra vilket steg som ska köras härnäst och sedan köra det.

Vi rekommenderar att du använder hanterarframsteg eftersom de ger bättre prestanda.

Arbetsflödessteg

Du kan definiera arbetsflödesfaser och sedan tilldela uppgifter/steg till en viss arbetsflödesfas.

Den här informationen används för att visa förloppet för ett arbetsflöde när du klickar på fliken Arbetsflödesinformation för ett arbetsobjekt i Inkorgen. Befintliga arbetsflödesmodeller kan redigeras för att lägga till faser.

Aktivera steg för sidprocess

Med steget Aktivera sidprocess aktiveras sidorna åt dig, men inga refererade DAM-resurser hittas automatiskt och de aktiveras också.

Detta är något att tänka på om du tänker använda det här steget som en del av en arbetsflödesmodell.

Överväganden vid uppgradering

När du uppgraderar din instans:

  • Kontrollera att alla anpassade arbetsflödesmodeller säkerhetskopieras innan en instans uppgraderas.

  • bekräfta att inga av dina anpassade arbetsflöden lagras på platsen:

    • /libs/settings/workflow/models/projects
OBSERVERA

Systemverktyg

Det finns många systemverktyg som du kan använda för att övervaka, underhålla och felsöka arbetsflöden. Alla exempel-URL:er nedan använder localhost:4502, men bör vara tillgängliga för alla författarinstanser ( <hostname>:<port>).

Sling Job Handling Console

http://localhost:4502/system/console/slingevent

Sling Job Handling-konsolen visar:

  • Statistik över status för jobb i systemet sedan den senaste omstarten.
  • Den visar också konfigurationerna för alla jobbköer och ger en genväg till redigering i konfigurationshanteraren.

Arbetsflödesrapportverktyget

Arbetsflödesrapportverktyget tas bort i 6.3 för att förhindra prestandaförsämring.

MBean för underhållsåtgärder för arbetsflöde

http://localhost:4502/system/console/jmx/com.adobe.granite.workflow:type=Maintenance

MBean för arbetsflödesunderhåll visar flera praktiska underhållsrutiner, som att tömma slutförda arbetsflöden och hämta arbetsflödesstatistik.

Ytterligare information

Mer information finns i:

På denna sida