Isticmaalka Camunda ee fududaynta ku salaysan REST iyo Matoorka Socodka (Java ma jiro)

Hello, Habr! Waxaan dareenkaaga ku soo bandhigayaa tarjumaad maqaalka "U adeegso Camunda si sahlan loo isticmaali karo REST-ku-saleysan orchestration iyo mishiinka socodka shaqada (adigoon taaban Java)" Waxaa qoray Bernd RΓΌcker.

07.07.2020/XNUMX/XNUMX, tarjumaad qodobbada Bernd RΓΌcker

Isticmaalka Camunda ee fududaynta ku salaysan REST iyo Matoorka Socodka (Java ma jiro)

Waxaan inta badan kala hadlaa qaab-dhismeedka microservice dadka aan Java ahayn: C#, Node.JS/JavaScript horumariyeyaasha, ama xiiseeyaasha Golang. Dhammaantood waxay la kulmaan xaqiiqda ah inay u baahan yihiin mishiinka orchestration ee qaab dhismeedka microservice ama kaliya qalab si kor loogu qaado socodka shaqada oo ay u helaan awood ay ku dalbadaan, wax ka qabtaan waqtiyada, Saga iyo magdhowga macaamilada.

Madal BPM leh il furan oo ka timid Camunda aad ugu fiican hawlahan oo kale. Saaxiibtinimada horumariyayaashu waa mid ka mid ah astaamaha ugu muhiimsan ee alaabta. Laakiin haddii aad eegto dukumeentigeeda, waxaa laga yaabaa inaad hesho aragti ah in saaxiibtinimada Camunda ay inta badan ku wajahan tahay horumarinta Java. Madalku wuxuu bixiyaa fursado badan oo lagu xiro hawlahaaga iyo kordhintaada, laakiin dhammaan waxaa lagu sameeyaa Java. Ma runbaa?

Maya! Dhab ahaantii, waxaad si fudud u socodsiin kartaa Camunda adiga oo aan wax aqoon Java ah lahayn oo aad habayn karto qaab-dhismeedka si aad ugu qorto luqad kasta oo aad doorato. Maqaalkan waxaan ku eegi doonaa:

  • dhismaha aasaasiga ah;
  • API REST;
  • talo ku saabsan maktabadaha macmiilka ee jira ee luqadaha aan Java ahayn;
  • tusaale ahaan isticmaalka C # iyo Node.JS;
  • hababka loo maamulo server-ka Camunda (Docker ama Tomcat).

naqshadaha

Camunda wuxuu ku qoran yahay Java wuxuuna u baahan yahay Java Virtual Machine (JVM) si uu u shaqeeyo. Camunda waxay ku siisaa API REST kaasoo kuu ogolaanaya inaad ku qorto luqad kasta oo aad jeceshahay oo aad ku isticmaasho REST Camunda:

Isticmaalka Camunda ee fududaynta ku salaysan REST iyo Matoorka Socodka (Java ma jiro)

Socodka shaqada ee Camunda waxaa lagu qeexay BPMN, kaas oo asal ahaan ah faylka XML. Waxaa loo qaabayn karaa iyadoo la isticmaalayo Camunda Modeler.

Ku socodsiinta Camunda iyadoo la adeegsanayo sawir Docker horay loo dhisay

Habka ugu fudud ee lagu socodsiiyo Camunda waa isticmaalka Docker. Siyaabo kale oo loo maamulo Camunda ayaa lagu sifeeyay mardambe maqaalkan.

Isticmaalka Camunda ee fududaynta ku salaysan REST iyo Matoorka Socodka (Java ma jiro)

Xaaladdan, kaliya orod:

  docker run -d -p 8080:8080 camunda/camunda-bpm-platform:latest

Uma baahnid inaad ka walwasho Linux, Java Virtual Machines ama Tomcats. Dockerfiles iyo dukumentiyada aasaasiga ah (tusaale ahaan, tilmaamaha ku xidhidhiyaha xog-ururinta ee loo baahan yahay) ayaa laga heli karaa Github.

Haddii aad rabto inaad socodsiiso Camunda Enterprise Edition, si fudud ayaad u beddeli kartaa Dockerfile.

Si kastaba ha noqotee, waxaa jira hal dhinac oo hoos u dhigaya socodsiinta Camunda adoo isticmaalaya Docker: waxaad ku dambayn doontaa nooca Tomcat oo aan had iyo jeer ku jirin hagaajintii ugu dambeysay. Si arrintan loo sameeyo, waxaad adigu abuuri kartaa sawir Docker ah oo ku saleysan qaybinta Tomcat ee la doonayo, sida lagu muujiyey tusaalahan, ama isticmaal mid ka mid ah xalalka hoos lagu sharraxay.

