Best practices voor workflow

Met workflows kunt u Adobe Experience Manager-activiteiten (AEM) automatiseren.

Ze vertegenwoordigen vaak een groot deel van de verwerking die plaatsvindt in een AEM omgeving. Wanneer aangepaste workflowstappen niet volgens de beste praktijken worden geschreven, of workflows buiten de doos niet zodanig worden geconfigureerd dat ze zo efficiënt mogelijk worden uitgevoerd, kan het systeem hiervan de gevolgen ondervinden.

Daarom wordt u ten zeerste aangeraden de implementaties van uw workflows zorgvuldig te plannen.

Configuratie

Bij het configureren van workflowprocessen (aangepast en/of out-of-the-box) zijn er een aantal zaken die in gedachten moeten worden gehouden.

Tijdelijke workflows

Om hoge inname te optimaliseren kunt u een werkstroom als transient bepalen.

Wanneer een werkstroom van voorbijgaande aard is, worden de runtime gegevens met betrekking tot de tussenliggende werkstappen niet voortgeduurd in JCR wanneer zij lopen (de uitvoeruitvoeruitvoeruitvoeringen blijven natuurlijk voortbestaan).

De voordelen kunnen zijn:

  • Een verkorting van de verwerkingstijd van de werkstroom; van maximaal 10%.
  • De groei van de opslagplaats aanzienlijk verminderen.
  • Er zijn geen CRUD-workflows meer nodig om te wissen.
  • Bovendien wordt het aantal TAR-bestanden dat moet worden gecomprimeerd, verminderd.
LET OP

Schakel deze functie niet in als uw bedrijf voorschrijft dat u gegevens over de werkstroomruntime voor controledoeleinden wilt behouden/archiveren.

DAM-workflows afstemmen

Zie AEM Assets Performance Tuning Guide voor richtlijnen voor het afstemmen van prestaties voor DAM-workflows.

Het maximumaantal gelijktijdige werkstromen configureren

AEM kunnen meerdere workflowthreads tegelijk uitvoeren. Door gebrek wordt het aantal draden gevormd om de helft van het aantal bewerkerkernen op het systeem te zijn.

In gevallen waarin de workflows die worden uitgevoerd veeleisend zijn aan systeembronnen, kan dit betekenen dat er weinig over AEM is om te gebruiken voor andere taken, zoals het renderen van de ontwerpinterface. Hierdoor kan het systeem traag zijn tijdens activiteiten zoals het uploaden van grote hoeveelheden afbeeldingen.

Om dit probleem aan te pakken, raadt Adobe aan het aantal Maximum Parallelle Banen te configureren om tussen de helft tot driekwart van het aantal processorcores op het systeem te liggen. Dit moet voldoende capaciteit voor het systeem om ontvankelijk te blijven wanneer het verwerken van deze werkschema's.

Om Maximum Parallelle Banen te vormen, kunt u of:

  • Vorm OSGi Configuratie van de AEM console van het Web; voor Wachtrij: Granite Workflow Queue (en Apache Sling Job Queue Configuration).

  • Vorm de rij van de het Verdelen optie van Banen van de AEM console van het Web kan; voor Configuratie taakwachtrij: Granite Workflow Queue, bij http://localhost:4502/system/console/slingevent.

Daarnaast is er een aparte configuratie voor de Granite Workflow External Process Job Queue. Dit wordt gebruikt voor werkschemaprocessen die externe binaire getallen, zoals InDesign Server of Beeldmakerij lanceren.

Afzonderlijke taakwachtrij configureren

In sommige gevallen is het nuttig om individuele baanrijen te vormen om gezamenlijke draden, of andere rijopties, op een individuele baanbasis te controleren. U kunt een individuele rij van de console van het Web toevoegen en vormen via Apache het Verdelen de Configuratie van de Rij van de Rij fabriek. Om het aangewezen onderwerp aan lijst te vinden, voer het model van uw werkschema uit en zoek het in de Sling Jobs console; bijvoorbeeld op http://localhost:4502/system/console/slingevent.

Afzonderlijke taakwachtrijen kunnen ook worden toegevoegd voor tijdelijke werkstromen.

