Ke atisa ho buisana ka meralo ea microservice le batho bao e seng ba Java: Baetsi ba C #, Baetsi ba Node.JS/JavaScript, kapa Golang aficionados. Kaofela ha bona ba tobane le taba ea hore ba hloka mochini oa 'mino oa liletsa mohahong oa microservice, kapa sesebelisoa feela sa ho tsamaisa mosebetsi le ho fumana bokhoni ba ho odara, ho sebetsana le nako, Saga le ts'ebetso ea matšeliso.
Sethala sa BPM se nang le mohloli o bulehileng o tsoang ho Camunda e ntle bakeng sa mesebetsi e joalo. Botsoalle ba bahlahisi ke e 'ngoe ea likarolo tsa bohlokoa tsa sehlahisoa. Empa ha u sheba litokomane tsa eona, u ka fumana maikutlo a hore "botsoalle" ba Camunda bo lebisitsoe haholo ho baetsi ba Java. Sethala se fana ka menyetla e mengata ea ho hokahanya mesebetsi le li-extensions tsa hau, empa tsohle li etsoa Java. Ehlile ho joalo?
Che! Ebile, o ka tsamaisa Camunda habonolo ntle le tsebo ea Java mme o theha moralo oa khoutu ka puo efe kapa efe eo u e ratang. Sehloohong sena, re tla sheba:
meaho ea motheo;
REST API
likeletso ho lilaeborari tse teng tsa bareki bakeng sa lipuo tse ling ntle le Java;
mohlala ho sebelisa C # le Node.JS;
mekhoa ea ho qala seva sa Camunda (Docker kapa Tomcat).
mehaho
Camunda e ngotsoe ka Java mme e hloka Java Virtual Machine (JVM) hore e sebetse. Camunda e fana ka REST API e u lumellang ho ngola ka puo efe kapa efe eo u e ratang le ho sebelisa REST le Camunda:
Mosebetsi oa Camunda o hlalosoa ho BPMN, eo ha e le hantle e leng faele ea XML. E ka etsoa mohlala ka Camunda Modeler.
Ho matha Camunda ka setšoantšo sa Docker se hahiloeng pele
Mokhoa o bonolo oa ho tsamaisa Camunda ke ho sebelisa Docker. Mekhoa e meng ea ho qala Camunda e hlalositsoe hamorao sehloohong sena.
Tabeng ena, matha feela:
docker run -d -p 8080:8080 camunda/camunda-bpm-platform:latest
Ha ua tlameha ho tšoenyeha ka Linux, JVM kapa Tomcats. Dockerfiles le litokomane tsa mantlha (mohlala, litaelo tsa ho hokela litsing tse hlokahalang) li fumaneha ho Github.
Haeba u batla ho tsamaisa Camunda Enterprise Edition u ka fetoha habonolo dockerfile.
Leha ho le joalo, ho matha Camunda le Docker ho na le lehlakore le le leng: u tla qetella u e-na le mofuta oa Tomcat o sa kenyelletseng litokiso tsa morao-rao kamehla. Ho sebetsana le sena, o ka iketsetsa setšoantšo sa Docker ho latela phepelo e lakatsehang ea Tomcat, joalo ka ha ho bonts'itsoe mohlaleng ona, kapa sebelisa e 'ngoe ea litharollo tse hlalositsoeng ka tlase.
Phepelo ea Mohlala oa Ts'ebetso
Ha re shebeng mohlala ho sebelisa thempleite ea Saga bakeng sa buka ea maeto ea khale moo u batlang ho etsa liketso tse tharo ka tatellano le ho lefella ka bokhabane liketso tse phethiloeng ka katleho haeba ho ka etsahala hore hamorao u hlolehe. E emetsoe ka foromo ea BPMN, e shebahala tjena:
Joale u ka matha liketsahalo tse ncha tsa ts'ebetso u sebelisa REST API 'me u fetise data eo u batlang ho e bona e le mefuta e fapaneng ea mohlala oa mosebetsi:
Potso e latelang e khahlisang ke: Camunda o bitsa lits'ebetso tse kang ho behela koloi joang? Camunda ha e khone ho letsetsa lits'ebeletso hang hang (Push-Principle) a sebelisa tse ling tse hahelletsoeng likhokahanyo, empa hape u behe lintho tsa mosebetsi ka mokhoa o hahiloeng. Joale mosebeletsi a ka lata lintho tsa mosebetsi ka REST, a etsa mosebetsi, 'me a bolelle Camunda hore a phethe (Pull-Principle).
Kahoo pele u lokela ho e etsa fetchAndLock (hobane basebetsi ba bang ba ka fumana mesebetsi ka nako e le 'ngoe ho phahamisa sistimi):
Ke eona - ha o so hloke Java, na ha ho joalo? Mme ho lekane ho qala!
Lilaebrari tsa bareki
Ho letsetsa REST API ho bonolo ka puo efe kapa efe ea lenaneo. Ho JavaScript, sena se etsoa ha bonolo ho sebelisoa JQuery, le ho C#, ho sebelisoa System.Net.Http le Newtonsoft.Json. Empa sena se tla nka nako. Kahoo o ka sebelisa feela laeborari ea bareki.
Hajoale, ho na le lilaebrari tse 'maloa tse seng li entsoe tsa bareki:
C #:link и link. Merero ena ka bobeli e maemong a mahareng mme e batla e robetse, empa e ka sebetsa joalo ka qalo e ntle;
PHP: link - ha e felle haholo ebile ha e kenyelle liphetoho tsa morao-rao tsa API, empa ke tseba merero e e sebelisang.
Ntle le JavaScript le Java, lilaebrari tsa bareki ha se karolo ea sehlahisoa sa Camunda ka boeona. Se ke oa lebella hore ba tla ts'ehetsa likarolo tsohle tsa Camunda's REST API. Hobane laeborari ha e fane ka ts'ebetso e itseng ha ho bolele hore ha e eo, lula u sheba Camunda's REST API. Merero ea litšupiso e sebelisa lilaeborari e le qalo le template.
C # mohlala
Ka ho sebelisa laeborari ea bareki e kaholimo, re ka ngola feela:
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", "..." }
});
Khoutu ea mohloli o sebetsang ka botlalo e ka fumanoa inthaneteng: link. Mohlala o mong o fumaneha ho link.
Lintlha tse ling li ka fumanoa webosaeteng Github.com
Mekhoa e meng ea ho qala Camunda
Setšoantšo sa Custom Docker se nang le "Camunda standalone WAR"
E le mokhoa o mong oa setšoantšo sa Docker se hahiloeng pele ho Camunda, u ka itokisetsa Tomcat (mohlala, ho latela litšoantšo tsa semmuso tsa Docker Tomcat) ebe u kopitsa Camunda ho eona e le e 'ngoe ea tse bitsoang lifaele tsa WAR.
Haeba u na le litlhoko tse ling tse ngata 'me u ka theha tikoloho ea kaho ea Java, u ka boela ua theha Camunda Standalone war. Theha mohaho oa Maven joalo ka mehlala ena: haha Maven le war config kapa kopano Maven e nang le Overlay.
Ho qala kabo ea Camunda Tomcat
Kgetho e 'ngoe ke ho khoasolla phepelo ea Camunda Tomcat, u e lokolle, ebe u e tsamaisa. Sena se hloka feela Java Runtime Environment (JRE) e kentsoeng khomphuteng ea hau. Ho ka ba bonolo jarolla ho tloha mona.
Bakeng sa ho fetola database kapa ho etsa eng kapa eng eo o e hlokang ho hlophisa Tomcat joalo ka e hlalosoang ka litokomane. Kea tseba hore Tomcat e kanna ea utloahala e rarahane, empa e bonolo haholo. 'Me Google e tseba likarabo tsa ntho e' ngoe le e 'ngoe e ka hlokoang ts'ebetsong.
Ho matha Camunda ho sebelisa Tomcat
Mokhoa o mong oa ho qetela ke ho iketsetsa Tomcat le ho kenya Camunda ho eona, ho latela tlhaloso ea ho kenya. Sena se tla u fa khetho ea ho sebelisa mofuta ofe kapa ofe oa Tomcat oo u o ratang, kapa o kenye joalo ka ts'ebeletso ea Windows, mohlala.
Ho qala Camunda tlhahiso
Hangata sena se tla hloka tlhophiso ea ho qetela ho tsamaisa Camunda. Ho na le litataiso ho Camunda tse hlalosang sena ka botlalo, empa nke ke ka kena ho tsona sehloohong sena - ke tla bolela mohlala o le mong feela: REST API ea phepelo ha e lokisetsoe ho netefatsoa ka boiketsetso. U ka rata ho fetola sena.
Ho akaretsa
Joalokaha u bona, ho bonolo haholo ho qala ka Camunda, ho sa tsotellehe hore na u sebelisa puo efe. Taba ea bohlokoa ke hore litšebelisano tsohle li etsoa ka REST API. Ho kenya ho bonolo haholo, haholo ha o sebelisa Docker.