Iterativa Macron

Iterativa Macron

Detta inlägg handlar om iterativa macron. Med iterativa menar vi att vi kör dem om och om igen till dess att något kriterium uppnåtts. I detta fall handlar det om att kolla statusen på ett jobb i ett api men denna teknik fungerar också utmärkt när det gäller paginering liknande den du till exempel hittar i Spotifys api.

Har mitt jobb gått klart?

Här ska vi titta på hur det går med exekveringen av vårt jobb i appNexus. Tyvärr ligger den dokumentationen bakom en inloggning så jag kan inte dela med mig av detaljerna men kort sammanfattat så tar man ut rapporter ur deras plattform om hur annonsvisningar och bidding har utfallit. När man ber om en rapport så tar den en stund att leverera och då vill de att man ställer en specifik fråga om rapportstatusen. Det är denna fråga som jag itererar till dess att statusen är ”ready”. Så här ser hela flödet ut och jag tänkte att vi går igenom de olika aspekterna av det:

iterativt macro
appNexus rapport status

Komponenter

Det är några komponenter som alltid måste finnas med i ett iterativt macro:

  • Det måste ha en input + en output + en iteration ouput
  • Test-villkor
  • återmatning av data
  • förändring av något värde

Vi tittar på de olika komponenterna i vårt exempel macro.

Input

Detta är vår input:

iterative input

Här skickar vi in vårt rapportid och vår sessionsnyckel som vi vill fråga status på. Det är också detta som vi åter-matar senare i flödet efter vårt test-uttryck.

Dessa är våra outputs:

outputs

Den ena skickar ut rapporten som är färdig för hämtning och den andra återmatar rapportid och sessionsnyckel för en ny statusfråga.

 Testvillkor

test-villkor
Filter på ”ready”

I detta fall så kollar vi om vi har statusen ”ready” i vårt JSON-svar från API’et och om vi har det så skickar vi vidare vårt rapportid till nästa del i flödet som exekverar hämtningen av rapporten. Om vi inte har ”ready” skickar vi ut raden på ”False” och därmed itererar körningen (jag har en väntetid på 3 sekunder mellan iterationerna också).

Återmatning av data

Data från vår test slår jag ihop med raden från macro input (i detta fall, det kan se olika ut från fall till fall) och matar på vår iterative output. Vilken output som är iterative ställer du in i det som kallas ”interface designer” som du kommer åt via View-menyn.

interface_designer
Interface designer Properties

För enkelhetens skull brukar jag döpa min iteration output till just ”iteration output”. När man väl använder macrot behöver man inte koppla denna output till något.

Förändring av något värde

I just detta fall så är det värde som förändras det värdet som vi får från api’et och då är det enkelt. Säg att du istället vill implementera en paginering som börjar på 0 och ökar med 50, då får du inleda med värdet -50 och i en formula göra formeln:

[init value] + 50

Så första gången macrot körs så hämtas offset 0 vid första iterationen hämtas offset 50 till dess att det inte finns någon next.

Svårare än så här behöver det inte vara, lycka till med att bygga ditt första iterativa Macro.

Mvh//Leif Engdell
Produktspecialist

 

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *