Kedja flera scenarier tillsammans

IMPORTANT
Den här funktionen finns i Beta och rekommenderas inte för verksamhetskritiska produktionsflöden. Som en Beta-funktion kan beteendet förändras och kantfall kanske inte hanteras helt.
För stabila integreringar bör du överväga att utlösa ett andra scenario via webkrok med hjälp av en HTTP Request-modul. Det här mönstret använder helt stödda primitiva metoder och ger varje scenario oberoende körningskontroll.
Om du väljer att använda kedjade scenarier bör du noggrant granska designvägledningen och begränsningarna i den här artikeln, särskilt avsnittet Bästa metoder.

Du kan kedja scenarier tillsammans, så att ett scenario kan utlösa ett annat och returnera data från det andra scenariot till det första. Detta gör det möjligt att skapa ett mer modulärt scenario där du inte behöver duplicera scenarioavsnitt i flera scenarier.

Du kan anropa flera underordnade scenarier från ett överordnat scenario, och du kan anropa ett underordnat scenario från flera överordnade scenarier. Du kan även kapsla underordnade scenarier och anropa ett från ett annat.

När ett överordnat scenario väntar på att ett underordnat scenario ska returnera data räknas den tiden inte mot det överordnade scenariets timeout. Ett överordnat scenario anropar till exempel 5 underordnade scenarier, där vart och ett tar 10 minuter att köra, under totalt 50 minuter. Modulerna i det överordnade scenariot tar 15 minuter att köra. Det överordnade scenariot gör inte timeout, även om totalt 65 minuter har gått, vilket är över tidsgränsen på 40 minuter.

Mer information om Fusions prestandaresäkerhetsskydd, inklusive tidsgränser, finns i Förberedelser för Fusion-prestanda.

Instruktioner om hur du konfigurerar kedjemoduler finns i Kedjemoduler.

Överordnade och underordnade scenarier

  • Scenariot parent anropar ett annat scenario med hjälp av modulen Chain > Anropa ett underordnat scenario. Den tar emot utdata från det underordnade scenariot, som kan bearbetas i senare scenariomoduler.
  • Scenariot child anropas av det överordnade scenariot. Dess utlösarmodul tar emot data från det överordnade scenariot och returnerar utdata till det överordnade scenariot.

Det överordnade scenariot kräver ett svar från det underordnade scenariot. Underordnade scenarier som inte returnerar data stöds för närvarande inte.

Datastrukturer i kedjade scenarier

Workfront Fusion använder datastrukturer för att överföra information från det överordnade scenariot till det underordnade scenariot. Datastrukturen är konfigurerad i det underordnade scenariot. När det underordnade scenariot väljs från det överordnade scenariot visas fälten för den datastruktur som används som indata för det underordnade scenariot i det överordnade scenariot. Du kan mappa värden till dessa fält, som skickas till det underordnade scenariot när det aktiveras.

Mer information om vilka moduler som ska konfigureras i det överordnade och underordnade scenariot finns i Kedjemoduler.

Mer information om datastrukturer finns i Datastrukturer.

Dataflöde

  1. Data flödar genom det överordnade scenariot.
  2. Data når modulen Anropa ett underordnat scenario. Data mappas till fälten i modulen Anropa ett underordnat scenario, som matchar fälten i datastrukturen som används i det underordnade scenariots utlösarmodul.
  3. Data från Anropa ett underordnat scenario skickas till det underordnade scenariot.
  4. Det underordnade scenariot bearbetar data och utför åtgärder.
  5. Det underordnade scenariot avslutas med retursvaret till den överordnade modulen.
  6. Utdata från retursvaret på den överordnade modulen skickas till det överordnade scenariot.
  7. Utdata för scenariot Anropa ett underordnat scenario är utdata från det underordnade scenariot. Utdata kan bearbetas senare i det överordnade scenariot.

Användningsfall

