Camunda utens ad facilem orchestration fundatur in CETERA et Workflow Engine (non Java)

Salve, Habr! Tibi operam tuam praebeo translationem articuli "Camunda utere ut facile ad usum REST-fundatur orchestration et workflow engine (sine tactu Java)" by Bernd RΓΌcker.

07.07.2020/XNUMX/XNUMX, translation vasa Bernardus RΓΌcker

Camunda utens ad facilem orchestration fundatur in CETERA et Workflow Engine (non Java)

Saepe de architectura microservice cum hominibus non-Java: C#, Node.JS/JavaScript tincidunt, vel fanaticus Golang. Omnes hae spectant ad hoc quod orchestrationem machinam indigent in architectura microservii vel solum instrumenti ad optimize operis influxum et facultatem ad ordinem, occasionem temporis, Saga et transactions compensandi, acquirendi.

BPM platform cum aperto fonte de Camunda magna ad talia negotia. Amicitia elit una e clavis notis producti. Sed si documenta eius spectes, imprimere potes amicitiam Camundae imprimis ad tincidunt Javae intendendos. In suggestu multas opportunitates praebet suas functiones et extensiones connectendi, sed omnia in Java facta sunt. Itane?

Minime! Re vera, facile Camundam sine aliqua Iava scientia currere potes et architecturam ad codicem in quavis lingua electionis tuae configurare. In hoc articulo videbimus:

  • architectura fundamentalis;
  • REQUIES API;
  • consilium de exsistentibus bibliothecis clientis pro linguis praeter Javam;
  • exemplum utendi C# et Node.JS;
  • vias currere Camunda servo (Docker vel Tomcat).

Architecture

Camunda in Java scriptum est et machinam Virtualem in Java (JVM) ad currendum requirit. Camunda CESTUM API praebet ut quavis lingua scribere te sinat et uteris CUNCTA cum Camunda:

Camunda utens ad facilem orchestration fundatur in CETERA et Workflow Engine (non Java)

Operationes in Camunda definiuntur in BPMN, quod est fasciculus XML plerumque. Potest uti exemplum Camunda Modeler.

Cursor Camunda per praeclarum fabricatum Docker image

Via facillima ad Camundam currendum est ut Docker. Modi alternativae currentis Camundae describuntur infra in hoc articulo.

Camunda utens ad facilem orchestration fundatur in CETERA et Workflow Engine (non Java)

Hic, modo curre;

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

De Linux, Java Machinis Virtualis seu Tomcats non habes solliciti. Dockerfiles et documenta fundamentalia (exempli gratia, instructiones pro connectendis cum databases requisitis) praesto sunt apud Github.

Si vis Camunda Enterprise Editionis currere, facile mutare potes Dockerfile.

Sed una downside est ad currendum Camunda utens Docker: finem habebis cum versione Tomcat quae non semper includit fixas ultimas. Ut hoc aliquo modo circumire possis, imaginem Tuam Docker ex desiderato Tomcat distributione, ut in hoc exemplo, monstratum est, vel unam ex solutionibus infra descriptis utere.

Explicare processus Model

Intueamur exemplum utens Saga templates classicae peregrinationis libri ubi vis tres actiones in ordine trigger et eleganter bonas actiones in casu posterioris defectus recompensare. Forma in BPMN praesentata, hoc simile videtur;

Camunda utens ad facilem orchestration fundatur in CETERA et Workflow Engine (non Java)

Nunc uti potes CETERA API ad processum exemplar instruere. Dicamus te servasse ut trip.bpmn et Camunda per Docker cucurrit sic praesto fuit in 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

Nunc currere potes nova exempla workflow CETERA API utens et transeat notitia quam vis videre sicut instantia variabilium workflow:

  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

Proxima interesting quaestio est quomodo agendi modum facit felis Camunda sicut currus libri? Camunda officia statim vocare non potest (Push-Principle), utens aliquo constructo-in . connexionessed etiam opuscula quaedam in queue constructa. Operarius deinde opus recipere potest items per REQUIEM, opus perage, et ad Camundam perfectionem referre (Pull-Principle).

