د REST او کاري فلو انجن پراساس د اسانه آرکیسټریشن لپاره کیمونډا کارول (نه جاوا)

اې حبره! زه ستاسو پام ته د مقالې ژباړه وړاندې کوم "کامونډا د کارولو اسانه REST پراساس آرکیسټریشن او د کاري فلو انجن په توګه وکاروئ (پرته له جاوا لمس کولو)" د Bernd Rücker لخوا.

07.07.2020/XNUMX/XNUMX، ژباړه مقالې Bernd Rücker

د REST او کاري فلو انجن پراساس د اسانه آرکیسټریشن لپاره کیمونډا کارول (نه جاوا)

زه ډیری وختونه د غیر جاوا خلکو سره د مایکروسافټ جوړښت په اړه بحث کوم: C#، Node.JS/JavaScript پراختیا کونکي، یا د ګولنګ مینه وال. دا ټول د دې حقیقت سره مخ دي چې دوی د مایکرو سرویس معمارۍ کې د آرکیسټریشن انجن ته اړتیا لري یا یوازې د کاري فلو اصلاح کولو او د ترتیب کولو وړتیا ترلاسه کولو ، وخت پای ته رسیدو ، ساګا او معاوضې معاملې کولو وړتیا ترلاسه کولو لپاره.

د BPM پلیټ فارم سره د کامونډا څخه خلاص سرچینه د داسې کارونو لپاره عالي. د پراختیا کونکي دوستي د محصول یو له مهمو ځانګړتیاو څخه دی. مګر که تاسو د دې اسنادو ته ګورئ، تاسو ممکن دا تاثر ترلاسه کړئ چې د کیمونډا ملګرتیا په عمده توګه د جاوا پراختیا کونکو لپاره ده. پلیټ فارم ستاسو د خپلو دندو او توسیعونو سره وصل کولو لپاره ډیری فرصتونه چمتو کوي ، مګر دا ټول په جاوا کې ترسره کیږي. ایا دا واقعا دی؟

نه! په حقیقت کې ، تاسو کولی شئ په اسانۍ سره د جاوا پوهې پرته کامونډا چل کړئ او د خپلې خوښې هرې ژبې کې کوډ کولو لپاره جوړښت تنظیم کړئ. پدې مقاله کې به موږ وګورو:

  • بنسټیز جوړښت؛
  • REST API
  • د جاوا پرته د نورو ژبو لپاره د موجوده مراجعینو کتابتونونو په اړه مشوره؛
  • د C# او Node.JS کارولو مثال؛
  • د کامونډا سرور چلولو لارې (ډاکر یا ټامکاټ).

معمارۍ

کیمونډا په جاوا کې لیکل شوی او د چلولو لپاره د جاوا مجازی ماشین (JVM) ته اړتیا لري. کامونډا یو REST API وړاندې کوي چې تاسو ته اجازه درکوي په هره ژبه کې چې تاسو یې غواړئ ولیکئ او د کامونډا سره REST وکاروئ:

د REST او کاري فلو انجن پراساس د اسانه آرکیسټریشن لپاره کیمونډا کارول (نه جاوا)

په کامونډا کې کاري جریان په BPMN کې تعریف شوي، کوم چې اساسا د XML فایل دی. دا په کارولو سره ماډل کیدی شي کیمونډا ماډلر.

د مخکې جوړ شوي ډاکر عکس له لارې کیمونډا چلول

د کیمونډا چلولو ترټولو اسانه لار د ډاکر کارول دي. د کامونډا چلولو بدیل لارې په دې مقاله کې وروسته بیان شوي.

د REST او کاري فلو انجن پراساس د اسانه آرکیسټریشن لپاره کیمونډا کارول (نه جاوا)

په دې حالت کې، یوازې چلول:

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

تاسو اړتیا نلرئ د لینکس ، جاوا مجازی ماشینونو یا ټامکاټس په اړه اندیښنه ولرئ. Dockerfiles او بنسټیز اسناد (د مثال په توګه، د اړتیا وړ ډیټابیسونو سره د نښلولو لارښوونې) په کې شتون لري Github.

که تاسو غواړئ د کیمونډا انټرپریس ایډیشن چل کړئ، تاسو کولی شئ په اسانۍ سره بدل کړئ ډکولر.

په هرصورت، د ډاکر په کارولو سره د کامونډا چلولو لپاره یو نیمګړتیا شتون لري: تاسو به د ټامکاټ نسخه سره پای ته ورسیږئ چې تل وروستي اصلاحات پکې شامل نه وي. په یو ډول د دې شاوخوا ترلاسه کولو لپاره ، تاسو کولی شئ د مطلوب ټامکاټ توزیع پراساس پخپله د ډاکر عکس رامینځته کړئ ، لکه څنګه چې پدې مثال کې ښودل شوي ، یا لاندې تشریح شوي حلونو څخه یو وکاروئ.

د پروسې ماډل ځای په ځای کول

راځئ چې د کلاسیک سفر بکینګ لپاره د ساګا ټیمپلیټ کارولو یوه بیلګه وګورو چیرې چې تاسو غواړئ په پرله پسې ډول درې کړنې پیل کړئ او د وروسته ناکامۍ په صورت کې په ښه توګه بریالي عملونه جبران کړئ. د BPMN بڼه کې وړاندې شوی، دا داسې ښکاري:

د REST او کاري فلو انجن پراساس د اسانه آرکیسټریشن لپاره کیمونډا کارول (نه جاوا)

اوس تاسو کولی شئ وکاروئ د پروسې ماډل پلي کولو لپاره REST API. راځئ چې ووایو تاسو دا د trip.bpmn په توګه خوندي کړی او کیمونډا د ډاکر له لارې پرمخ وړئ نو دا په لوکل هوسټ کې شتون لري: 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

اوس تاسو چلولی شئ نوي کاري جریان مثالونه د REST API کارول او هغه ډیټا تیرول چې تاسو غواړئ د کاري فلو مثال متغیر په توګه وګورئ:

  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

بله په زړه پورې پوښتنه دا ده چې کامونډا څنګه پروسیجرونه رامینځته کوي لکه د موټر بک کولو؟ کیمونډا نشي کولی یوازې سمدستي خدماتو ته زنګ ووهي (Push-Principle)، د ځینې جوړ شوي په کارولو سره نښلونکي، مګر د کار توکي هم په یو ډول جوړ شوي کتار کې واچوئ. بیا کارګر کولی شي د REST له لارې د کار توکي ترلاسه کړي، کار ترسره کړي، او کامونډا (Pull-principle) ته د بشپړیدو راپور ورکړي.

د REST او کاري فلو انجن پراساس د اسانه آرکیسټریشن لپاره کیمونډا کارول (نه جاوا)

نو لومړی تاسو ته اړتیا لرئ راوړل او لاک (ځکه چې نور کارګران کولی شي د سیسټم اندازه کولو لپاره په ورته وخت کې دندې ترلاسه کړي):

  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

بیا کمیونډا ته ووایه چې کارګر خپل کار بشپړ کړ (یادونه وکړئ چې تاسو باید په لومړۍ غوښتنه کې ترلاسه شوي بهرني کاري ID داخل کړئ):

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

دا دی - تاسو تر دې دمه کوم جاوا ته اړتیا نه لرئ، سمه ده؟ او دا د پیل کولو لپاره بس دی!

د مراجعینو کتابتونونه

REST API ته زنګ وهل په هره برنامه ژبه کې اسانه دي. په جاواسکریپټ کې د JQuery په کارولو سره دا کار کول اسانه دي، او په C# کې تاسو کولی شئ System.Net.Http او Newtonsoft.Json وکاروئ. مګر دا به وخت ونیسي. نو تاسو کولی شئ یوازې د پیرودونکي کتابتون وکاروئ.

اوس مهال ډیری چمتو شوي پیرودونکي کتابتونونه شتون لري:

  • جاواسکریپټ: لینک. د کیمونډا لخوا ملاتړ شوی؛
  • جاوا: لینک. د کیمونډا لخوا ملاتړ شوی؛
  • سي #:لینک и لینک. دا دواړه پروژې په منځني حالت کې دي او په حقیقت کې هیڅ فعالیت نلري، مګر کولی شي د ښه پیل ټکي په توګه کار وکړي.
  • پی ایچ پی: لینک یو ډیر بشپړ کتابتون ندی او د API وروستي بدلونونه پکې شامل ندي، مګر زه د هغو پروژو څخه پوهیږم چې دا کاروي.