Här följer några exempel på hur du använder kedjningsscenarier:

  • Återanvändbar logik: Du kan kedja scenarier för upprepade åtgärder som används i flera scenarier. Om du till exempel har flera scenarier där innehållet arkiveras kan du skapa ett enda underordnat scenario som kallas"Arkivera innehåll" och sedan använda det som ett underordnat scenario för alla arbetsflöden som arkiverar innehåll.

  • Felhantering: Det är vanligt att organisationer har samma felhanteringsåtgärder i flera olika scenarier, till exempel en felhanteringsväg som skickar en fellogg till ett datalager och skapar ett slackmeddelande. Du kan skapa ett underordnat scenario med dessa åtgärder och kedja det scenariot i felhanteringsflöden i flera scenarier.

  • Utökad tid: Du kan använda kedjning för stora gruppåtgärder där den totala bearbetningstiden skulle överskrida 40-minuters körningsgränsen för ett enskilt scenario. Behandla det här mönstret med försiktighet: ett överordnat scenario som är kopplat till flera långa underordnade scenarier har ingen generell tidsgräns. Om något underordnat scenario hänger sig eller om ett plattformsproblem inträffar, väntar det överordnade objektet oavbrutet utan att något fel uppstår.

    Innan du använder kedjning för att förlänga körningstiden bör du överväga om batchstorleken kan minskas, frekvensen ökas eller designen omstruktureras för att undvika långa sekventiella kedjor. Se God praxis nedan.

  • Att ersätta iteratorer Att ersätta iteratorer med underordnade scenarier kan minska minnesanvändningen, till exempel vid komplexa åtgärder i en iteration som orsakar fel av typen Slut på minne. Du kan skapa ett separat scenario för den komplexa åtgärden och ersätta iteratorn med Anropa en underordnad scenariomodul

  • Sök efter och skapa en post: Du kan till exempel skapa ett scenario som söker efter en användare. Om de finns läggs de till som godkännare med åtkomst som de behöver för att granska och godkänna. Om de inte finns skapar scenariot en begäran om att administratören ska ta in en ny användare.

Visa körningshistorik för kedjade scenarier

Du kan visa körningshistorik för kedjade scenarier genom att visa historiken för varje scenario som ingår i kedjan. Det överordnade scenariets körningshistorik innehåller till exempel information om moduler och data som bearbetas direkt i det överordnade scenariot. Om du vill visa körningshistorik för moduler och data som bearbetas i ett underordnat scenario öppnar du det underordnade scenariot och visar körningshistoriken där.

Vi rekommenderar att du använder knappen Gå till det underordnade scenariot i modulen Anropa ett underordnat scenario för att snabbt gå till det underordnade scenariot, där du kan visa dess körningshistorik. Det underordnade scenariot öppnas i ett annat webbläsarfönster så att du kan se överordnade och underordnade scenarier samtidigt.

Gå till knappen för underordnat scenario

Fel och ofullständiga körningar

Felhantering

Om det underordnade scenariot slutar fungera kan det påverka hur data hämtas tillbaka till det överordnade.

Vi rekommenderar att felhantering konfigureras i det underordnade scenariot för att säkerställa att det överordnade scenariot inte fastnar för svar från det underordnade scenariot om något går fel i det underordnade scenariot.

Bästa praxis

Tänk på följande när du kedjer ett scenario.

Undvik rekursion vid kedjningsscenarier

Rekursion inträffar när ett scenario utlöser en ny körning av sig själv, som utlöser en ny körning och så vidare i en oändlig slinga.

Rekursion kan orsaka prestandaproblem både för den organisation som äger det rekursiva scenariot och för andra organisationer.

