Ag baint úsáide as Camunda chun ceolfhoireann éasca a dhéanamh bunaithe ar REST agus Workflow Engine (gan Java)

Hey Habr! Cuirim i láthair d'aistriúchán ar an alt "Bain úsáid as Camunda mar inneall ceolfhoirne agus sreabhadh oibre bunaithe ar REST (gan baint le Java)" le Bernd Rücker.

07.07.2020/XNUMX/XNUMX, aistriúchán Airteagal Bernd Rucker

Ag baint úsáide as Camunda chun ceolfhoireann éasca a dhéanamh bunaithe ar REST agus Workflow Engine (gan Java)

Is minic a phléim ailtireacht microservice le daoine nach iad Java: forbróirí C#, forbróirí Node.JS/JavaScript, nó lucht leanúna Golang. Gach ceann acu ag tabhairt aghaidhe ar an bhfíric go bhfuil gá acu le meicníocht orchestration in ailtireacht microservice, nó díreach uirlis chun sruthlíniú ar an sreabhadh oibre agus a fháil ar an gcumas a ordú, láimhseáil timeouts, Saga agus idirbhearta cúitimh.

ardán BPM le foinse oscailte ó Camunda iontach le haghaidh tascanna den sórt sin. Tá cairdiúlacht an fhorbróra ar cheann de phríomhghnéithe an táirge. Ach má fhéachann tú ar a dhoiciméadú, b'fhéidir go bhfaighidh tú an tuiscint go bhfuil "cairdiúlacht" Camunda dírithe go príomha ar fhorbróirí Java. Soláthraíonn an t-ardán go leor roghanna chun do chuid feidhmeanna agus síntí féin a nascadh, ach déantar é go léir i Java. An bhfuil sé i ndáiríre?

Níl! Déanta na fírinne, is féidir leat Camunda a rith go héasca gan aon eolas Java ar bith agus an ailtireacht le haghaidh cód a shocrú i dteanga ar bith de do rogha féin. San Airteagal seo, féachfaimid ar:

  • ailtireacht bhunúsach;
  • REST API
  • comhairle maidir le leabharlanna cliant atá ann cheana le haghaidh teangacha seachas Java;
  • mar shampla ag baint úsáide as C# agus Nód.JS;
  • bealaí chun freastalaí Camunda (Docker nó Tomcat) a thosú.

ailtireacht

Tá Camunda scríofa i Java agus tá Meaisín Fíorúil Java (JVM) de dhíth lena rith. Soláthraíonn Camunda API REST a ligeann duit scríobh i dteanga ar bith is mian leat agus REST a úsáid le Camunda:

Ag baint úsáide as Camunda chun ceolfhoireann éasca a dhéanamh bunaithe ar REST agus Workflow Engine (gan Java)

Sainmhínítear sreafaí oibre i Camunda i BPMN, ar comhad XML é go bunúsach. Is féidir é a mhúnlú le Múnlaoir Camunda.

Rith Camunda trí íomhá Docker réamhthógtha

Is é an bealach is éasca chun Camunda a rith ná Docker a úsáid. Déantar cur síos ar bhealaí eile chun Camunda a sheoladh níos déanaí san Airteagal seo.

Ag baint úsáide as Camunda chun ceolfhoireann éasca a dhéanamh bunaithe ar REST agus Workflow Engine (gan Java)

Sa chás seo, rith go simplí:

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

Ní gá a bheith buartha faoi Linux, JVMs nó Tomcats. Tá dockerfiles agus doiciméadú bunúsach (mar shampla, treoracha chun nascadh leis na bunachair shonraí riachtanacha) ar fáil ag Github.

Más mian leat Camunda Enterprise Edition a reáchtáil is féidir leat athrú go héasca dockerfile.

Mar sin féin, tá míbhuntáiste amháin ag baint le Camunda a reáchtáil le Docker: beidh leagan de Tomcat agat nach n-áirítear i gcónaí na réitigh is déanaí. Chun oibriú timpeall air seo, is féidir leat do íomhá Docker féin a chruthú bunaithe ar an dáileadh Tomcat atá ag teastáil, mar a thaispeántar sa sampla seo, nó úsáid a bhaint as ceann de na réitigh a thuairiscítear thíos.

Imscaradh Múnla Próisis

Breathnaímid ar shampla ag baint úsáide as an teimpléad Saga le haghaidh áirithinte turas clasaiceach áit ar mhaith leat trí ghníomh i ndiaidh a chéile a spreagadh agus cúiteamh a dhéanamh go galánta as gníomhartha a críochnaíodh go rathúil i gcás teip níos déanaí. Arna léiriú i bhfoirm BPMN, tá an chuma air seo:

Ag baint úsáide as Camunda chun ceolfhoireann éasca a dhéanamh bunaithe ar REST agus Workflow Engine (gan Java)

Anois is féidir leat é a úsáid REST API le haghaidh imscaradh múnla próisis. Ligean le rá go ndéanann tú é a shábháil mar trip.bpmn agus Camunda a rith trí Docker ionas go mbeidh sé ar fáil ar 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

Anois is féidir leat a rith cásanna sreabhadh oibre nua ag baint úsáide as an REST API agus pas a fháil ar na sonraí is mian leat a fheiceáil mar athróga shampla sreabhadh oibre:

  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

Is í an chéad cheist suimiúil eile: conas a ghlaonn Camunda nósanna imeachta cosúil le carr a chur in áirithe? Ní féidir le Camunda ach seirbhísí a ghlaoch láithreach (Push-Principle) ag baint úsáide as roinnt ionsuite chónaisc, ach freisin míreanna oibre a chur in ord tógtha. Is féidir leis an oibrí ansin míreanna oibre a fháil trí REST, an obair a dhéanamh, agus a rá le Camunda é a chríochnú (Pull-Prionsabal).

