> ## Documentation Index
> Fetch the complete documentation index at: https://www.twicecommerce.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Työnkulut

> Automatisoi liiketoimintaprosesseja työnkulkuputkilla, joissa on suodattimia, viiveitä ja toimintoja

Työnkuluilla automatisoit toistuvia liiketoimintaprosesseja ketjuttamalla suodattimia, viiveitä ja toimintoja putkeksi. Työnkulku ajetaan hyötykuormaa vasten — esimerkiksi tilausta — ja se suorittaa vaiheensa järjestyksessä.

<Info>
  Näkymä voi näyttää erilaiselta käyttäjäroolista riippuen. <br />Lisätiedot löytyvät kohdasta Näkyvyys ja käyttöoikeudet.
</Info>

## Ensisijainen käyttötarkoitus

Työnkulut poistavat käsityötä reagoimalla järjestelmäsi tapahtumiin ja suorittamalla toimintoja puolestasi.

<AccordionGroup>
  <Accordion title="Luo automaatiosääntöjä">
    Rakenna työnkulkuja, jotka laukeavat tiettyjen tapahtumien sattuessa — tilaus päättyy, tuote palautetaan tai status muuttuu.
  </Accordion>

  <Accordion title="Suodata ja viivytä">
    Lisää suodattimia rajaamaan, mitkä tapahtumat kelpaavat, ja viiveitä ajoituksen hallintaan. Voit esimerkiksi odottaa kaksi tuntia tilauksen päättymisen jälkeen ennen palautekyselyn lähettämistä.
  </Accordion>

  <Accordion title="Määritä toiminnot">
    Valitse, mitä putken lopussa tapahtuu: lähetä sähköposti mukautetulla aiheella ja sisällöllä tai lähetä HTTP-pyyntö ulkoiseen järjestelmään. Lisätiedot löytyvät toimintotyyppejä käsittelevästä osiosta.
  </Accordion>

  <Accordion title="Seuraa suorituksia">
    Tarkastele työnkulkujen ajohistoriaa, tarkista onnistumis- ja epäonnistumismäärät ja selvitä ongelmia, kun jokin vaihe ei valmistu.
  </Accordion>
</AccordionGroup>

## Työnkulkuputki

Työnkulku on putki, jossa on kolmenlaisia vaiheita. Ne suoritetaan järjestyksessä:

| Vaihe        | Tarkoitus                           | Esimerkki                             |
| ------------ | ----------------------------------- | ------------------------------------- |
| **Suodatin** | Rajaa, mitkä hyötykuormat kelpaavat | Vain yli 100 euron tilaukset          |
| **Viive**    | Keskeyttää suorituksen määräajaksi  | Odota 2 tuntia                        |
| **Toiminto** | Suoritettava operaatio              | Lähetä ”Feedback Request” -sähköposti |

Suodattimet ja viiveet ovat valinnaisia. Pienin mahdollinen työnkulku tarvitsee vain toiminnon.

<Note>
  Työnkulut käynnistetään tällä hetkellä **API:n kautta**: työnkululle luodaan työ, jolla on hyötykuorma (esimerkiksi Order-objekti), ja putki ajetaan tätä hyötykuormaa vasten. Hallintapaneelissa on Työnkulut-kohta, mutta se näyttää paikanvaraajan merkinnällä ”Coming soon” — tapahtumakäynnistimet ja visuaalinen rakennustyökalu eivät ole vielä käytettävissä, eikä niille ole sovittua julkaisupäivää.
</Note>

## Esimerkki

Työnkulku, joka lähettää palautekyselysähköpostin kaksi tuntia sen jälkeen, kun se on käynnistetty tilaushyötykuormalla:

<CodeGroup>
  ```json Työnkulun määritys theme={null}
  {
    "name": "Post-Order Feedback",
    "steps": [
      {
        "type": "delay",
        "duration": "2h"
      },
      {
        "type": "action",
        "action": "send_email",
        "template": "feedback_request"
      }
    ]
  }
  ```
</CodeGroup>

## Virheiden käsittely

### Uudelleenyritykset

Kun työnkulun työ epäonnistuu palvelinvirheeseen (5xx) tai verkkovirheeseen, järjestelmä yrittää sitä uudelleen useita kertoja ennen kuin merkitsee työn pysyvästi epäonnistuneeksi. 4xx-alueen virhevastauksia pidetään pysyvinä eikä niitä yritetä uudelleen.

### Automaattinen poiskytkentä

Jos työnkulun 3 viimeisintä työtä epäonnistuvat kaikki, työnkulku poistetaan käytöstä automaattisesti. Käytöstä poistettu työnkulku lakkaa käsittelemästä uusia töitä, kunnes se otetaan uudelleen käyttöön.

Korjaa ensin epäonnistumisten perussyy ja pyydä sitten tukea ottamaan työnkulku uudelleen käyttöön — uudelleen käyttöönotto ei ole tällä hetkellä mahdollista hallintapaneelissa eikä julkisessa API:ssa.

<Note>Työnkulkujen uudelleenyritykset ovat eri asia kuin [webhookien toimitusten uudelleenyritykset](/docs/fi/concepts/integrations/webhooks). Nämä kaksi mekanismia toimivat toisistaan riippumatta.</Note>

## HTTP-pyyntötoiminnot

HTTP-pyyntötoiminnot lähettävät pyyntöjä ulkoisiin osoitteisiin työnkulun vaiheena. Ne tukevat menetelmiä `GET`, `POST`, `PUT` ja `DELETE`.

### Otsakkeet

