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.
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.
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#

Ulkoiset integraatiot#
Prosessimoottori tarjoaa rajapinnan (API), jota ulkoiset sovellukset voivat kutsua ja siten integroitua niille tehtäviä kulloinkin tarjoaviin prosesseihin.
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#

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#
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.

Esimerkiksi
sisu.studyrights.get
sisu:studyrights:get
getSisuStudyRights
get sisu studyrights
Input / Output Mapping#
Yhteisten integraation syötteiden ja paluuarvojen prosessikohtainen tulkinta.


Rinnakkaiset tehtävät#
Tehtäväkohtainen Input / Output Mapping mahdollistaa rinnakkaiset tehtävät turvallisesti.
Virheenkäsittely#
Ulkoinen tehtävä voi onnistumisen vaihtoehtona
ajastaa uudelleenyrityksen
nostaa incidentin tai
nostaa BPMN-virheen.
Visualisoitu uudelleenyritys#
Erityyppiset BPMN-virheet voidaan erotella, ja esimerkiksi uudelleenyritys voidaan siten mallintaa uutena tehtävänä.
BPMN-virheen tulkinta tuloksesta#
Ulkoinen tehtävä voi onnistumisen vaihtoehtona

Ulkoiset integraatiomallit#
Yksinkertaiset mikropalvelut#
Yksinkertaisimmillaan prosessimoottorista tehtäviä kysyvät palvelut voivat suorittaa tehtävät kokonaan itse.
Integroivat mikropalvelut#
Yleisimmässä mallissa tehtäviä kysyvät palvelut toimivat välittäjinä prosessimoottorin ja varsinaisen integroitavan palvelun välillä.
Connector Runtime#
Runtime-malli voi nopeuttaa uusien integraatioiden toteuttamista ja vähentää jatkuvasti tarvittavia ajoresursseja erityisesti harvakseltaan tarvittavien integrointien osalta.
Esimerkki: Carrot-RCC#
Carrot-RCC on Camnda External Task runtime, joka delegoi tehtävien suorittamisen RCC toolchainilla ajettaville automaatiotehtäväpaketeille.
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