Workflow leegmaken configureren

In een standaardinstallatie AEM een onderhoudsconsole biedt waar dagelijkse en wekelijkse onderhoudsactiviteiten kunnen worden gepland en geconfigureerd; bijvoorbeeld :

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

Door gebrek, heeft Wekelijks Onderhoudsvenster een Werkschemazuivering taak, maar dit moet worden gevormd alvorens het zal in werking stellen. Om werkstroompurges te configureren, moet een nieuwe Adobe Granite Workflow Purge Configuration worden toegevoegd aan de webconsole.

Zie Operations Dashboard voor meer informatie over onderhoudstaken in AEM.

Aanpassing

Bij het schrijven van aangepaste workflowprocessen moet u rekening houden met een aantal zaken.

Locaties

Definities van workflowmodellen, draagraketten, scripts en meldingen worden in de gegevensopslagruimte opgeslagen volgens het type; d.w.z. out-of-the-box, aangepast, enz.

Locaties - workflowmodellen

Workflowmodellen worden in de opslagplaats opgeslagen volgens het type:

  • Workflowontwerpen die buiten de box vallen, worden opgeslagen onder het volgende pad:

    /libs/settings/workflow/models/

    LET OP

    Niet:

    • plaats om het even welke modellen van uw douanewerkschema in deze omslag
    • alles bewerken in /libs

    Aangezien om het even welke veranderingen bij verbetering of wanneer het installeren van heet-moeilijke situaties kunnen worden beschreven, cumulatieve moeilijke fixpakken of de dienstpakken.

  • Aangepaste workflowontwerpen vindt u onder:

    /conf/global/settings/workflow/models/...
    
  • Workflowontwerpen bij uitvoering (zowel out-of-the-box als aangepast) bevinden zich onder het volgende pad:

    /var/workflow/models/

  • Verouderde workflowontwerpen (zowel tijdens het ontwerpen als bij uitvoering) staan onder het volgende pad:

    /etc/workflow/models/

    OPMERKING

    Als deze ontwerpen gebruikend AEM UI worden uitgegeven, dan zullen de details aan de nieuwe plaatsen worden gekopieerd.

Locaties - Workflowstartprogramma's

Werkstroomstartdefinities worden ook volgens het type opgeslagen in de opslagplaats:

  • Startprogramma's voor workflows die buiten de box vallen, worden ondergebracht in het volgende pad:

    /libs/settings/workflow/launcher/

    LET OP

    Niet:

    • plaats om het even welke douane werkschemalanceerders in deze omslag
    • alles bewerken in /libs

    Aangezien om het even welke veranderingen bij verbetering of wanneer het installeren van heet-moeilijke situaties kunnen worden beschreven, cumulatieve moeilijke fixpakken of de dienstpakken.

  • Aangepaste draagraketten voor workflows vindt u onder:

    /conf/global/settings/workflow/launcher/...
    
  • Verouderde draagraketten voor workflows worden opgeslagen onder het volgende pad:

    /etc/workflow/launcher/

    OPMERKING

    Als deze definities gebruikend AEM UI worden uitgegeven, dan zullen de details aan de nieuwe plaatsen worden gekopieerd.

Locaties - Workflowscripts

Workflowscripts worden ook in de repository opgeslagen volgens het type:

  • Workflowscripts buiten de box worden opgeslagen onder het volgende pad:

    /libs/workflow/scripts/

    LET OP

    Niet:

    • Plaats om het even welke manuscripten van uw douanewerkschema in deze omslag
    • alles bewerken in /libs

    Aangezien om het even welke veranderingen bij verbetering of wanneer het installeren van heet-moeilijke situaties kunnen worden beschreven, cumulatieve moeilijke fixpakken of de dienstpakken.

  • Scripts voor aangepaste workflows staan onder:

    /apps/workflow/scripts/...
    
  • Oudere workflowscripts staan in het volgende pad:

    /etc/workflow/scripts/

Locaties - Workflowmeldingen

