Ez pir caran bi mirovên li derveyî Java re mîmariya mîkro-xizmetê nîqaş dikim: Pêşdebirên C#, pêşdebirên Node.JS/JavaScript, an hezkiriyên Golang. Hemî ew bi vê rastiyê re rû bi rû ne ku ew hewceyê mekanîzmayek orkestrasyonê di mîmariya mîkro-xizmetê de, an tenê amûrek ji bo rêkûpêkkirina xebata xebatê û bidestxistina kapasîteya fermankirinê, birêvebirina demajoyan, Saga û danûstendinên tezmînatê ne.
platforma BPM bi çavkaniya vekirî ji Camunda ji bo karên weha mezin e. Dostaniya pêşdebiran yek ji taybetmendiyên sereke yên hilberê ye. Lê heke hûn li belgeyên wê mêze bikin, dibe ku hûn têgihîştin ku "dostaniya" Camunda bi giranî ji pêşdebirên Java-yê re tê armanc kirin. Platform ji bo girêdana fonksiyon û pêvekên xwe gelek vebijarkan peyda dike, lê ew hemî di Java-yê de pêk tê. Ma ew bi rastî?
Na! Bi rastî, hûn dikarin bi hêsanî Camunda bêyî zanîna Java-yê bimeşînin û mîmariya kodê bi her zimanî bijartina xwe saz bikin. Di vê gotarê de, em ê binêrin:
mîmariya bingehîn;
REST API
şîret li ser pirtûkxaneyên xerîdar ên heyî yên ji bo zimanên ji bilî Java;
nimûne bikaranîna C# û Node.JS;
awayên destpêkirina servera Camunda (Docker an Tomcat).
avakarî
Camunda bi Java-yê hatiye nivîsandin û ji bo xebitandinê pêdivî bi Makîneyek Virtual a Java (JVM) heye. Camunda REST API peyda dike ku dihêle hûn bi her zimanî ku hûn dixwazin binivîsin û REST bi Camunda re bikar bînin:
Karûbarên li Camunda di BPMN de, ku bi bingehîn pelek XML-ê ye, têne destnîşan kirin. Ew dikare bi modela Camunda Modeler.
Camunda bi navgîniya wêneyek Docker-a-pêş-avakirî ve dimeşîne
Rêya herî hêsan a meşandina Camunda karanîna Docker e. Rêbazên alternatîf ên destpêkirina Camunda paşê di vê gotarê de têne vegotin.
Di vê rewşê de, bi tenê rêve bikin:
docker run -d -p 8080:8080 camunda/camunda-bpm-platform:latest
Hûn ne hewce ne ku ji Linux, JVM an Tomcats xemgîn bibin. Dockerfiles û belgeyên bingehîn (mînak, rêwerzên ji bo girêdana bi databasên pêwîst) li wir hene Github.
Heke hûn dixwazin Weşana Camunda Enterprise bimeşînin, hûn dikarin bi hêsanî biguherînin dockerfile.
Lêbelê, xebitandina Camunda bi Docker re yek xeletiyek heye: hûn ê bi guhertoyek Tomcat-ê ku her gav rastkirinên herî paşîn vedihewîne biqede. Ji bo ku hûn li dora vê yekê bixebitin, hûn dikarin wêneya xweya Docker-ê li ser bingeha belavkirina Tomcat-a xwestî biafirînin, wekî ku di vê nimûneyê de tê xuyang kirin, an jî yek ji çareseriyên ku li jêr têne destnîşan kirin bikar bînin.
Daxistina Modela Pêvajoyê
Ka em li mînakek bi karanîna şablona Saga-yê ji bo veqetandina rêwîtiyek klasîk a ku hûn dixwazin sê çalakiyan li pey hev bişopînin û di bûyera têkçûnek paşîn de çalakiyên bi serfirazî yên ku hatine qedandin bi dilovanî telafî bikin. Di forma BPMN de tê temsîl kirin, bi vî rengî xuya dike:
Niha hûn dikarin bikar bînin REST API ji bo bicîhkirina modela pêvajoyê. Ka em bibêjin hûn wê wekî trip.bpmn hilînin û Camunda bi rêya Docker-ê dimeşînin ji ber vê yekê ew li ser localhost heye:8080:
Pirsa balkêş a din ev e: Camunda çawa prosedurên mîna veqetandina gerîdeyê bang dike? Camunda ne tenê dikare yekser gazî karûbaran bike (Push-Principle) bi karanîna hin çêkirî connectors, lê di heman demê de tiştên xebatê jî bi rengek çêkirî bi cîh bikin. Dûv re xebatkar dikare bi REST-ê re tiştên xebatê bîne, xebatê pêk bîne, û ji Camunda re bêje ku temam bike (Prensîp-Pirnsîp).
Ji ber vê yekê pêşî hûn hewce ne ku bicîh bikin fetchAndLock (ji ber ku karkerên din dikarin di heman demê de peywiran bistînin da ku pergalê mezin bikin):
Paşê ji Camunda re bêje karker karê xwe qedand (hişyar bikin ku divê hûn nasnameya karê derveyî ya ku di daxwaznameya yekem de hatî wergirtin têkevin):
Ew e - we hîn jî hewcedariya Java-yê nekiriye, rast? Û ji bo destpêkirinê bes e!
Pirtûkxaneyên Client
Banga REST API di her zimanê bernamekirinê de hêsan e. Di JavaScript de, ev bi hêsanî bi karanîna JQuery, û di C# de, bi System.Net.Http û Newtonsoft.Json ve tête kirin. Lê ev dê dem bigire. Ji ber vê yekê hûn dikarin tenê pirtûkxaneya xerîdar bikar bînin.
Heya nuha, çend pirtûkxaneyên xerîdar ên amade hene:
C #:pirtûk и pirtûk. Ev her du proje di rewşek navîn de ne û di pratîkê de razayî ne, lê dikarin wekî destpêkek baş bin;
PHP: pirtûk - ne pir bêkêmasî ye û guheztinên herî dawî yên API-yê nagire, lê ez projeyên ku wê bikar tînin nas dikim.
Ji bilî JavaScript û Java, pirtûkxaneyên xerîdar ne beşek ji hilberê Camunda bixwe ne. Li bendê nebin ku ew piştgirî bidin hemî taybetmendiyên REST API-ya Camunda. Tenê ji ber ku pirtûkxaneyek fonksiyonek diyar peyda nake, nayê vê wateyê ku ew ne li wir e, her gav API-ya REST ya Camunda kontrol bikin. Projeyên referansê pirtûkxaneyan wekî destpêk û şablon bikar tînin.
Mînak C#
Bi karanîna pirtûkxaneya xerîdar a jorîn, em dikarin bi hêsanî binivîsin:
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", "..." }
});
Koda çavkaniyê ya bi tevahî xebitîn dikare li serhêl were dîtin: pirtûk. Mînakek din li vir heye pirtûk.
Agahiyên bêtir li ser malperê têne dîtin github.com
Rêbazên Alternatîf ên Destpêkirina Camunda
Wêneyê Dockerê Xweser bi "Camunda standalone WAR"
Wekî alternatîfek ji wêneyek Docker-a pêş-avakirî ya ji Camunda, hûn dikarin Tomcat bi xwe amade bikin (mînak, li ser bingeha wêneyên fermî yên Docker Tomcat) û dûv re jî Camunda wekî yek ji wan pelên WAR-ê di nav wê de kopî bikin.
Ger we gelek hewcedariyên we hene û hûn dikarin hawîrdorek avahiyek Java saz bikin, hûn dikarin şerê Camunda Standalone jî saz bikin. Avakirinek Maven mîna van mînakan saz bikin: ava bikin Maven bi veavakirina şer an meclîsê Maven bi Overlay.
Destpêkirina belavkirina Camunda Tomcat
Vebijarkek din ev e ku meriv bi tenê belavkirina Camunda Tomcat dakêşîne, jê veke, û bimeşîne. Ev tenê pêdivî ye ku Java Runtime Environment (JRE) li ser komputera we hatî saz kirin. Ew dikare bi hêsanî be ji vir dakêşin.
Ji bo ku hûn databasê biguhezînin an tiştek din bikin, hûn hewce ne ku Tomcat mîna mîheng bikin di belgeyê de diyar kirin. Ez dizanim Tomcat dibe ku tevlihev xuya bike, lê bi rastî ew pir hêsan e. Û Google bersivên her tiştê ku dibe ku di pêvajoyê de hewce bike dizane.
Bi karanîna Tomcatê Camunda dimeşîne
Alternatîfa paşîn ev e ku hûn Tomcat bi xwe saz bikin û Camunda tê de saz bikin, li pey danasîna sazkirinê. Ev ê ji we re vebijarkê bide ku hûn guhertoya Tomcat-ê ku hûn tercîh dikin bikar bînin, an jî wek mînak wekî karûbarek Windows-ê saz bikin.
Destpêkirina Camunda di hilberînê de
Ev ê bi gelemperî hin sazûmanên paşîn hewce dike ku Camunda bimeşîne. Di Camunda de rêwerz hene ku vê yekê bi hûrgulî rave dikin, lê ez ê di vê gotarê de neçim nav wan - ez ê tenê mînakek nav bikim: REST API-ya belavkirinê ji hêla xwerû ve ji bo erêkirinê nehatiye mîheng kirin. Dibe ku hûn bixwazin vê biguherînin.
Hilberîn
Wekî ku hûn dikarin bibînin, pir hêsan e ku meriv bi Camunda re dest pê bike, bêyî ku zimanê ku hûn bikar tînin. Xala sereke ev e ku hemî têkilî bi navgîniya REST API ve tê kirin. Sazkirin jî pir hêsan e, nemaze dema ku Docker bikar bînin.