Följ de här stegen för att undvika rekursion när du kedjer scenarier:

  • Kontrollera att underordnade scenarier inte kan utlösa det överordnade scenariot. Om till exempel ett överordnat scenario aktiveras när en begäran skapas, ska du se till att de underordnade scenarierna inte skapar några begäranden.
  • Se till att underordnade scenarier inte anropar varandra. Om det underordnade scenariot A till exempel anropar det underordnade scenariot B, ska du se till att det underordnade scenariot B inte anropar det underordnade scenariot A.
  • Kontrollera att ett scenario inte kan anropa sig själv. Ett scenario aktiveras till exempel när en uppgift skapas och det scenariot skapar två uppgifter. De nya uppgifterna utlöser båda scenariot igen, vilket skapar fyra nya uppgifter. Varje gång en uppgift skapas utlöses scenariot och varje gång scenariot körs dubbleras antalet uppgifter. Antalet uppgifter ökar exponentiellt.
IMPORTANT
  • När ett scenario orsakar rekursion inaktiveras det av Fusion Engineering-teamet för att förhindra ytterligare prestandaproblem.
  • Eftersom rekursion är ett resultat av scenariodesign måste du utforma dina scenarier på ett sätt som säkerställer att scenariot inte innehåller åtgärder som utlöser scenariot.
  • Du kan visa ett diagram över relationerna mellan överordnade och underordnade scenarier.
    Instruktioner finns i Visa kedjade scenarierelationer.

Använd felhantering för att säkerställa ett svar

Eftersom det överordnade scenariot väntar på ett svar från det underordnade scenariot innan det kan fortsätta måste du se till att det underordnade scenariot skapas så att det ger ett svar även om ett fel påträffas.

Använd inte inställningen “Verkställ utlösare sista (CTL)”

Vi rekommenderar inte att du använder scenarioinställningen “Bekräfta utlösare sista (CTL)” med kedjade scenarier. Om du behöver göra om beteendet i ett scenario som använder kedja implementerar du det explicit med en felhanteringsväg med ett definierat maximalt antal nya försök.

Begränsa kapslingsdjup

Begränsa nätverk för kedjade scenarier till två djupnivåer (överordnad → underordnad). Scenarier som kapslats in på tre eller fler nivåer djupa (överordnad → underordnad → indirekt underordnad) ökar komplexiteten avsevärt, minskar observerbarheten och gör det svårt att diagnostisera fel utan teknisk support.

Om din design kräver djupare kapsling kan du dokumentera hela kedjekartan och säkerställa att övervakning finns innan du distribuerar till produktionen.

Använd Fire och Glöm noga

När Starta och Glöm är aktiverat i modulen Anropa ett underordnat scenario skickar det överordnade scenariot det underordnade och fortsätter omedelbart utan att vänta på ett svar. Den överordnade har ingen synlighet för om det underordnade scenariot kördes, lyckades eller misslyckades.

Använd bara Fire och Glöm när:

  • Det underordnade scenariot utför loggning, meddelanden eller granskningsskrivningar som inte påverkar det överordnade scenariets logik
  • Du har en oberoende övervakning på plats för att upptäcka passiva underordnade fel

Använd inte Fire och Glöm inte när:

  • Det underordnade scenariot utför skrivningar som det överordnade är beroende av
  • Du måste veta om det underordnade scenariot lyckades innan det överordnade projektet fortsätter
  • Arbetsflödet är transaktionsbaserat eller kräver exakt en bearbetningsgaranti

Undvik att anropa underordnade scenarier i iteratorer med hög volym

Om du placerar en Call-modul för ett underordnat scenario i en BasicFeeder eller annan iterator skickas ett underordnat scenario för varje bearbetat objekt. Vid högt antal artiklar (hundratals eller fler per körning) skapar detta betydande utskick och ökar exponeringen för problem med plattformens tillförlitlighet.

Innan du använder mönstret:

  • Fundera på om logiken för det underordnade scenariot kan infogas direkt i det överordnade scenariot som moduler
  • Förberäknar alla uppslag som returnerar samma värde för alla iterationer utanför iteratorn, i stället för att skicka ett kedjeanrop per objekt
  • Bekräfta det maximala antalet objekt och granska med administratören innan du distribuerar till produktion
recommendation-more-help
workfront-fusion-help-workfront-fusion