External Task Pattern#

”Ulkoisen tehtävän malli” eli External Task Pattern on Camundan nykyisin suosima malli liiketoimintaprosesseja automatisoivien suoritettavien BPMN-mallien integroimiseksi muihin järjestelmiin.

../_images/external-task-pattern.svg

external-task-pattern.bpmn#

Vaihtoehtoisia integrointimalleja#

Järjestelmäesimerkki

Integraatiomalli

Yksittäinen sovellus, jossa oma sisäinen prosessimoottori vain sovelluksen omiin tarpeisiin.

Ei integraatioita

Liiketoimintaprosessien hallintajärjestelmä, jossa sisäärakennettu ”low code”-integraatiototeutus ulkoisten palveluiden kutsumiseksi.

Ennaltamäärätyt integraatiot

Samalla ohjelmointikielellä laajennettava prosessimoottori omaan ratkaisuun sulautettavana kirjastona tai itsenäisenä ulkoisena sovelluksena.

Vapaat sisäiset integraatiot

Itsenäinen prosessimoottori, joka tarjoaa riittävät rajapinnat erillään ajettaville sovellukset noutaa integroivat tehtävät, suorittaa ne ja raportoida tulokset takaisin.

Vapaat ulkoiset integraatiot

Sisäiset integraatiot#

Prosessimoottori sisältää tai siihen on kehitetty itse kaikkien integraatiomahdollisuuksien toteutukset ja suorittaa kutsut ulkoisiin palveluihin.

../_images/internal-tasks.svg

Camunda 7 (embedded)#

Camunda 7 on tarjonnut perinteisesti sekä oman Connector-kehyksen että kaikki Java-ekosysteemin mahdollisuudet toteuttaa kaikki tarvittavat integraatiot suoraan prosessimoottorin sovellukseen.

  • Java Connector (framework)

  • Java Class (delegate)

  • Java ScriptEngine (framework)

Camunda 7 Connector#

../_images/modeler-connector-task.png

Ulkoiset integraatiot#

Prosessimoottori tarjoaa rajapinnan (API), jota ulkoiset sovellukset voivat kutsua ja siten integroitua niille tehtäviä kulloinkin tarjoaviin prosesseihin.

../_images/external-tasks.svg

Camunda 7 (platform)#

Camunda 7 on tarjonnut pitkään HTTP REST API -rajapinnan integraatiotehtävien tilaamiseksi, suorittamiseksi ja kuittaamiseksi.

  • External Service Task

  • HTTP REST API

  • HTTP long poll

  • yhteyskirjastoja eri kielille

Camunda 7 External Task#

../_images/modeler-external-task.png

Camunda 8#

Camunda 8 prosessimoottorin rajapintoja kuuntelevat ja kutsuvat ulkoiset sovellukset ovat ensisijainen ja ehkä ainoa tapa integroitua sillä ajettaviin prosesseihin.

  • HTTP REST API

  • gRPC API

  • Connector Framework (external)

Integraatiomallien vertailua#

Sisäinen integraatiomalli voi olla arkkitehtuuriltaan yksinkertainen, mutta myös jäykkä. Ulkoinen integraatiomalli on yleensä hyvin joustava, mutta voi johtaa monimutkaisempaan arkkitehtuuriin.

Sisäiset integraatiot

Ulkoiset integraatiot

Toteutus prosessimoottorissa.

Toteutus ulkoisissa- tai integraatiosovelluksissa.

Prosessimoottorin ohjelmointikieli.

Tarpeenmukainen ohjelmointikieli tai muu toteutustapa.

Prosessimoottorin elinkaari.

Itsenäiset palvelu- ja integraatiokohtaiset elinkaaret.

Monoliittinen arkkitehtuuri.

Mikropalvelu- tai pilviarkkitehtuuri.

Camunda 7 External Task#

../_images/external-task-pattern-variants.svg

external-task-pattern-variants.bpmn#

External Task Topic#

