Arutan sageli mikroteenuste arhitektuuri üle mitte-Java inimestega: C# arendajad, Node.JS/JavaScripti arendajad või Golangi austajad. Kõik nad seisavad silmitsi tõsiasjaga, et neil on vaja mikroteenuse arhitektuuris orkestreerimismehhanismi või lihtsalt tööriista töövoo sujuvamaks muutmiseks ja võimaluse hankimiseks tellida, käsitleda ajalõppe, saaga ja kompenseerivaid tehinguid.
BPM platvorm koos avatud lähtekoodiga Camundast suurepärane selliste ülesannete jaoks. Arendajasõbralikkus on toote üks põhiomadusi. Kuid kui vaadata selle dokumentatsiooni, võib jääda mulje, et Camunda "sõbralikkus" on suunatud peamiselt Java arendajatele. Platvorm pakub palju võimalusi oma funktsioonide ja laienduste ühendamiseks, kuid see kõik on tehtud Javas. Kas tõesti?
Ei! Tegelikult on Camundat lihtne käivitada ilma Java-teadmisteta ja seadistada koodiarhitektuur mis tahes teie valitud keeles. Selles artiklis vaatleme:
põhiarhitektuur;
REST API
nõustamine olemasolevate klienditeekide kohta muudes keeltes peale Java;
näiteks kasutades C# ja Node.JS;
Camunda serveri käivitamise viisid (Docker või Tomcat).
arhitektuur
Camunda on kirjutatud Java keeles ja vajab käitamiseks Java virtuaalmasinat (JVM). Camunda pakub REST API-t, mis võimaldab teil kirjutada mis tahes teile meeldivas keeles ja kasutada koos Camundaga REST-i:
Camunda töövood on määratletud BPMN-is, mis on põhimõtteliselt XML-fail. Seda saab modelleerida Camunda modelleerija.
Camunda käivitamine eelehitatud Dockeri pildi kaudu
Lihtsaim viis Camunda käivitamiseks on kasutada Dockerit. Alternatiivseid viise Camunda käivitamiseks kirjeldatakse käesolevas artiklis hiljem.
Sel juhul käivitage lihtsalt:
docker run -d -p 8080:8080 camunda/camunda-bpm-platform:latest
Te ei pea muretsema Linuxi, JVM-ide ega Tomcatside pärast. Dockeri failid ja põhidokumentatsioon (näiteks juhised vajalike andmebaasidega ühenduse loomiseks) on saadaval aadressil Github.
Kui soovite käivitada Camunda Enterprise Editioni, saate seda hõlpsalt muuta dockerfile.
Camunda käitamisel Dockeriga on aga üks negatiivne külg: saate lõpuks Tomcati versiooni, mis ei sisalda alati uusimaid parandusi. Selle probleemi lahendamiseks saate soovitud Tomcati jaotuse põhjal luua oma Dockeri pildi, nagu on näidatud selles näites, või kasutada ühte allpool kirjeldatud lahendustest.
Protsessimudeli juurutamine
Vaatame näidet Saga malli kasutamisest klassikalise reisibroneeringu jaoks, kus soovite käivitada kolm toimingut järjest ja kompenseerida hilisema ebaõnnestumise korral edukalt sooritatud toiminguid. Esindatud BPMN-vormingus näeb see välja järgmine:
Nüüd saate kasutada REST API protsessimudeli juurutamiseks. Oletame, et salvestate selle nimega trip.bpmn ja käivitate Camunda Dockeri kaudu, et see oleks saadaval saidil localhost:8080:
Järgmine huvitav küsimus on: kuidas korraldab Camunda selliseid protseduure nagu auto broneerimine? Camunda ei saa mõnda sisseehitatud seadet kasutades mitte ainult kohe teenustele helistada (Push-Principle). pistikud, aga ka tööasjad omamoodi sisseehitatud järjekorda seadma. Seejärel saab töötaja REST-i kaudu tööesemeid tuua, töö ära teha ja käskida Camundal lõpetada (tõmbepõhimõte).
Nii et kõigepealt peate täitma too AndLock (kuna teised töötajad saavad süsteemi skaleerimiseks samal ajal ülesandeid vastu võtta):
See on kõik – sa pole ikka veel Java-d vajanud, eks? Ja sellest piisab alustamiseks!
Klientide raamatukogud
REST API kutsumine on lihtne mis tahes programmeerimiskeeles. JavaScriptis saab seda mugavalt teha JQuery abil ning C#-s System.Net.Http ja Newtonsoft.Json abil. Kuid see võtab aega. Nii et saate lihtsalt mõnda klienditeeki kasutada.
C #:link и link. Mõlemad projektid on vahepealses olekus ja praktiliselt seisavad, kuid võivad olla hea lähtepunkt;
PHP: link - mitte liiga täielik ja ei sisalda uusimaid API muudatusi, kuid tean projekte, mis seda kasutavad.
Klienditeegid ei kuulu Camunda toote enda hulka, välja arvatud JavaScript ja Java. Ärge oodake, et nad toetaksid kõiki Camunda REST API funktsioone. See, et teek ei paku teatud funktsiooni, ei tähenda, et seda seal pole, kontrollige alati Camunda REST API-t. Võrdlusprojektid kasutavad teeke lähtepunktina ja mallina.
C# näide
Kasutades ülaltoodud klienditeeki, saame lihtsalt kirjutada:
var camunda = new CamundaEngineClient("http://localhost:8080/engine-rest/engine/default/", null, null);
// Deploy the BPMN XML file from the resources
camunda.RepositoryService.Deploy("trip-booking", new List<object> {
FileParameter.FromManifestResource(Assembly.GetExecutingAssembly(), "FlowingTripBookingSaga.Models.FlowingTripBookingSaga.bpmn")
});
// Register workers
registerWorker("reserve-car", externalTask => {
// here you can do the real thing! Like a sysout :-)
Console.WriteLine("Reserving car now...");
camunda.ExternalTaskService.Complete(workerId, externalTask.Id);
});
registerWorker("cancel-car", externalTask => {
Console.WriteLine("Cancelling car now...");
camunda.ExternalTaskService.Complete(workerId, externalTask.Id);
});
registerWorker("book-hotel", externalTask => {
Console.WriteLine("Reserving hotel now...");
camunda.ExternalTaskService.Complete(workerId, externalTask.Id);
});
// Register more workers...
StartPolling();
string processInstanceId = camunda.BpmnWorkflowService.StartProcessInstance("FlowingTripBookingSaga", new Dictionary<string, object>()
{
{"someBookingData", "..." }
});
Täielikult töötava lähtekoodi leiate Internetist: link. Teine näide on saadaval aadressil link.
Kohandatud Dockeri pilt koos "Camunda standalone WARiga"
Alternatiivina Camundast valmis ehitatud Dockeri pildile saab Tomcati ise ette valmistada (näiteks ametlike Docker Tomcati piltide põhjal) ja seejärel Camunda sinna sisse kopeerida ühe nn WAR-failina.
Kui teil on palju lisanõudeid ja saate seadistada Java ehituskeskkonna, saate seadistada ka Camunda Standalone war. Seadistage Maveni järg nagu nendes näidetes: ehita Maven sõja konfiguratsiooniga või kokkupanek Maven koos ülekattega.
Camunda Tomcati levitamise käivitamine
Teine võimalus on lihtsalt alla laadida Camunda Tomcati distributsioon, see lahti pakkida ja käivitada. Selleks on vaja ainult teie arvutisse installitud Java Runtime Environment (JRE). See võib olla lihtne laadige alla siit.
Andmebaasi muutmiseks või millegi muuks tegemiseks peate Tomcati moodi konfigureerima dokumentatsioonis kirjeldatud. Ma tean, et Tomcat võib tunduda keeruline, kuid tegelikult on see väga lihtne. Ja Google teab vastuseid kõigele, mida protsessis vaja võib minna.
Camunda käivitamine Tomcati abil
Viimane võimalus on Tomcat ise seadistada ja Camunda sinna installida, järgides paigalduskirjeldust. See annab teile võimaluse kasutada soovitud Tomcati versiooni või installida see näiteks Windowsi teenusena.
Camunda tootmisse käivitamine
Tavaliselt nõuab see Camunda käitamiseks lõplikku seadistust. Camundas on juhiseid, mis kirjeldavad seda väga üksikasjalikult, kuid ma ei hakka neid selles artiklis käsitlema – toon vaid ühe näite: distributsiooni REST API ei ole vaikimisi autentimiseks seadistatud. Võib-olla soovite seda muuta.
Lõppkokkuvõte
Nagu näete, on Camundaga alustamine väga lihtne, olenemata kasutatavast keelest. Põhipunkt on see, et kogu suhtlus toimub REST API kaudu. Ka installimine on üsna lihtne, eriti Dockeri kasutamisel.