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.
Bij het configureren van workflowprocessen (aangepast en/of out-of-the-box) zijn er een aantal zaken die in gedachten moeten worden gehouden.
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:
Schakel deze functie niet in als uw bedrijf voorschrijft dat u gegevens over de werkstroomruntime voor controledoeleinden wilt behouden/archiveren.
Zie AEM Assets Performance Tuning Guide voor richtlijnen voor het afstemmen van prestaties voor DAM-workflows.
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.
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.
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.
Bij het schrijven van aangepaste workflowprocessen moet u rekening houden met een aantal zaken.
Definities van workflowmodellen, draagraketten, scripts en meldingen worden in de gegevensopslagruimte opgeslagen volgens het type; d.w.z. out-of-the-box, aangepast, enz.
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/
Niet:
/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/
Als deze ontwerpen gebruikend AEM UI worden uitgegeven, dan zullen de details aan de nieuwe plaatsen worden gekopieerd.
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/
Niet:
/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/
Als deze definities gebruikend AEM UI worden uitgegeven, dan zullen de details aan de nieuwe plaatsen worden gekopieerd.
Workflowscripts worden ook in de repository opgeslagen volgens het type:
Workflowscripts buiten de box worden opgeslagen onder het volgende pad:
/libs/workflow/scripts/
Niet:
/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/
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/
Niet:
/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/...
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/
Net als bij elke aangepaste ontwikkeling wordt altijd aangeraden de sessie van een gebruiker te gebruiken als dat mogelijk is:
Bij het implementeren van een workflowproces:
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:
save
niet nodig aangezien de werkschemamotor de zitting automatisch bewaart zodra het werkschema het uitvoeren heeft gebeëindigd.Door onnodige besparingen te elimineren, kunt u overheadkosten verminderen en zo de werkschema's efficiënter maken.
Als u, ondanks de aanbevelingen hier, uw eigen jcr zitting creeert, dan zal het moeten worden bewaard.
Er is één listener die verantwoordelijk is voor alle workflowdraagraketten die zijn geregistreerd:
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.
De aangepaste startconfiguratie is uitgebreid ter ondersteuning van het volgende:
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.
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.
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.
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.
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
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>
).
http://localhost:4502/system/console/slingevent
De Sling Job Handling-console geeft het volgende weer:
Het werkstroomrapportagehulpprogramma wordt verwijderd in 6.3 om te voorkomen dat de prestaties afnemen.
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.
Zie voor meer informatie: