اې حبره! زه ستاسو پام ته د مقالې ژباړه وړاندې کوم
07.07.2020/XNUMX/XNUMX، ژباړه
زه ډیری وختونه د غیر جاوا خلکو سره د مایکروسافټ جوړښت په اړه بحث کوم: C#، Node.JS/JavaScript پراختیا کونکي، یا د ګولنګ مینه وال. دا ټول د دې حقیقت سره مخ دي چې دوی د مایکرو سرویس معمارۍ کې د آرکیسټریشن انجن ته اړتیا لري یا یوازې د کاري فلو اصلاح کولو او د ترتیب کولو وړتیا ترلاسه کولو ، وخت پای ته رسیدو ، ساګا او معاوضې معاملې کولو وړتیا ترلاسه کولو لپاره.
د BPM پلیټ فارم سره
نه! په حقیقت کې ، تاسو کولی شئ په اسانۍ سره د جاوا پوهې پرته کامونډا چل کړئ او د خپلې خوښې هرې ژبې کې کوډ کولو لپاره جوړښت تنظیم کړئ. پدې مقاله کې به موږ وګورو:
- بنسټیز جوړښت؛
- REST API
- د جاوا پرته د نورو ژبو لپاره د موجوده مراجعینو کتابتونونو په اړه مشوره؛
- د C# او Node.JS کارولو مثال؛
- د کامونډا سرور چلولو لارې (ډاکر یا ټامکاټ).
معمارۍ
کیمونډا په جاوا کې لیکل شوی او د چلولو لپاره د جاوا مجازی ماشین (JVM) ته اړتیا لري. کامونډا یو REST API وړاندې کوي چې تاسو ته اجازه درکوي په هره ژبه کې چې تاسو یې غواړئ ولیکئ او د کامونډا سره REST وکاروئ:
په کامونډا کې کاري جریان په BPMN کې تعریف شوي، کوم چې اساسا د XML فایل دی. دا په کارولو سره ماډل کیدی شي
د مخکې جوړ شوي ډاکر عکس له لارې کیمونډا چلول
د کیمونډا چلولو ترټولو اسانه لار د ډاکر کارول دي. د کامونډا چلولو بدیل لارې په دې مقاله کې وروسته بیان شوي.
په دې حالت کې، یوازې چلول:
docker run -d -p 8080:8080 camunda/camunda-bpm-platform:latest
تاسو اړتیا نلرئ د لینکس ، جاوا مجازی ماشینونو یا ټامکاټس په اړه اندیښنه ولرئ. Dockerfiles او بنسټیز اسناد (د مثال په توګه، د اړتیا وړ ډیټابیسونو سره د نښلولو لارښوونې) په کې شتون لري
که تاسو غواړئ د کیمونډا انټرپریس ایډیشن چل کړئ، تاسو کولی شئ په اسانۍ سره بدل کړئ
په هرصورت، د ډاکر په کارولو سره د کامونډا چلولو لپاره یو نیمګړتیا شتون لري: تاسو به د ټامکاټ نسخه سره پای ته ورسیږئ چې تل وروستي اصلاحات پکې شامل نه وي. په یو ډول د دې شاوخوا ترلاسه کولو لپاره ، تاسو کولی شئ د مطلوب ټامکاټ توزیع پراساس پخپله د ډاکر عکس رامینځته کړئ ، لکه څنګه چې پدې مثال کې ښودل شوي ، یا لاندې تشریح شوي حلونو څخه یو وکاروئ.
د پروسې ماډل ځای په ځای کول
راځئ چې د کلاسیک سفر بکینګ لپاره د ساګا ټیمپلیټ کارولو یوه بیلګه وګورو چیرې چې تاسو غواړئ په پرله پسې ډول درې کړنې پیل کړئ او د وروسته ناکامۍ په صورت کې په ښه توګه بریالي عملونه جبران کړئ. د BPMN بڼه کې وړاندې شوی، دا داسې ښکاري:
اوس تاسو کولی شئ وکاروئ
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
اوس تاسو چلولی شئ
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)، د ځینې جوړ شوي په کارولو سره
نو لومړی تاسو ته اړتیا لرئ
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
بیا کمیونډا ته ووایه چې
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();
نور معلومات په ویب پاڼه کې موندل کیدی شي
د کامونډا پیل کولو بدیل لارې
د ګمرک ډاکر عکس د "کامونډا سټایلون جنګ" سره
د کامونډا څخه دمخه جوړ شوي ډاکر عکس ته د بدیل په توګه ، تاسو کولی شئ پخپله ټامکاټ چمتو کړئ (د مثال په توګه ، د رسمي ډاکر ټامکاټ عکسونو پراساس) او بیا کیمونډا په دې کې د یو له تش په نامه WAR فایلونو په توګه کاپي کړئ.
که تاسو ډیری اضافي اړتیاوې لرئ او د جاوا جوړونې چاپیریال دودیز کولی شئ، تاسو کولی شئ د کیمونډا سټنډول جنګ هم تنظیم کړئ. د دې مثالونو په څیر د ماون جوړونه تنظیم کړئ: جوړول
د کامونډا ټامکاټ توزیع پیل کول
بل اختیار دا دی چې په ساده ډول د کامونډ ټامکاټ توزیع ډاونلوډ کړئ ، دا خلاص کړئ او چل یې کړئ. د دې کولو لپاره، تاسو یوازې په خپل کمپیوټر کې د Java Runtime Environment (JRE) نصبولو ته اړتیا لرئ. دا په اسانۍ سره کیدی شي
د ډیټابیس بدلولو یا بل څه کولو لپاره تاسو اړتیا لرئ د Tomcat په څیر تنظیم کړئ
د Tomcat په کارولو سره Camunda چلول
وروستی بدیل دا دی چې ټامکاټ پخپله تنظیم کړئ او کیمونډا پکې نصب کړئ ،
د کمونډا په تولید کې پیل کول
عموما، دا به تاسو ته اړتیا ولري چې د کیمونډا چلولو لپاره یو څه وروستی ترتیب ترسره کړئ. کیمونډا لارښوونې لري چې دا په خورا تفصیل سره تشریح کوي، مګر زه به په دې مقاله کې دوی ته لاس ورنکړم - زه به یوازې یو مثال ورکړم: د توزیع REST API د ډیفالټ لخوا د تصدیق لپاره نه دی ترتیب شوی. تاسو ممکن دا بدل کړئ.
سمول
لکه څنګه چې تاسو شاید یادونه کړې وي، د کامونډا سره پیل کول خورا اسانه دي، پرته له دې چې تاسو کومه ژبه کاروئ. کلیدي ټکی دا دی چې ټولې اړیکې د REST API له لارې ترسره کیږي. نصب کول هم خورا ساده دي ، په ځانګړي توګه کله چې د ډاکر کارول.
سرچینه: www.habr.com