Workflowmeldingen worden ook opgeslagen in de repository volgens het type:

  • De definities van de out-of-the-box workflowmelding staan onder het volgende pad:

    /libs/settings/workflow/notification/

    LET OP

    Niet:

    • Plaats om het even welke definities van uw douanewerkschemabericht in deze omslag
    • alles bewerken in /libs

    Aangezien om het even welke veranderingen bij verbetering of wanneer het installeren van heet-moeilijke situaties kunnen worden beschreven, cumulatieve moeilijke fixpakken of de dienstpakken.

  • Definities van aangepaste workflowmeldingen vindt u onder:

    /conf/global/settings/workflow/notification/...
    
    OPMERKING

    Als u de tekst van een workflowmelding wilt overschrijven, maakt u een overlaypad onder:

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

  • Definities van verouderde workflowmeldingen vindt u onder het volgende pad:

    /etc/workflow/notification/

Processessies

Net als bij elke aangepaste ontwikkeling wordt altijd aangeraden de sessie van een gebruiker te gebruiken als dat mogelijk is:

  • voor een optimale naleving van de beveiligingsrichtlijnen
  • om het systeem toe te staan om het openen en het sluiten van de zitting te leiden

Bij het implementeren van een workflowproces:

  • Er wordt een workflowsessie aangeboden die moet worden gebruikt, tenzij er een dwingende reden is om dit niet te doen.
  • Nieuwe sessies moeten niet worden gemaakt op basis van workflowstappen, omdat dit leidt tot inconsistenties in de status(s) en mogelijke gelijktijdige problemen in de workflow-engine.
  • U mag geen nieuwe JCR-sessie aanschaffen vanuit een processtap in een werkstroom. U zou de werkschemasessie die door Stap API van het Proces aan een jcr zitting wordt verstrekt moeten aanpassen. Bijvoorbeeld:
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);

Een sessie opslaan:

  • Als in een workflowproces de WorkflowSession wordt gebruikt om de repository te wijzigen, slaat u de sessie dan niet expliciet op. De workflow slaat de sessie op wanneer deze is voltooid.

  • Session.Save mag niet worden aangeroepen vanuit een workflowstap:

    • het verdient aanbeveling de werkstroom - jcr - sessie aan te passen ; dan is save niet nodig aangezien de werkschemamotor de zitting automatisch bewaart zodra het werkschema het uitvoeren heeft gebeëindigd.
    • het wordt niet aanbevolen dat een processtap een eigen jcr-sessie maakt.
  • Door onnodige besparingen te elimineren, kunt u overheadkosten verminderen en zo de werkschema's efficiënter maken.

LET OP

Als u, ondanks de aanbevelingen hier, uw eigen jcr zitting creeert, dan zal het moeten worden bewaard.

Aantal/bereik van opstarters beperken

Er is één listener die verantwoordelijk is voor alle workflowdraagraketten die zijn geregistreerd:

  • Er wordt geluisterd naar wijzigingen in alle paden die zijn opgegeven in de globbingseigenschappen van de andere draagraketten.
  • Wanneer een gebeurtenis wordt verzonden, zal de werkschemamotor dan elke lancerer evalueren om te bepalen of het zou moeten lopen.

Het maken van te veel draagraketten zorgt ervoor dat het evaluatieproces langzamer wordt uitgevoerd.

Door een globbingpad in de basis van de opslagplaats te maken op één startpunt, zou de workflowengine luisteren naar gebeurtenissen voor het maken/wijzigen van gebeurtenissen in elk knooppunt in de opslagplaats en deze evalueren. Daarom wordt aangeraden alleen de nodige draagraketten te maken en het globbende pad zo specifiek mogelijk te maken.

Vanwege de invloed van deze draagraketten op het workflowgedrag, kan het ook handig zijn om alle draagraketten die niet in gebruik zijn, uit te schakelen.

Verbeteringen in configuratie voor Launchers

De aangepaste startconfiguratie is uitgebreid ter ondersteuning van het volgende:

  • Meerdere voorwaarden "AND" hebben.
  • OR-voorwaarden hebben in één voorwaarde.
  • Schakel draagraketten uit of in op basis van het feit of een functiemarkering is ingeschakeld of uitgeschakeld.
  • Ondersteuning voor regex in opstartomstandigheden.