Camundan External Topic / Task type (Camunda 8) on vain ja ainoastaan uniikki merkkijono, joka yksilöi tehtävän edellyttämän integraation.

../_images/modeler-topic.png

Esimerkiksi

  • sisu.studyrights.get

  • sisu:studyrights:get

  • getSisuStudyRights

  • get sisu studyrights

Input / Output Mapping#

Yhteisten integraation syötteiden ja paluuarvojen prosessikohtainen tulkinta.

../_images/modeler-input.png ../_images/modeler-output.png

Rinnakkaiset tehtävät#

Tehtäväkohtainen Input / Output Mapping mahdollistaa rinnakkaiset tehtävät turvallisesti.

../_images/external-task-pattern-parallel.svg

external-task-pattern-parallel.bpmn#

Virheenkäsittely#

Ulkoinen tehtävä voi onnistumisen vaihtoehtona

  1. ajastaa uudelleenyrityksen

  2. nostaa incidentin tai

  3. nostaa BPMN-virheen.

../_images/external-task-pattern-error.svg

external-task-pattern-error.bpmn#

Visualisoitu uudelleenyritys#

Erityyppiset BPMN-virheet voidaan erotella, ja esimerkiksi uudelleenyritys voidaan siten mallintaa uutena tehtävänä.

../_images/external-task-pattern-retry.svg

external-task-pattern-retry.bpmn#

BPMN-virheen tulkinta tuloksesta#

Ulkoinen tehtävä voi onnistumisen vaihtoehtona

../_images/modeler-error.png

Ulkoiset integraatiomallit#

Yksinkertaiset mikropalvelut#

Yksinkertaisimmillaan prosessimoottorista tehtäviä kysyvät palvelut voivat suorittaa tehtävät kokonaan itse.

../_images/external-tasks.svg

Integroivat mikropalvelut#

Yleisimmässä mallissa tehtäviä kysyvät palvelut toimivat välittäjinä prosessimoottorin ja varsinaisen integroitavan palvelun välillä.

../_images/external-tasks-delegate.svg

Connector Runtime#

Runtime-malli voi nopeuttaa uusien integraatioiden toteuttamista ja vähentää jatkuvasti tarvittavia ajoresursseja erityisesti harvakseltaan tarvittavien integrointien osalta.

../_images/external-tasks-runtime.svg

Esimerkki: Carrot-RCC#

Carrot-RCC on Camnda External Task runtime, joka delegoi tehtävien suorittamisen RCC toolchainilla ajettaville automaatiotehtäväpaketeille.

sequenceDiagram participant Camunda participant Carrot RCC participant Robocorp RCC participant Robot Participant Work item Carrot RCC->>Camunda: Fetch and lock loop Camunda->>+Carrot RCC: Task par Carrot RCC->>+Robocorp RCC: Unpack robot Robocorp RCC-->>-Carrot RCC: [exit code] Carrot RCC->>+Work item: Create work item Carrot RCC->>+Robocorp RCC: Run robot Note over Robocorp RCC: Setup environment Robocorp RCC->>+Robot: Run robot Robot->>Work item: Load work item Work item-->>Robot: [work item] Note over Robot: Automation Robot->>Work item: Save work item Robot-->>-Robocorp RCC: [exit code] Note over Robocorp RCC: Teardown environment Robocorp RCC-->>-Carrot RCC: [exit code] and loop Carrot RCC-->>Camunda: Extend lock end end Carrot RCC->>Work item: Load work item Work item-->>-Carrot RCC: [work item] Carrot RCC-->>Camunda: Update variables alt Carrot RCC-->>Camunda: Complete task else Carrot RCC-->>-Camunda: Handle failure end end

Yhteenveto#

”Camundan ulkoisen tehtävän malli mahdollistaa prosessien hajautetun suorittamisen ja eri palveluiden integraation saumattomasti, mikä tekee järjestelmästä joustavan ja tehokkaan.” – ChatGPT