Camunda utens ad facilem orchestration fundatur in CETERA et Workflow Engine (non Java)

Primum ergo debes facere arcessAndLock (quia alii operarii opera simul recipere possunt systema scandere);

  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

Et dices ad Camunda that artifex habet opus suum (nota quod negotium externum id in prima petitione receptum inire debet);

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

Id est - non opus habes ut Java tantum, iure? Et hoc satis est ut incipias!

Client Libraries

Reliqua API vocant facile est in lingua programmandi. In JavaScript commodum est utendo JQuery hoc facere, et in C# System.Net.Http et Newtonsoft.Json uti potes. Sed hoc tempus erit. Sic uti potes aliquo cliente bibliotheca.

Plures in promptu sunt hodierni bibliothecae clientium paratae:

  • html: Link. Camunda subnixus;
  • Java, Link. Camunda subnixus;
  • C #:Link ΠΈ Link. Utraque haec incepta in medium statum habent et nullam fere actionem habent, sed ut bonum principium indi- cant;
  • PHP: Link bibliotheca non admodum completa est et API mutationes recentissimas non includit, sed scio inceptis qui ea utuntur.

Exceptis JavaScript et Java, bibliothecae clientis Camundae producti non sunt. Ne expectes eos omnes lineamenta Camundae API REQUIEM adiuvare. Quia bibliotheca non praebet certam plumam non significat eam ibi non esse, semper reprehendo Camunda REST API. Inceptis typicis utuntur bibliothecas ut principium et template.

Exemplum cum C#

Uti supra bibliothecam clientem, simpliciter scribere possumus:

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

Plena operationis fons codice reperiri potest online: Link. Aliud exemplum est available at Link.

Exemplum cum 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();

Plura reperiri possunt in pagina github.com

Alternis modis incipere Camunda

Custom Docker image with "Bellum Camunda standalone"

Velut jocus ad imaginem Docker Camundae praestructam, te ipsum Tomcat parare potes (exempli gratia, in imaginibus officiali Docker Tomcat) et deinde Camunda in eam effingo ut unum e scriniis bellicis sic dictis.

Camunda utens ad facilem orchestration fundatur in CETERA et Workflow Engine (non Java)

Si multa adiuncta requisita habes et ambitum Iava aedificare potes, bellum Camunda Standalone etiam configurare potes. Maven extrue ut in his exemplis: "adifica" Maven cum bello configuratione aut ecclesiam Maven cum deaurabis.

Launching the Camunda Tomcat distribution

Alia optio est simpliciter download distributionem Camunda Tomcat, eam unzip et currere. Ad hoc faciendum, solum opus est in computatro tuo Java Runtime Environment (JRE) inauguratus. Facile potest esse hinc download.

Camunda utens ad facilem orchestration fundatur in CETERA et Workflow Engine (non Java)

Mutare database vel aliud facere debes ut Tomcat configurare descriptus est in documentis. Scio Tomcat complicatam videri, sed est actu valde simplex. Et Google responsa habet ad omnia quae in processu necessaria sunt.

Camunda currit usura Tomcat

Ultimum est, te Tomcat configurare et in ea Camundam instituere; post institutionem descriptionem. Hoc tibi facultatem dabit ut quamlibet versionem Tomcat quam mavis, vel, exempli gratia, eam in Windows ministrum instituas.

Lorem Camunda in productionem

Typice, hoc te requiret ut aliquod extremum destinatum facias ut Camunda currit. Camunda lineas habet quae hoc accurate describuntur, sed eas in hoc articulo non attingo - unum tantum exemplum dabo: distributio QUIES API non figuratur ad authenticas per defaltam. Hoc fortasse vis mutare.

quoquo

Ut animadvertere licet, incepit a Camunda perfacile, cuiuscumque linguae uteris. Clavis est ut omnis communicatio fiat per CAETERA API. Simplex quoque institutionis est, praesertim cum Docker utens.

Source: www.habr.com