Dajinta Qaabka Habka

Aynu eegno tusaale annagoo adeegsanayna qaabka Saga ee ballan-qaadka safarka caadiga ah halkaas oo aad rabto inaad kiciso saddex fal oo isku xigta oo si xarrago leh u magdhabiso ficillada guuleysta haddii ay dhacdo guuldarro dambe. Lagu soo bandhigay qaabka BPMN, waxay u egtahay sidan:

Isticmaalka Camunda ee fududaynta ku salaysan REST iyo Matoorka Socodka (Java ma jiro)

Hadda waad isticmaali kartaa REST API ee habka geynta qaabka. Aynu nidhaahno waxaad u kaydisay safar ahaan.bpmn oo aad Camunda u soo martay Docker si ay uga hesho localhost:8080:

  curl -w "n" 
-H "Accept: application/json" 
-F "deployment-name=trip" 
-F "enable-duplicate-filtering=true" 
-F "deploy-changed-only=true" 
-F "[email protected]" 
http://localhost:8080/engine-rest/deployment/creat

Hadda waad ordi kartaa xaaladaha cusub ee socodka shaqada Adigoo isticmaalaya REST API oo gudbinta xogta aad rabto inaad u aragto doorsoomayaal socodka shaqada:

  curl 
-H "Content-Type: application/json" 
-X POST 
-d '{"variables":{"someData" : {"value" : "someValue", "type": "String"}},"businessKey" : "12345"}}' 
http://localhost:8080/engine-rest/<!-- -->process-definition/key/<!-- -->FlowingTripBookingSaga<!-- -->/start

Su'aasha soo socota ee xiisaha leh waa sidee Camunda u kicisaa hababka sida ballansashada baabuur? Camunda isla markaaba uma soo wici karto adeegyada (Push-Principle), adoo isticmaalaya qaar ka mid ah gudaha gudaha xirayaasha, laakiin sidoo kale geli alaabta shaqada nooc ka mid ah safka la dhisay. Shaqaaluhu waxa uu markaa ka heli karaa alaabta shaqada ee REST, oo gudan karta shaqada, oo uu u soo sheegi karaa dhamaystirka Camunda (Pull-Principle).

Isticmaalka Camunda ee fududaynta ku salaysan REST iyo Matoorka Socodka (Java ma jiro)

Markaa marka hore waxaad u baahan tahay inaad sameyso keenAndLock (maadaama shaqaalaha kale ay heli karaan hawlo isku mar si ay u cabbiraan nidaamka):

  curl 
-H "Content-Type: application/json" 
-X POST 
-d <!-- -->'{"workerId":"worker123","maxTasks":1,"usePriority":true,"topics":[{"topicName": "reserve-car"}, "lockDuration": 10000, "variables": ["someData"]}]}'<!-- --> 
http://localhost:8080/engine-rest/external-task/fetchAndLock

Markaas u sheeg Camunda taas shaqaalihii shaqadiisii ​​wuu dhameeyay (xusuusnow waa inaad gelisaa aqoonsiga hawsha dibadda ee lagu helay codsigii ugu horreeyay):

  curl 
-H "Content-Type: application/json" 
-X POST 
-d <!-- -->'{"workerId":"worker123", "variables": {}}'<!-- --> 
http://localhost:8080/engine-rest/<!-- -->external-task/EXTERNAL_TASK_ID/complete

Taasi waa - uma baahnid Java ilaa hadda, sax? Taasina waa ku filan tahay inaad bilowdo!

Maktabadaha macmiilka

Wicida REST API waa u fududahay luuqad kasta oo barnaamij ah. JavaScript dhexdeeda way ku habboon tahay inaad tan ku samayso JQuery, C # waxaad ku isticmaali kartaa System.Net.Http iyo Newtonsoft.Json. Laakiin tani waxay qaadan doontaa waqti. Markaa waxaad isticmaali kartaa qaar ka mid ah maktabadda macmiilka.

Hadda waxa jira dhawr maktabadood oo macmiil oo diyaarsan:

Marka laga reebo JavaScript iyo Java, maktabadaha macmiilku maaha qayb ka mid ah alaabta Camunda lafteeda. Ha ka filanin inay taageeraan dhammaan sifooyinka Camunda's REST API. Sababtoo ah maktabaddu ma bixiso sifo gaar ah macnaheedu maaha inaysan halkaas joogin, had iyo jeer hubi Camunda REST API. Mashruucyada caadiga ah waxay u isticmaalaan maktabadaha meel bilow ah iyo qaab tusaale ah.

Tusaale C #

Isticmaalka maktabadda macmiilka ee sare, waxaan si fudud u qori karnaa:

  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", "..." }
    });

Koodhka isha shaqada oo buuxa ayaa laga heli karaa onlayn: ссылка. Tusaale kale ayaa laga heli karaa ссылка.

Tusaale leh Node.js

  var Workers = require('camunda-worker-node');
  var workers = Workers('http://localhost:8080/engine-rest', {
    workerId: 'some-worker-id'
  });
  
  workers.registerWorker('reserve-car', [ 'someData' ], function(context, callback) {
    var someNewData = context.variables.someData + " - added something";
    callback(null, {
      variables: {
        someNewData: someNewData
      }
    });
  });
  
  workers.shutdown();

Macluumaad dheeraad ah ayaa laga heli karaa bogga internetka github.com

Siyaabo kale oo lagu bilaabo Camunda

Sawirka gaarka ah ee Docker oo wata "Camunda standalone WAR"

Beddelka sawirka Docker ee horay loo dhisay ee Camunda, waxaad diyaarin kartaa Tomcat naftaada (tusaale ahaan, oo ku saleysan sawirada Docker Tomcat ee rasmiga ah) ka dibna ku koobi Camunda sida mid ka mid ah waxa loogu yeero faylasha WAR.

Isticmaalka Camunda ee fududaynta ku salaysan REST iyo Matoorka Socodka (Java ma jiro)

Haddii aad leedahay shuruudo badan oo dheeraad ah oo aad habeyn karto jawi dhisme Java, waxaad sidoo kale habeyn kartaa dagaalka Camunda Standalone. U samee dhisme Maven sida tusaalahan: dhis Maven oo leh qaabaynta dagaalka ama kulan Maven oo leh dusha sare.

Bilaabida qaybinta Camunda Tomcat

Ikhtiyaar kale ayaa ah in si fudud loo soo dejiyo qaybinta Camunda Tomcat, ka fur oo socodsiiso. Si tan loo sameeyo, waxaad u baahan tahay oo kaliya Java Runtime Environment (JRE) oo lagu rakibay kombayutarkaga. Waxay noqon kartaa si fudud halkan kala soo deg.

Isticmaalka Camunda ee fududaynta ku salaysan REST iyo Matoorka Socodka (Java ma jiro)

Si aad u bedesho kaydka xogta ama aad samayso wax kale waxaad u baahan tahay inaad habayso Tomcat sida lagu sharaxay dukumeentiyada. Waan ogahay in Tomcat uu u ekaan karo mid adag, laakiin runtii waa mid aad u fudud. Google-ku-na wuxuu leeyahay jawaabaha wax kasta oo laga yaabo inaad uga baahato habka.

Ku socodsiinta Camunda adoo isticmaalaya Tomcat

Beddelka ugu dambeeya waa inaad adigu isku hagaajiso Tomcat oo aad ku rakibto Camunda, raacaya sharaxaadda rakibidda. Tani waxay ku siin doontaa fursad aad ku isticmaasho nooc kasta oo Tomcat ah oo aad doorbidayso, ama, tusaale ahaan, ugu rakib adeeg Windows ahaan.

Daahfurka Camunda soo saarista

Caadi ahaan, tani waxay kaaga baahan doontaa inaad sameyso habayn kama dambays ah si aad u hesho Camunda. Camunda waxay leedahay tilmaamo si faahfaahsan u qeexaya tan, laakiin kuma taaban doono iyaga maqaalkan - waxaan kaliya ku siin doonaa hal tusaale: qaybinta API REST looma habayn si loo xaqiijiyo si caadi ah. Waxaa laga yaabaa inaad rabto inaad tan beddesho.

Soo koobid

Sida laga yaabo inaad dareentay, inaad ku bilowdo Camunda waa mid aad u fudud, iyadoon loo eegin luqadda aad isticmaasho. Qodobka ugu muhiimsan waa in dhammaan isgaarsiinta lagu sameeyo REST API. Rakibaadda sidoo kale waa wax fudud, gaar ahaan marka la isticmaalayo Docker.

Source: www.habr.com

Add a comment