د جاواسکریپټ او جاوا استثنا سره، د مراجعینو کتابتونونه پخپله د کیمونډا محصول برخه نه ده. له دوی څخه تمه مه کوئ چې د کیمونډا REST API ځانګړتیاو ملاتړ وکړي. یوازې د دې لپاره چې یو کتابتون یو ځانګړی خصوصیت نه وړاندې کوي پدې معنی ندي چې دا شتون نلري، تل د کیمونډا REST API وګورئ. عادي پروژې کتابتونونه د پیل ټکي او ټیمپلیټ په توګه کاروي.

د C# سره بیلګه

د پورته مراجعینو کتابتون په کارولو سره، موږ کولی شو په ساده ډول ولیکئ:

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

بشپړ کاري سرچینې کوډ آنلاین موندل کیدی شي: لینک. بله بیلګه په کې شتون لري لینک.

د 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();

نور معلومات په ویب پاڼه کې موندل کیدی شي github.com

د کامونډا پیل کولو بدیل لارې

د ګمرک ډاکر عکس د "کامونډا سټایلون جنګ" سره

د کامونډا څخه دمخه جوړ شوي ډاکر عکس ته د بدیل په توګه ، تاسو کولی شئ پخپله ټامکاټ چمتو کړئ (د مثال په توګه ، د رسمي ډاکر ټامکاټ عکسونو پراساس) او بیا کیمونډا په دې کې د یو له تش په نامه WAR فایلونو په توګه کاپي کړئ.

د REST او کاري فلو انجن پراساس د اسانه آرکیسټریشن لپاره کیمونډا کارول (نه جاوا)

که تاسو ډیری اضافي اړتیاوې لرئ او د جاوا جوړونې چاپیریال دودیز کولی شئ، تاسو کولی شئ د کیمونډا سټنډول جنګ هم تنظیم کړئ. د دې مثالونو په څیر د ماون جوړونه تنظیم کړئ: جوړول د جګړې ترتیب سره Maven یا مجلس د پوښښ سره Maven.

د کامونډا ټامکاټ توزیع پیل کول

بل اختیار دا دی چې په ساده ډول د کامونډ ټامکاټ توزیع ډاونلوډ کړئ ، دا خلاص کړئ او چل یې کړئ. د دې کولو لپاره، تاسو یوازې په خپل کمپیوټر کې د Java Runtime Environment (JRE) نصبولو ته اړتیا لرئ. دا په اسانۍ سره کیدی شي له دې ځایه ډاونلوډ کړئ.

د REST او کاري فلو انجن پراساس د اسانه آرکیسټریشن لپاره کیمونډا کارول (نه جاوا)

د ډیټابیس بدلولو یا بل څه کولو لپاره تاسو اړتیا لرئ د Tomcat په څیر تنظیم کړئ په اسنادو کې تشریح شوي. زه پوهیږم Tomcat ممکن پیچلي ښکاري، مګر دا واقعیا خورا ساده ده. او ګوګل د هر هغه څه ځوابونه لري چې تاسو یې په پروسه کې ورته اړتیا لرئ.

د Tomcat په کارولو سره Camunda چلول

وروستی بدیل دا دی چې ټامکاټ پخپله تنظیم کړئ او کیمونډا پکې نصب کړئ ، د نصبولو توضیحات تعقیب کړئ. دا به تاسو ته فرصت درکړي چې د Tomcat کومه نسخه وکاروئ چې تاسو یې غوره کوئ، یا د مثال په توګه، دا د وینډوز خدمت په توګه نصب کړئ.

د کمونډا په تولید کې پیل کول

عموما، دا به تاسو ته اړتیا ولري چې د کیمونډا چلولو لپاره یو څه وروستی ترتیب ترسره کړئ. کیمونډا لارښوونې لري چې دا په خورا تفصیل سره تشریح کوي، مګر زه به په دې مقاله کې دوی ته لاس ورنکړم - زه به یوازې یو مثال ورکړم: د توزیع REST API د ډیفالټ لخوا د تصدیق لپاره نه دی ترتیب شوی. تاسو ممکن دا بدل کړئ.

سمول

لکه څنګه چې تاسو شاید یادونه کړې وي، د کامونډا سره پیل کول خورا اسانه دي، پرته له دې چې تاسو کومه ژبه کاروئ. کلیدي ټکی دا دی چې ټولې اړیکې د REST API له لارې ترسره کیږي. نصب کول هم خورا ساده دي ، په ځانګړي توګه کله چې د ډاکر کارول.

سرچینه: www.habr.com

Add a comment