← Tillbaka till bloggen
Svenska

Languages

Artikel

Graf-frågor i realtid i portalen

I Hantera_ är streaming queries levande graf-frågor som uppdateras i realtid via websocket, så utvecklare slipper skriva om frågor eller bygga egen logik för händelseavstämning.

Graf-frågor i realtid i portalen

Efter det som måste ha varit plattformens mest ambitiösa och utdragna utvecklingsarbete hittills levererar 2026.3 äntligen hela MVP:n för live queries.

När grafen först utformades fanns redan idén om att algoritmiskt upptäcka ändringar i ett grafresultat. Det visade sig vara betydligt mer komplicerat än det först verkade.

Problemet med klassiska API:er

Många plattformar stöder händelser och Hantera_ är inget undantag. Men händelser är enkla, och det har en baksida. När du vant dig vid en datagraf känns per-entitetsströmmar av händelser som att försöka förstå systemets tillstånd med ett verktyg som inte längre räcker till.

I en grafmodell består tillståndet av noder och deras relationer. Kombinationen beror på frågan du vill ställa. Ett REST-API kan ge sin bild av en order och kanske en händelse när något ändras. Men hur frågar du efter ”alla order vars kund har ett öppet supportärende”? I ett traditionellt API är du beroende av att någon förutsåg frågan. Med händelser måste du själv lyssna på order-, kund- och ärendehändelser och stämma av allt. Det är felbenäget och dyrt.

Gå live

I Hantera_ modellerar du först frågan som en graftraversering:

const spec = {
  edge: 'orders',
  orderBy: 'createdAt desc',
  node: {
    fields: ['orderNumber', 'orderState'],
    navigate: [{
      edge: 'customer',
      require: 'some',
      node: {
        fields: ['customerNumber', 'name'],
        navigate: [{
          edge: 'supportTickets',
          require: 'some',
          filter: "ticketState == 'open'",
          node: { fields: ['ticketNumber', 'ticketState'] },
        }],
      },
    }],
  },
}

De två require: 'some' gör jobbet: returnera bara en order om kunden har minst ett öppet supportärende. För att hämta detta en gång skickar du spec till Portal Graph API:

const { graph } = useBackendApi()

const orders = await graph.queryGraph<Order>(spec)

För en uppdaterad vy skickar du samma spec till Portalens Live Query API:

const { query } = useLiveQueries()

const { nodes: orders, loading } = query<Order>(spec)

Specifikationen är samma objekt. Du skriver inte om frågan, lägger inte till en endpoint och sätter inte upp egen händelseavstämning. Du lämnar samma fråga till en funktion som håller svaret aktuellt.

Under huven

Portalens SDK döljer en del komplexitet. Det mesta görs i back-end, men ändringar strömmas till klienter via websocket och sorteras på klientsidan. Läs protokollspecifikationen i utvecklarportalen om du vill fördjupa dig eller bygga en egen klient.


Hantera_ sammanför allt efter köpknappen — order, leverans, returer och service — på en plattform. Se priser →