Fejlfinding i Shopify Flow

Dette dokument beskriver almindelige fejl og begrænsninger, årsagen til deres opståen og hvordan du løser dem. Der er to typer af fejl, som du kan støde på i Flow; permanente fejl og midlertidige fejl.

Fejl ved redigering af workflows

Når du redigerer et workflow, kan du opleve fejl, der forhindrer dig i at gemme workflowet. Følgende er almindelige fejl, som du kan støde på, når du redigerer et workflow:

Dataene blev ikke fundet

Når du føjer en ny handling til et workflow, kan du få en fejl, der siger Data not found:

Fejl – data blev ikke fundet

Denne fejl opstår, fordi mange handlinger, inklusive Tilføj produkttags, kræver en Shopify-ressource, f.eks. et produkt. Hvis denne ressource ikke er tilgængelig, kan handlingen ikke køre. Normalt kan workflows indeholde data, der ligner de påkrævede data, men de indeholder ikke det nødvendige.

I de følgende afsnit beskrives almindelige scenarier, der kan medføre denne fejl, og hvordan du løser fejlen.

Problem 1: En liste blev leveret af Hent data , når der var behov for en enkelt vare

Ofte giver en arbejdsgang en liste over Shopify-ressourcer, men handlingen tillader kun en enkelt ressource. For eksempel giver arbejdsgangen en liste over produkter via Hent produktdata, men handlingen Tilføj produkttags kræver et enkelt produkt.

For at løse denne fejl kan du tilføje en For hver handling til at gå over listen og kalde handlingen for hver vare på listen. Dette eksempel illustrerer både fejlen og løsningen ved hjælp af For hver:

Fejl – data blev ikke fundet

Problem 2: En liste blev leveret af en udløser, når der var brug for en enkelt vare

En lignende fejl kan opstå, når en handling kræver en enkelt ressource, men triggeren giver en liste. For eksempel kræver Marker en klargøringsordre som klargjort en klargøringsordre, men udløseren kommer fra en ordre, som giver en liste over klargøringsordrer.

For at løse denne fejl kan du, som med problem 1, tilføje For hver handling, der kan loopes over listen og kalde handlingen for hver vare på listen:

Løsning til klargøringsordrer

Alternativt kan du bruge en anden trigger, der giver den nødvendige ressource. For eksempel i stedet for at bruge udløseren Ordre oprettet kan du bruge udløseren Klargøringsordre klar til at klargøre, som giver en enkelt klargøringsordre.

Klargøringsordre klar til at opfylde triggereksempel

Problem 3: Den planlagte tidsbaserede udløser returnerede ikke data

Udløseren planlagt tidspunkt giver ikke Shopify-ressourcedata. Hvis du forsøger at forbinde handlinger, der kræver Shopify-ressourcer efter triggeren, vil du støde på fejlen.

For at løse denne fejl skal du tilføje en handling, f.eks. Hent produktdata, der giver de nødvendige data. Som bemærket i Problem 1 skal du også tilføje en For hver handling til at gå over en liste, der returneres af en handling, der henter data.

Eksempel, hvor et påkrævet produkt mangler

Problem 4: Der blev ikke leveret data af en appudløser

I lighed med problem 3 giver nogle triggere, der er oprettet af apps, ikke de nødvendige Shopify-ressourcedata. For eksempel kan en "Anmeldelse oprettet"-udløser give en e-mailadresse, men ikke et kunde-objekt, hvilket er nødvendigt for mange handlinger, såsom Tilføj kundetags.

For at løse denne fejl kan du muligvis bruge en "Hent data"-handling til at hente den Shopify-ressource, du har brug for. For eksempel kan du bruge Hent kundedata til at hente kundeobjektet fra den e-mailadresse, som udløseren angiver. Som med de andre problemer skal du også tilføje en For hver-handling til at gå over en liste, der returneres af en handling, der henter data.

Hvis "Hent data" ikke er en mulighed, skal du muligvis kontakte appudvikleren for at spørge, om de kan ændre deres trigger for at levere de nødvendige data.

Fejl, når et workflow kører

Når en workflowkørsel oplever en fejl, markeres workflowkørslen som mislykket. Fejlmeddelelsen vises i oplysningerne om workflowkørslen. Følgende er almindelige fejl, som du kan støde på, når en workflowkørsel mislykkes:

Midlertidige fejl

Midlertidige fejl opstår, når Flow ikke kan fuldføre en opgave. Disse fejl prøves igen, indtil de enten lykkedes eller når en timeoutgrænse. Hvis Flow f.eks. ikke kan kontakte en partner, når der køres en connectorhandling, vil Flow prøve opgaven igen flere gange, før der gives op.

Nye forsøg af workflowet prøves med forsinkelser, hvor forsinkelserne mellem hvert forsøg stiger i forhold til den forrige forsinkelse. Når et workflow oplever midlertidige fejl, forbliver det i kørende tilstand i lang tid, mens det forsøger at gennemføre opgaverne igen.