Workflows uit andere workflows niet starten

Workflows kunnen een aanzienlijke hoeveelheid overhead met zich meebrengen, zowel in termen van objecten die in het geheugen zijn gemaakt als van knooppunten die in de opslagplaats worden bijgehouden. Daarom is het beter om een workflow op zichzelf te laten verwerken in plaats van extra workflows te laten starten.

Een voorbeeld hiervan is een workflow die een bedrijfsproces implementeert op een set inhoud en die inhoud vervolgens activeert. Het is beter om een proces van het douanewerkschema tot stand te brengen dat elk van deze knopen activeert, eerder dan het beginnen van een activeer Inhoud model voor elk van de inhoudsknopen die moeten worden gepubliceerd. Deze benadering vereist extra ontwikkelingswerk, maar is efficiënter wanneer uitgevoerd dan het beginnen van een afzonderlijke werkschemainstantie voor elke activering.

Een ander voorbeeld zou een werkschema zijn dat een aantal knopen verwerkt, tot een werkschemapakket leidt, dan genoemd pakket activeert. In plaats van het pakket te maken en vervolgens een aparte workflow te starten met het pakket als de lading, kunt u de lading van uw workflow wijzigen in de stap die het pakket maakt en vervolgens de stap aanroepen om het pakket te activeren binnen hetzelfde workflowmodel.

Handler Advance

Bij het ontwerpen van een workflowmodel hebt u de optie om de handler in staat te stellen de stappen van uw workflow te doorlopen. U kunt ook code toevoegen aan de workflowstap om te bepalen welke stap vervolgens moet worden uitgevoerd en vervolgens moet worden uitgevoerd.

Het wordt aanbevolen om de voortgang van de handlers te gebruiken omdat deze betere prestaties levert.

Werkstroomfasen

U kunt workflowfasen definiëren en vervolgens taken/stappen toewijzen aan een specifieke werkstroomfase.

Deze informatie wordt gebruikt voor het tonen van de vooruitgang van een werkschema wanneer u op Info van het Werkschema lusje van een werkpunt van Inbox klikt. Bestaande workflowmodellen kunnen worden bewerkt om stadia toe te voegen.

Stap voor paginaverwerking activeren

Met de stap Paginaproces activeren worden pagina's voor u geactiveerd, maar worden DAM-middelen waarnaar wordt verwezen, niet automatisch gevonden en worden deze ook geactiveerd.

Dit is iets om in mening te houden als u deze stap als deel van een werkschemamodel wilt gebruiken.

Overwegingen voor upgrades

Wanneer u uw exemplaar upgradet:

  • ervoor zorgen dat een back-up wordt gemaakt van aangepaste workflowmodellen voordat een upgrade van een instantie wordt uitgevoerd.

  • bevestig dat geen van uw aangepaste workflows onder de locatie worden opgeslagen:

    • /libs/settings/workflow/models/projects

Systeemgereedschappen

Er zijn vele systeemhulpmiddelen beschikbaar om met controle, het handhaven, en het oplossen van problemenwerkschema's te helpen. Alle onderstaande voorbeeld-URL's gebruiken localhost:4502, maar moeten beschikbaar zijn voor elke instantie van de auteur ( <hostname>:<port>).

Sling Job Handling Console

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

De Sling Job Handling-console geeft het volgende weer:

  • Statistieken over de stand van de werkgelegenheid in het systeem sinds de laatste herstart.
  • Het zal ook de configuraties voor alle baanrijen tonen en een kortere weg verstrekken aan het uitgeven van hen in de configuratiemanager.

Workflow Report Tool

Het werkstroomrapportagehulpprogramma wordt verwijderd in 6.3 om te voorkomen dat de prestaties afnemen.

Bewerkingen voor workflowonderhoud MBean

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

Het werkstroomonderhoud MBean stelt verscheidene nuttige onderhoudroutines zoals het zuiveren van voltooide werkschema's en het terugwinnen van werkschemastatistieken bloot.

Aanvullende informatie

Zie voor meer informatie:

Op deze pagina