Jokainen pyyntö sisältää kaksi järjestelmän hallinnoimaa otsaketta:

| Otsake            | Arvo               |
| ----------------- | ------------------ |
| `Content-Type`    | `application/json` |
| `X-Origin-System` | `TwiceCommerce`    |

Mukautettuja otsakkeita ei tueta. Kaikki toiminnolle määritetyt otsakkeet poistetaan ennen pyynnön lähettämistä.

### Virheiden käsittely

Oletuksena HTTP-pyyntötoiminto merkitsee työn epäonnistuneeksi, jos se saa 5xx-virhevastauksen tai kohtaa verkkovirheen, ja työ siirtyy edellä kuvattuun uudelleenyrityskiertoon. 4xx-vastaus merkitsee työn pysyvästi epäonnistuneeksi ilman uudelleenyrityksiä. Ota käyttöön **Continue on error**, jos haluat välittää virhevastauksen työnkulun seuraavaan vaiheeseen epäonnistumisen sijaan.

## Aiheeseen liittyvät käsitteet

<AccordionGroup>
  <Accordion title="Suodattimet">
    Suodattimet arvioivat ehtoja työn hyötykuormaa vasten ja pysäyttävät putken, jos ehdot eivät täyty.
  </Accordion>

  <Accordion title="Viiveet">
    Viiveet keskeyttävät suorituksen määritettäväksi ajaksi ennen seuraavaan vaiheeseen siirtymistä.
  </Accordion>

  <Accordion title="Toiminnot">
    Toiminnot ovat operaatioita, joita työnkulku suorittaa. Käytettävissä on muun muassa sähköpostien lähettäminen pohjista ja HTTP-pyyntöjen tekeminen ulkoisiin osoitteisiin. Otsakkeiden ja virheiden käsittelyn tiedot löytyvät HTTP-pyyntötoimintoja käsittelevästä osiosta.
  </Accordion>
</AccordionGroup>

## Toimintotyypit

### Sähköpostin lähetys

Lähettää sähköpostin mukautetulla aiheella ja sisällöllä. Molemmat kentät tukevat pohjamuuttujia (katso alempana oleva osio). Sisällön HTML-tagit poistetaan tietoturvasyistä. Sähköposti lähetetään TWICE Commercesta tilisi puolesta.

### HTTP-pyyntö

Lähettää HTTP-pyynnön ulkoiseen osoitteeseen. Käytä tätä kolmannen osapuolen järjestelmien ilmoituksiin, ulkoisten automaatioiden käynnistämiseen tai tilaustietojen viemiseen omaan taustajärjestelmääsi.

**Tuetut menetelmät:** `GET`, `POST`, `PUT`, `DELETE`. `GET`- ja `DELETE`-pyynnöissä ei lähetetä runkoa.

Jokainen lähtevä pyyntö sisältää kaksi automaattisesti lisättyä otsaketta:

| Otsake            | Arvo               |
| ----------------- | ------------------ |
| `Content-Type`    | `application/json` |
| `X-Origin-System` | `TwiceCommerce`    |

Mukautettuja otsakkeita ei voi määrittää.

Vain JSON-muotoiset pyyntörungot hyväksytään — runkopohjan on oltava kelvollista JSONia. Muita sisältötyyppejä ei tueta.

<CodeGroup>
  ```json Esimerkki runkopohjasta theme={null}
  {
    "event": "order_created",
    "order_id": "{{ $.id }}",
    "status": "{{ $.status }}",
    "channel": "{{ $.channel }}"
  }
  ```
</CodeGroup>

### Pohjamuuttujat

Molemmat toimintotyypit tukevat pohjamuuttujia tekstikentissään — sähköpostin aiheessa ja sisällössä, pyynnön osoitteen kyselyparametreissa ja pyynnön rungossa. Käytä syntaksia `{{ $.path }}`, jossa `$` edustaa työn hyötykuormaa.

Kun työnkulku käynnistetään Order-hyötykuormalla, pohjat ratkeavat kyseistä Order-objektia vasten. Sisäkkäisissä poluissa käytetään pistenotaatiota. Taulukon alkioissa käytetään hakasulkeita (`[0]`, `[1]`).

| Pohjamuuttuja               | Ratkeaa arvoksi                                                                           |
| --------------------------- | ----------------------------------------------------------------------------------------- |
| `{{ $.id }}`                | Tilauksen tunnus                                                                          |
| `{{ $.status }}`            | Tilauksen status                                                                          |
| `{{ $.reference }}`         | Tilausviite, joka on muotoiltu [tilausnumeroinnin](/docs/fi/settings/orders) asetustesi mukaan |
| `{{ $.number }}`            | Viitteen taustalla oleva numerosarjan raaka arvo, muotoilemattomana                       |
| `{{ $.lineItems[0].name }}` | Ensimmäisen rivitiedon nimi                                                               |

HTTP-pyyntöjen pohja-arvot koodataan automaattisesti sen mukaan, missä ne esiintyvät:

| Esiintymispaikka | Koodaus                                                   |
| ---------------- | --------------------------------------------------------- |
| Pyynnön runko    | JSON-suojattu (lainausmerkit, kenoviivat ja ohjausmerkit) |
| Kyselyparametrit | URL-koodattu                                              |

## Näkyvyys ja käyttöoikeudet

Työnkulkujen hallinta on tällä hetkellä vain API:n kautta. Työnkulkujen päätepisteet ovat kaikkien tilisi tunnistautuneiden käyttäjien käytettävissä. Työnkuluilla ei ole omia roolipohjaisia rajoituksia.