Workflowet fortsætter, når opgaven er forsøgt igen med succes. Hvis en gentaget opgave oplever en permanent fejl, så fejler workflowet.Hvert workflowafsnit har en kombineret øvre grænse for udførelse på 36 timer. Hvis et trin med midlertidige fejl ikke lykkes, før denne grænse nås, mislykkes workflowet.

Workflows med ventetrin er inddelt i afsnit, hvilket påvirker, hvordan timeoutbegrænsninger beregnes i et workflow. Hvert afsnit er en gruppe af opgaver, der udføres sammen, og hver har sin egen tidsbegrænsning på 36 timer.Hvis et workflow f.eks. har et ventetrin, der venter i en time, køres opgaverne før ventetrinnet sammen i ét afsnit, og opgaverne efter ventetrinnet køres sammen i et andet afsnit. Hvis et workflow har flere ventetrin, køres opgaverne mellem hvert ventetrin sammen i ét afsnit. Workflows uden et ventetrin anses for at være ét afsnit.

Lejlighedsvise og midlertidige fejl er almindelige. Hvis du imidlertid har et workflow, der konsekvent oplever den samme midlertidige fejl på tværs af flere kørsler, skal dit workflow muligvis konfigureres igen.

Trinnet har fået timeout

Step timed out fejl opstår normalt, når en opgave i workflowet forsøger at forespørge for mange data i ét afsnit. Denne fejl opstår ofte i workflows, der gentager over lister, især indlejrede lister, som er for store til, at de kan hentes på en rettidig måde.

Når et workflow oplever denne fejl, vises udløseren eller ventetrinnet som retrying.

Du kan løse dette ved at markere eventuelle betingelser, der tilgår lister og indlejrede lister for at sikre dig, at de er korrekte. Et almindeligt problem er, at en betingelse kontrollerer alle produkter i en butik i stedet for kun produkterne i en ordre.

Status for 5xx

De fleste Flow-handlinger omfatter at foretage HTTP-kald. Fra tid til anden kan netværksproblemer eller andre serverproblemer medføre fejl i HTTP-kald, så der returneres en fejlkode på mellem 500 og 599. Det er ikke et problem at se en forekomst af denne fejl, men gentagne forekomster kan indikere et problem med serveren, der håndterer opgaven, i stedet for med den måde, trinnet er konfigureret.

Denne type fejl ses oftest i handlingen Send HTTP-anmodning, men den kan ske på de fleste opgaver.

GraphQL er begrænset

Den samlede mængde arbejde, som udføres af et workflow, er begrænset af API-anmodningsgrænser, som delvist afgøres af dit abonnement. Normalt er disse begrænsninger ikke nået, medmindre et workflow er meget komplekst eller har en utilsigtet designfejl. Følgende er eksempler på scenarier, der kan føre til denne fejl:

  • Liquid eller betingelser i workflowet gentages over en liste med store mængder data, som f.eks. kontrol af metafeltværdier, der indeholder HTML.
  • Liquid eller betingelser i workflowet gentages over en stor liste, som f.eks. gentagelse over shop.orders i en stor butik.
  • Et workflow resulterer i en uendelig løkke, hvor workflowet hele tiden opretter nye workflowkørsler. Dette kan f.eks. ske, hvis workflowet bruger udløseren Kundetags er tilføjet og inkluderer handlingen Tilføj kundetags.

Hvis grænsen er nået, modtager du fejlen GraphQL throttled . Denne fejl kan påvirke andre workflows, når de forsøger at køre. Denne fejl bør derfor løses med det samme, hvis den opstår.

Permanente fejl

Permanente fejl er fejl, der opstår, når Flow ikke kan fuldføre en opgave, og opgaven ikke kan forsøges igen. Hvis Flow f.eks. ikke kan sende en mail, fordi mailadressen er ugyldig, prøves opgaven ikke igen. I stedet er workflowet mislykkedes.

Felter: Id er påkrævet, men er tomt

De fleste Shopify-handlinger kræver én eller flere ressourcer (som f.eks. produkt, kunde eller ordre) for at kunne køre. Nogle gange er ressourcen ikke tilgængelig. Det betyder, at handlingen ikke kan køre som forventet. Det er f.eks. muligt at oprette en ordre i administratoren, som ikke har en kunde. Hvis du prøver at køre en handling, som f.eks. Tilføj kundetags, vil handlingen mislykkes med denne fejl.

Du kan forhindre, at der opstår fejl, ved at tilføje en Betingelse inden handlingen, for at kontrollere om ressourcen findes. Lad os tage forrige eksempel: Hvis du vil sende en intern mail i samme workflow som Tilføj kundetags, kan du enten placere handlingen inden trinnet, hvor der kan opstå fejl, eller gøre et af følgende.

Placer handlingerne i to parallelle grene (hvor to eller flere grene kommer ud af et trin)

Eksempel, der viser to handlinger parallelt

Tilføj en betingelse før handlingen, for at kontrollere om kunden er til stede. Du kan f.eks. kontrollere, om order / customer / id is not empty and exists.

Eksempel, der viser en betingelse, som mangler et id

Flow har ikke adgang til din Google Sheets-konto. Tilknyt din konto igen.

