He maha nga wa ka korero ahau mo te hoahoanga microservice me nga tangata ehara i te Java: C#, Node.JS/JavaScript kaiwhakawhanake, me te hunga kaingākau ki a Golang. Ko ratou katoa e pa ana ki te meka e hiahia ana ratou ki tetahi miihini whakahiato i roto i te hoahoanga microservice, he taputapu noa ranei ki te arotau i te rerenga mahi me te whai mana ki te ota, ki te hapai i nga wa, putaputa me te utu utu.
BPM turanga ki puna tuwhera mai i Camunda pai mo nga mahi pera. Ko te hoahoa o te kaiwhakawhanake tetahi o nga ahuatanga matua o te hua. Engari ki te titiro koe ki ana tuhinga, ka puta pea te whakaaro ko te atawhai a Camunda te nuinga ki nga kaihanga Java. He maha nga waahi ka taea e te papaaho te hono i o ake mahi me o taapiri, engari kua oti katoa i Java. He tino tika?
Kao! Ko te tikanga, ka taea e koe te whakahaere ngawari i a Camunda me te kore matauranga Java me te whirihora i te hoahoanga ki te tohu i tetahi reo e pai ana koe. I roto i tenei tuhinga ka titiro tatou ki:
hoahoanga taketake;
API OE;
nga tohutohu mo nga whare pukapuka a nga kaihoko mo nga reo ke atu i a Java;
tauira o te whakamahi C # me Node.JS;
nga huarahi ki te whakahaere i te tūmau Camunda (Docker or Tomcat).
hoahoanga
Kua tuhia a Camunda ki Java me te hiahia ki te Java Virtual Machine (JVM) hei whakahaere. Ka whakarato a Camunda i te REST API e taea ai e koe te tuhi i tetahi reo e pai ana koe me te whakamahi i te REST me Camunda:
Ko nga rerengamahi i Camunda kua tautuhia ki te BPMN, he konae XML te tikanga. Ka taea te whakatauira ma te whakamahi Kaitauira Camunda.
Te whakahaere i a Camunda ma te ahua o Docker kua oti te hanga
Ko te huarahi ngawari ki te whakahaere i a Camunda ko te whakamahi Docker. Ko nga huarahi rereke hei whakahaere i a Camunda ka korerohia i muri mai i tenei tuhinga.
I tenei keehi, rere noa:
docker run -d -p 8080:8080 camunda/camunda-bpm-platform:latest
Kaore koe e awangawanga mo Linux, Java Virtual Machines, Tomcats ranei. Kei te waatea nga Dockerfiles me nga tuhinga taketake (hei tauira, nga tohutohu mo te hono ki nga papaa raraunga e hiahiatia ana). GitHub.
Ki te hiahia koe ki te whakahaere i te Camunda Enterprise Edition, ka taea e koe te whakarereke Dockerfile.
Heoi, he kotahi te heke ki te whakahaere i a Camunda ma te whakamahi i a Docker: ka mutu koe ki te putanga o Tomcat kaore e uru ki nga whakatikatika hou. Hei huri noa i tenei, ka taea e koe te hanga i tetahi ahua Docker i runga i te tohatoha Tomcat e hiahiatia ana, penei i tenei tauira, ka whakamahi ranei i tetahi o nga otinga e whakaahuatia ana i raro nei.
Te Whakatakoto Tauira Tukatuka
Titiro ki tetahi tauira e whakamahi ana i te tauira putaputa mo te rahui haerenga matarohia e hiahia ana koe ki te whakaoho kia toru nga hohenga i te rarangi me te utu i nga mahi angitu inaa ka rahua. Ka whakaatuhia ki te ahua BPMN, penei te ahua:
Inaianei ka taea e koe te whakamahi REST API mo te tuku tauira tukanga. Me kii i tiakina e koe hei trip.bpmn me te whakahaere i a Camunda ma te Docker kia waatea ai ki te localhost:8080:
Inaianei ka taea e koe te oma tauira rerengamahi hou te whakamahi i te REST API me te tuku i nga raraunga e hiahia ana koe ki te kite hei taurangi tauira rerengamahi:
Ko te patai pai e whai ake nei he pehea te mahi a Camunda i nga tikanga penei i te tono waka? Kaore e taea e Camunda te karanga tonu i nga ratonga (Push-Principle), ma te whakamahi i etahi whakaurunga tūhonohono, engari me whakauru ano hoki nga taonga mahi ki roto i tetahi momo rarangi whakauru. Ka taea e te kaimahi te whiwhi i nga mea mahi ma te REST, ka mahi i nga mahi, ka ripoata te otinga ki a Camunda (Pull-Principle).
Na tuatahi me mahi koe fetchAndLock (i te mea ka taea e etahi atu kaimahi te whiwhi i nga mahi i te wa kotahi ki te whakarahi i te punaha):
Koia - kaore koe e hiahia ki tetahi Java i tenei wa, tika? Na ka nui noa ki te timata!
Whare Pukapuka Kiritaki
He ngawari te waea ki te REST API i roto i tetahi reo hotaka. I roto i te JavaScript he pai ki te mahi i tenei ma te whakamahi i te JQuery, a i roto i te C # ka taea e koe te whakamahi i te System.Net.Http me Newtonsoft.Json. Engari ka roa tenei. Na ka taea e koe te whakamahi i etahi whare pukapuka kiritaki.
I tenei wa, he maha nga whare pukapuka kiritaki kua rite:
C #:hono и hono. Ko enei kaupapa e rua kei te ahua takawaenga, karekau he mahi, engari ka taea te mahi hei timatanga pai;
PHP: hono ehara i te whare pukapuka tino oti, kaore hoki i te whakauru i nga huringa API hou, engari e mohio ana ahau ki nga kaupapa e whakamahi ana.
Haunga te JavaScript me te Java, ko nga whare pukapuka kiritaki ehara i te waahanga o te hua Camunda ake. Kaua e tumanako ka tautokohia e ratou nga ahuatanga katoa o te REST API a Camunda. Na te mea karekau te whare pukapuka e whakarato i tetahi ahuatanga ehara i te mea karekau i reira, tirohia tonu te Camunda REST API. Ka whakamahia e nga kaupapa angamaheni nga whare pukapuka hei timatanga me te tauira.
Tauira me C#
Ma te whakamahi i te whare pukapuka kiritaki i runga ake nei, ka taea e taatau te tuhi noa:
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", "..." }
});
Ka kitea te waehere puna mahi katoa i runga ipurangi: hono. Ko tetahi atu tauira kei te waatea i hono.
Ka kitea etahi atu korero i runga i te paetukutuku github.com
Nga huarahi rereke hei timata i a Camunda
Atahanga Docker Ritenga me te "Camunda standalone WAR"
Hei rereke ki te ahua Docker i hangaia i mua i a Camunda, ka taea e koe te whakarite Tomcat koe (hei tauira, i runga i nga whakaahua a Docker Tomcat mana) katahi ka kapea a Camunda ki roto hei tetahi o nga mea e kiia nei ko nga konae WAR.
Mena he maha atu nga whakaritenga ka taea e koe te whakarite i tetahi taiao hanga Java, ka taea hoki e koe te whirihora i te pakanga a Camunda Standalone. Whakaturia he hanga Maven penei i enei tauira: hanga Maven me te whirihoranga whawhai hui ranei Maven me te Whakakikorua.
Te whakarewa i te tohatoha Camunda Tomcat
Ko tetahi atu whiringa ko te tango noa i te tohatoha Camunda Tomcat, wetewetehia ka whakahaere. Hei mahi i tenei, me whakauru noa te Java Runtime Environment (JRE) ki to rorohiko. Ka taea te ngawari tiki mai i konei.
Ki te huri i te pātengi raraunga ki te mahi i tetahi atu mea e hiahia ana koe ki te whirihora Tomcat rite i whakaahuatia i roto i nga tuhinga. E mohio ana ahau he ahua uaua a Tomcat, engari he tino ngawari. A kei a Google nga whakautu ki nga mea katoa e hiahia ana koe i roto i te mahi.
Te whakahaere i a Camunda ma te whakamahi i a Tomcat
Ko te huarahi whakamutunga ko te whirihora i a Tomcat i a koe ano me te whakauru i a Camunda ki roto, whai i te whakaahuatanga whakaurunga. Ma tenei ka whai waahi koe ki te whakamahi i tetahi putanga o Tomcat e pai ana koe, hei tauira ranei, whakauruhia hei ratonga Windows.
Te whakarewanga o Camunda ki te hanga
Ko te tikanga, me mahi koe i etahi tatūnga whakamutunga kia rere a Camunda. Kei a Camunda nga aratohu e whakaatu ana i nga korero nui, engari kaore au e pa ki a raatau i tenei tuhinga - Ka hoatu noa e ahau tetahi tauira: ko te REST API o te tohatoha kaore i te whirihorahia mo te whakamotuhēhēnga taunoa. Ka hiahia pea koe ki te huri i tenei.
Kohia ana
I kite pea koe, he tino ngawari te tiimata me te Camunda, ahakoa te reo e whakamahia ana e koe. Ko te kaupapa matua ko nga korero katoa ka mahia ma te REST API. He ngawari noa te whakaurunga, ina koa ka whakamahi i a Docker.