Ag baint úsáide as Camunda chun ceolfhoireann éasca a dhéanamh bunaithe ar REST agus Workflow Engine (gan Java)

Mar sin, ar dtús is gá duit a fhorghníomhú beirAndLock (toisc gur féidir le hoibrithe eile tascanna a fháil ag an am céanna chun an córas a scálaiú):

  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

Ansin inis do Camunda é sin oibrí críochnaithe obair (tabhair faoi deara nach mór duit an t-aitheantas taisc sheachtraigh a fuarthas sa chéad iarratas):

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

Sin é - níl aon Java ag teastáil uait fós, ceart? Agus is leor sin le tosú!

Leabharlanna Cliant

Is furasta API REST a ghlaoch i dteanga ríomhchlárúcháin ar bith. I JavaScript, déantar é seo go caothúil ag baint úsáide as JQuery, agus in C#, ag baint úsáide as System.Net.Http agus Newtonsoft.Json. Ach tógfaidh sé seo am. Mar sin is féidir leat ach roinnt leabharlann cliant a úsáid.

I láthair na huaire, tá roinnt leabharlann cliant réamhdhéanta ar fáil:

  • javascript: nasc. Tacaithe ag Camunda;
  • Java: nasc. Tacaithe ag Camunda;
  • C #:nasc и nasc. Tá an dá thionscadal seo i riocht idirmheánach agus beagnach díomhaoin, ach féadann siad feidhmiú mar phointe tosaigh maith;
  • PHP: nasc - ní ró-iomlán agus ní chuimsíonn sé na hathruithe API is déanaí, ach tá a fhios agam tionscadail a úsáideann é.

Cé is moite de JavaScript agus Java, níl na leabharlanna cliant mar chuid de tháirge Camunda féin. Ná bí ag súil go dtacóidh siad le gach ceann de na gnéithe REST API de chuid Camunda. Díreach mar nach soláthraíonn leabharlann feidhm áirithe ní chiallaíonn sé sin nach bhfuil sé ann, seiceáil i gcónaí API REST Camunda. Úsáideann tionscadail tagartha leabharlanna mar phointe tosaigh agus mar theimpléad.

C# shampla

Ag baint úsáide as an leabharlann cliant thuas, is féidir linn a scríobh go simplí:

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

Is féidir an cód foinse atá ag feidhmiú go hiomlán a fháil ar líne: nasc. Tá sampla eile ar fáil ag nasc.

Sampla le 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();

Is féidir tuilleadh eolais a fháil ar an suíomh Gréasáin github.com

Bealaí Malartacha chun Camunda a Sheoladh

Íomhá Docker Saincheaptha le "Camunda standalone WAR"

Mar mhalairt ar íomhá Docker réamhthógtha ó Camunda, is féidir leat Tomcat a ullmhú duit féin (mar shampla, bunaithe ar íomhánna oifigiúla Docker Tomcat) agus ansin Camunda a chóipeáil isteach ann mar cheann de na comhaid WAR mar a thugtar air.

Ag baint úsáide as Camunda chun ceolfhoireann éasca a dhéanamh bunaithe ar REST agus Workflow Engine (gan Java)

Má tá go leor ceanglais bhreise agat agus gur féidir leat timpeallacht tógála Java a bhunú, is féidir leat cogadh Camunda Standalone a chur ar bun freisin. Socraigh tógáil Maven mar atá sna samplaí seo: tóg Maven le cumraíocht cogaidh nó tionól Maven le Forleagan.

Ag tosú dáileadh Camunda Tomcat

Rogha eile ná an dáileadh Camunda Tomcat a íoslódáil, é a dhísipeáil, agus é a rith. Ní theastaíonn uaidh seo ach an Java Runtime Environment (JRE) atá suiteáilte ar do ríomhaire. Is féidir é a bheith go héasca íoslódáil ó anseo.

Ag baint úsáide as Camunda chun ceolfhoireann éasca a dhéanamh bunaithe ar REST agus Workflow Engine (gan Java)

D'fhonn an bunachar sonraí a athrú nó aon rud eile a dhéanamh ní mór duit cosúil le Tomcat a chumrú cur síos orthu sa doiciméadú. Tá a fhios agam go bhféadfadh Tomcat fuaime casta, ach i ndáiríre tá sé an-simplí. Agus tá a fhios ag Google na freagraí ar gach rud a d'fhéadfadh a bheith ag teastáil sa phróiseas.

Rith Camunda ag baint úsáide as Tomcat

Is é an rogha eile ná Tomcat a shocrú duit féin agus Camunda a shuiteáil ann, tar éis an tuairisc suiteála. Tabharfaidh sé seo an rogha duit cibé leagan de Tomcat is fearr leat a úsáid, nó é a shuiteáil mar sheirbhís Windows, mar shampla.

Camunda a sheoladh isteach i dtáirgeadh

De ghnáth beidh roinnt socrú deiridh ag teastáil chun Camunda a rith. Tá treoirlínte i Camunda a chuireann síos go mion ar seo, ach ní rachaidh mé isteach iontu san Airteagal seo - ní ainmneoidh mé ach sampla amháin: níl API REST an dáileadh cumraithe le haghaidh fíordheimhnithe de réir réamhshocraithe. B'fhéidir gur mhaith leat é seo a athrú.

Achoimre suas

Mar a fheiceann tú, tá sé an-éasca tosú le Camunda, beag beann ar an teanga atá in úsáid agat. Is é an príomhphointe ná go ndéantar gach idirghníomhaíocht tríd an REST API. Tá sé éasca go leor a shuiteáil freisin, go háirithe agus Docker á úsáid.

Foinse: will.com

Add a comment