Google Sheets-connectoren kræver, at du knytter din Google-konto til Flow, så du har tilladelse til at skrive til regnearket. Denne fejl kan forekomme, når Flow ikke har tilladelse til at skrive til et regneark, enten fordi tilknytningen af kontoen til Flow er fjernet, eller fordi denne konto ikke har adgang til det pågældende regneark.

Du kan løse dette ved at sikre dig, at den konto, der bruges til connectoren, kan åbne regnearket og har redigeringsadgang. Hvis der er tilknyttet en forkert konto, kan du frakoble den og tilknytte en ny.

Trin:
  1. Åbn eller opret et nyt workflow.
  2. Tilføj en handling.
  3. Vælg Google Sheets-connectoren.
  4. Klik på Afbryd forbindelse, og klik derefter på Tilknyt.

Flow-handling modtaget med ugyldige egenskaber. Kunden accepterer ikke markedsføring.

Handlingen Send markedsføringsmail sender ikke mails til kunder, som ikke har accepteret at modtage dem, og mislykkes permanent, hvis workflowet forsøger at gøre det.

Du kan løse dette ved at tilføje en betingelse i workflowet, der kontrollerer kundens abonnementsstatus. Du kan sikre, at kunderne har accepteret at modtage markedsførings-e-mails, før de sender dem. Følg trinnene i Administration af mailabonnementslister.

Manglende ressource for [ressourcetype]

Denne fejl angiver, at en ressource, som customer eller order, blev slettet, før workflowet kunne hente sine data. Dette sker som oftest efter et ventetrin, men det er muligt, at dette også sker på udløseren, hvis ressourcen slettes meget hurtigt, efter forekomsten af udløserhændelsen.

Få en besked, når der opstår en fejl

Hvis fejl vil påvirke driften af din butik, kan du opsætte notifikationer, når der opstår en fejl. Der kan oprettes fejlmeddelelser, som ved alle andre workflows, ved brug af udløseren til workflowfejl . Fejlnotifikationer er designet til at begrænse antallet af meddelelser, så du kun får én meddelelse pr. workflow-version.

Du kan bruge en af følgende skabeloner til at komme i gang:

Sådan forsøger du kørsler igen

I nogle tilfælde kan en workflowkørsel opleve en fejl eller ikke køre som forventet. Når du har udført fejlfinding og rettet problemer med det relaterede workflow, kan du forsøge tidligere kørsler igen manuelt for at rette resultaterne for tidligere kørsler med tilbagevirkende kraft. Få mere at vide om at forsøge workflowkørsler igen.

Kørsel (begrænset frekvens)

I nogle tilfælde kan et eller flere workflows bruge for mange ressourcer. For at forhindre at dette skaber problemer, begrænser Flow udførelsen af kørsler i din butik, hvilket kan medføre forsinkelser og timeoutfejl. Dette kan løses ved at omskrive ineffektive workflows, f.eks. for at udrette en fejl hvor det ikke fungerede efter hensigten.

Kører for længe

Denne besked angiver, at det tager meget lang tid at udføre kørsler af et workflow. Dette skyldes almindeligvis, at der bruges en stor mængde data i et workflow, som Flow derfor bruger lang tid på at hente.

Eksempel

Disse tilfælde skyldes almindeligvis, at omfattende anmodningsstier gennemgår flere lister med varer (f.eks. anmodning om alle metafelter for alle produkter i alle kollektioner, som et produkt er en del af):

long running workflow example
Dette hænger ofte også sammen med timeout af udløsertrinnet i et workflow.

Workflows, der looper gennem alle metafelter, kan ofte forbedres ved kun at bruge et specifikt metafelt. Flere indlejrede lister (f.eks. alle produkter i alle kollektioner for et produkt) eller særligt store lister (f.eks. metafeltdefinitioner, som indeholder alle metafelter for alle objekter) kan være blevet tilgået utilsigtet, og effektiviteten kan forbedres betydeligt ved at vælge det rigtige felt (det enkelte produkt eller et enkelt metafelt for et objekt). I andre tilfælde kan handlingen "Hent produkt-/ordre-/kundedata" med et forespørgselsfilter reducere antallet af objekter, der bruges, men stadig tilgå de relevante objekter.

Behandler for mange data

Denne besked angiver, at kørsler for et workflow genererer en stor mængde data. Dette skyldes almindeligvis, at der er komplekse betingelser, der markerer mange felter. Dette skyldes som regel, at der markeres kontrolfelter på flere lag lister.

Eksempel

En betingelse som f.eks. "For mindst ét tag på denne kunde, for mindst én varelinjeordre for mindst ét tag på varelinjen" kan det medføre, at der udføres mange kontroller, og der genereres en masse data, som viser resultaterne af disse kontroller:

too much data workflow example

Fejl ved automatiske gentagne forsøg

Denne besked angiver, at kørsler af et workflow gentagne gange mislykkes på grund af et midlertidigt problem, og at kørslerne oftest ikke lykkedes ved efterfølgende forsøg. Dette sker ofte, når enten Shopifys Admin API eller en partnerapp oplever et stort antal anmodninger.

Kan du ikke finde de svar, du leder efter? Vi er her for at hjælpe.