Mo nigbagbogbo jiroro nipa faaji microservice pẹlu awọn eniyan ti kii ṣe Java: awọn olupilẹṣẹ C#, Node.JS/JavaScript awọn olupilẹṣẹ, tabi Golang aficionados. Gbogbo wọn ni o dojukọ pẹlu otitọ pe wọn nilo ẹrọ orchestration ni faaji microservice, tabi o kan ọpa kan lati ṣe ṣiṣan ṣiṣan iṣẹ ati gba agbara lati paṣẹ, mu awọn akoko ipari, Saga ati awọn iṣowo isanpada.
BPM Syeed pẹlu ìmọ orisun lati Camunda nla fun iru awọn iṣẹ-ṣiṣe. Ọrẹ Olùgbéejáde jẹ ọkan ninu awọn ẹya pataki ti ọja naa. Ṣugbọn ti o ba wo iwe rẹ, o le ni iwunilori pe “ọrẹ” Camunda jẹ ifọkansi ni pataki si awọn olupilẹṣẹ Java. Syeed n pese ọpọlọpọ awọn aṣayan fun sisopọ awọn iṣẹ tirẹ ati awọn amugbooro, ṣugbọn gbogbo rẹ ni Java. Se looto ni?
Rara! Ni otitọ, o le ni rọọrun ṣiṣẹ Camunda laisi eyikeyi imọ Java ati ṣeto faaji fun koodu ni eyikeyi ede ti o fẹ. Ninu nkan yii, a yoo wo:
ipilẹ faaji;
API REST
imọran lori awọn ile-ikawe alabara ti o wa fun awọn ede miiran ju Java;
apẹẹrẹ ti lilo C # ati Node.JS;
Awọn ọna lati ṣiṣẹ olupin Camunda (Docker tabi Tomcat).
faaji
Camunda ti kọ ni Java ati pe o nilo ẹrọ Java foju kan (JVM) lati ṣiṣẹ. Camunda n pese API REST ti o fun ọ laaye lati kọ ni eyikeyi ede ti o fẹ ati lo REST pẹlu Camunda:
Awọn ṣiṣan iṣẹ ni Camunda jẹ asọye ni BPMN, eyiti o jẹ ipilẹ faili XML kan. O le ṣe apẹrẹ pẹlu Camunda Awoṣe.
Ṣiṣẹ Camunda nipasẹ aworan Docker ti a ti kọ tẹlẹ
Ọna to rọọrun lati ṣiṣẹ Camunda ni lati lo Docker. Awọn ọna omiiran lati ṣiṣẹ Camunda ni a ṣe apejuwe nigbamii ni nkan yii.
Ni idi eyi, nìkan ṣiṣẹ:
docker run -d -p 8080:8080 camunda/camunda-bpm-platform:latest
O ko ni lati ṣe aniyan nipa Linux, Awọn ẹrọ foju Java tabi Tomcats. Dockerfiles ati awọn iwe ipilẹ (fun apẹẹrẹ, awọn ilana fun sisopọ si awọn apoti isura infomesonu ti a beere) wa ni Github.
Ti o ba fẹ ṣiṣe Ẹda Idawọlẹ Camunda, o le yipada ni rọọrun dockerfile.
Bibẹẹkọ, ṣiṣe Camunda pẹlu Docker ni isale kan: iwọ yoo pari pẹlu ẹya Tomcat ti ko pẹlu awọn atunṣe tuntun nigbagbogbo. Lati ṣiṣẹ ni ayika eyi, o le ṣẹda aworan Docker tirẹ ti o da lori pinpin Tomcat ti o fẹ, bi a ṣe han ninu apẹẹrẹ yii, tabi lo ọkan ninu awọn ojutu ti a ṣalaye ni isalẹ.
Gbigbe Awoṣe ilana
Jẹ ki a wo apẹẹrẹ kan nipa lilo awoṣe Saga fun fowo si irin-ajo Ayebaye nibiti o fẹ lati ma nfa awọn iṣe mẹta ni ọna kan ati ki o sanpada awọn iṣe aṣeyọri ni oore-ọfẹ ni ọran ti ikuna nigbamii. Ti gbekalẹ ni fọọmu BPMN, o dabi eyi:
Bayi o le lo API REST fun imuṣiṣẹ awoṣe ilana. Jẹ ki a sọ pe o fipamọ bi irin-ajo.bpmn ati ṣiṣe Camunda nipasẹ Docker nitorina o wa lori localhost: 8080:
Ibeere ti o nifẹ ti o tẹle ni: bawo ni Camunda ṣe pe awọn ilana bii fowo si ọkọ ayọkẹlẹ kan? Camunda ko le pe awọn iṣẹ lẹsẹkẹsẹ (Push-Principle) ni lilo diẹ ninu ti a ṣe sinu awọn asopọ, ṣugbọn tun fi awọn ohun iṣẹ sinu iru isinyi ti a ṣe sinu. Osise le lẹhinna mu awọn nkan iṣẹ nipasẹ REST, ṣe iṣẹ naa, ki o sọ fun Camunda lati pari (Pull-Principle).
Nitorinaa akọkọ o nilo lati ṣiṣẹ bu AtiLock (niwọn igba ti awọn oṣiṣẹ miiran le gba awọn iṣẹ-ṣiṣe ni akoko kanna lati ṣe iwọn eto naa):
Iyẹn ni - iwọ ko tun nilo Java eyikeyi, otun? Ati pe iyẹn ti to lati bẹrẹ!
Awọn ile-ikawe alabara
Pipe API REST rọrun ni eyikeyi ede siseto. Ni JavaScript, eyi ni irọrun ṣe ni lilo JQuery, ati ni C #, ni lilo System.Net.Http ati Newtonsoft.Json. Ṣugbọn eyi yoo gba akoko. Nitorinaa o le kan lo diẹ ninu ile-ikawe alabara kan.
Lọwọlọwọ ọpọlọpọ awọn ile-ikawe alabara ti o ti ṣetan ti o wa:
JavaScript: ọna asopọ. Ni atilẹyin nipasẹ Camunda;
C #:ọna asopọ и ọna asopọ. Mejeji ti awọn wọnyi ise agbese ni o wa ni ohun agbedemeji ipinle ati Oba dormant, ṣugbọn o le sin bi kan ti o dara ibẹrẹ;
PHP: ọna asopọ - ko ni pipe ati pe ko pẹlu awọn ayipada API tuntun, ṣugbọn Mo mọ awọn iṣẹ akanṣe ti o lo.
Ayafi ti JavaScript ati Java, awọn ile-ikawe alabara kii ṣe apakan ti ọja Camunda funrararẹ. Ma ṣe reti wọn lati ṣe atilẹyin fun gbogbo awọn ẹya API REST ti Camunda. Nitoripe ile-ikawe kan ko pese iṣẹ kan ko tumọ si pe ko si nibẹ, nigbagbogbo ṣayẹwo Camunda's REST API. Awọn iṣẹ itọkasi lo awọn ile-ikawe bi aaye ibẹrẹ ati awoṣe.
C # apẹẹrẹ
Lilo ile-ikawe alabara ti o wa loke, a le kọ nirọrun:
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", "..." }
});
Koodu orisun iṣẹ ni kikun le ṣee rii lori ayelujara: ọna asopọ. Miiran apẹẹrẹ wa ni ọna asopọ.
Alaye diẹ sii ni a le rii lori oju opo wẹẹbu github.com
Awọn ọna Yiyan lati Lọlẹ Camunda
Aworan Docker ti aṣa pẹlu "Camunda standalone WAR"
Gẹgẹbi yiyan si aworan Docker ti a ti kọ tẹlẹ lati Camunda, o le mura Tomcat funrararẹ (fun apẹẹrẹ, da lori awọn aworan Docker Tomcat osise) ati lẹhinna daakọ Camunda sinu rẹ bi ọkan ninu awọn ohun ti a pe ni awọn faili WAR.
Ti o ba ni ọpọlọpọ awọn ibeere afikun ati pe o le ṣeto agbegbe kikọ Java kan, o tun le ṣeto ogun Camunda Standalone. Ṣeto Kọ Maven kan bii ninu awọn apẹẹrẹ wọnyi: kọ Maven pẹlu ogun konfigi tabi ijọ Maven pẹlu agbekọja.
Ifilọlẹ pinpin Camunda Tomcat
Aṣayan miiran ni lati ṣe igbasilẹ pinpin Camunda Tomcat nirọrun, ṣii sii, ki o ṣiṣẹ. Eyi nikan nilo Ayika asiko asiko Java (JRE) ti a fi sori kọmputa rẹ. O le ni irọrun download lati ibi.
Lati yi data data pada tabi ṣe ohunkohun miiran o nilo lati tunto Tomcat bii se apejuwe ninu iwe. Mo mọ pe Tomcat le dun idiju, ṣugbọn o rọrun pupọ. Ati Google mọ awọn idahun si ohun gbogbo ti o le nilo ninu ilana naa.
Ṣiṣẹ Camunda lilo Tomcat
Yiyan ti o kẹhin ni lati tunto Tomcat funrararẹ ki o fi Camunda sinu rẹ, awọn wọnyi fifi sori apejuwe. Eyi yoo fun ọ ni aṣayan lati lo eyikeyi ti ikede Tomcat ti o fẹ, tabi fi sii bi iṣẹ Windows, fun apẹẹrẹ.
Ifilọlẹ Camunda sinu iṣelọpọ
Eyi yoo nigbagbogbo nilo diẹ ninu iṣeto ikẹhin lati ṣiṣẹ Camunda. Awọn itọnisọna wa ni Camunda ti o ṣapejuwe eyi ni awọn alaye nla, ṣugbọn Emi kii yoo lọ sinu wọn ninu nkan yii - Emi yoo lorukọ apẹẹrẹ kan nikan: API REST pinpin ko ni tunto fun ijẹrisi nipasẹ aiyipada. O le fẹ yi eyi pada.
Summing soke
Bi o ṣe le rii, o rọrun pupọ lati bẹrẹ pẹlu Camunda, laibikita ede ti o nlo. Koko bọtini ni pe gbogbo ibaraenisepo ni a ṣe nipasẹ API REST. Fifi sori jẹ rọrun pupọ paapaa, paapaa nigba lilo Docker.