REST மற்றும் ஒர்க்ஃப்ளோ எஞ்சின் (ஜாவா இல்லை) அடிப்படையிலான எளிதான ஆர்கெஸ்ட்ரேஷனுக்கு கேமுண்டாவைப் பயன்படுத்துதல்

ஹே ஹப்ர்! கட்டுரையின் மொழிபெயர்ப்பை உங்கள் கவனத்திற்கு முன்வைக்கிறேன் "கமுண்டாவைப் பயன்படுத்த எளிதான REST-அடிப்படையிலான ஆர்கெஸ்ட்ரேஷன் மற்றும் பணிப்பாய்வு இயந்திரமாக (ஜாவாவைத் தொடாமல்)" பெர்ன்ட் ரூக்கர் மூலம்.

07.07.2020/XNUMX/XNUMX, மொழிபெயர்ப்பு கட்டுரைகள் பெர்ன்ட் ரக்கர்

REST மற்றும் ஒர்க்ஃப்ளோ எஞ்சின் (ஜாவா இல்லை) அடிப்படையிலான எளிதான ஆர்கெஸ்ட்ரேஷனுக்கு கேமுண்டாவைப் பயன்படுத்துதல்

நான் ஜாவா அல்லாதவர்களுடன் மைக்ரோ சர்வீஸ் கட்டமைப்பைப் பற்றி அடிக்கடி விவாதிப்பேன்: சி# டெவலப்பர்கள், நோட்.ஜேஎஸ்/ஜாவாஸ்கிரிப்ட் டெவலப்பர்கள் அல்லது கோலாங் ஆர்வலர்கள். மைக்ரோ சர்வீஸ் கட்டமைப்பில் ஒரு ஆர்கெஸ்ட்ரேஷன் பொறிமுறை அல்லது பணிப்பாய்வுகளை ஒழுங்குபடுத்துவதற்கும், ஆர்டர் செய்யும் திறனைப் பெறுவதற்கும், காலக்கெடு, சாகா மற்றும் பரிவர்த்தனைகளை ஈடுசெய்வதற்கும் ஒரு கருவி தேவை என்பதை அவர்கள் அனைவரும் எதிர்கொள்கின்றனர்.

உடன் BPM இயங்குதளம் கமுண்டாவிலிருந்து திறந்த மூல அத்தகைய பணிகளுக்கு சிறந்தது. டெவலப்பர் நட்பு என்பது தயாரிப்பின் முக்கிய அம்சங்களில் ஒன்றாகும். ஆனால் நீங்கள் அதன் ஆவணங்களைப் பார்த்தால், கமுண்டாவின் "நட்பு" முக்கியமாக ஜாவா டெவலப்பர்களை இலக்காகக் கொண்டது என்ற எண்ணத்தை நீங்கள் பெறலாம். உங்கள் சொந்த செயல்பாடுகள் மற்றும் நீட்டிப்புகளை இணைப்பதற்கான பல விருப்பங்களை இயங்குதளம் வழங்குகிறது, ஆனால் இவை அனைத்தும் ஜாவாவில் செய்யப்படுகின்றன. அது உண்மையா?

இல்லை! உண்மையில், நீங்கள் எந்த ஜாவா அறிவும் இல்லாமல் எளிதாக Camunda ஐ இயக்கலாம் மற்றும் நீங்கள் விரும்பும் எந்த மொழியிலும் குறியீட்டிற்கான கட்டமைப்பை அமைக்கலாம். இந்த கட்டுரையில், நாம் பார்ப்போம்:

  • அடிப்படை கட்டிடக்கலை;
  • REST API
  • ஜாவாவைத் தவிர மற்ற மொழிகளுக்கான கிளையன்ட் லைப்ரரிகளில் ஆலோசனை;
  • C# மற்றும் Node.JS ஐப் பயன்படுத்துவதற்கான எடுத்துக்காட்டு;
  • Camunda சேவையகத்தை இயக்குவதற்கான வழிகள் (Docker அல்லது Tomcat).

கட்டிடக்கலை

Camunda ஜாவாவில் எழுதப்பட்டுள்ளது மற்றும் இயக்குவதற்கு Java Virtual Machine (JVM) தேவை. Camunda ஒரு REST API ஐ வழங்குகிறது, இது நீங்கள் விரும்பும் எந்த மொழியிலும் எழுதவும், Camunda உடன் REST ஐப் பயன்படுத்தவும் அனுமதிக்கிறது:

REST மற்றும் ஒர்க்ஃப்ளோ எஞ்சின் (ஜாவா இல்லை) அடிப்படையிலான எளிதான ஆர்கெஸ்ட்ரேஷனுக்கு கேமுண்டாவைப் பயன்படுத்துதல்

கமுண்டாவில் உள்ள பணிப்பாய்வு BPMN இல் வரையறுக்கப்படுகிறது, இது அடிப்படையில் ஒரு எக்ஸ்எம்எல் கோப்பாகும். இது மாதிரியாகக் கொள்ளலாம் கமுண்டா மாடலர்.

முன்பே கட்டமைக்கப்பட்ட டோக்கர் படத்தின் மூலம் கமுண்டாவை இயக்குகிறது

கமுண்டாவை இயக்குவதற்கான எளிதான வழி டோக்கரைப் பயன்படுத்துவதாகும். கமுண்டாவைத் தொடங்குவதற்கான மாற்று வழிகள் இந்தக் கட்டுரையில் பின்னர் விவரிக்கப்பட்டுள்ளன.

REST மற்றும் ஒர்க்ஃப்ளோ எஞ்சின் (ஜாவா இல்லை) அடிப்படையிலான எளிதான ஆர்கெஸ்ட்ரேஷனுக்கு கேமுண்டாவைப் பயன்படுத்துதல்

இந்த வழக்கில், வெறுமனே இயக்கவும்:

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

Linux, JVM அல்லது Tomcats பற்றி நீங்கள் கவலைப்பட வேண்டியதில்லை. Dockerfiles மற்றும் அடிப்படை ஆவணங்கள் (உதாரணமாக, தேவையான தரவுத்தளங்களுடன் இணைப்பதற்கான வழிமுறைகள்) கிடைக்கின்றன கிட்ஹப்.

நீங்கள் Camunda Enterprise பதிப்பை இயக்க விரும்பினால், நீங்கள் எளிதாக மாற்றலாம் டோக்கர்ஃபைல்.

இருப்பினும், டோக்கரைப் பயன்படுத்தி கேமுண்டாவை இயக்குவதில் ஒரு குறைபாடு உள்ளது: நீங்கள் எப்போதும் சமீபத்திய திருத்தங்களைச் சேர்க்காத டாம்கேட்டின் பதிப்பைப் பெறுவீர்கள். இதை எப்படியாவது சமாளிக்க, இந்த எடுத்துக்காட்டில் காட்டப்பட்டுள்ளபடி, விரும்பிய டாம்கேட் விநியோகத்தின் அடிப்படையில் நீங்களே ஒரு டோக்கர் படத்தை உருவாக்கலாம் அல்லது கீழே விவரிக்கப்பட்டுள்ள தீர்வுகளில் ஒன்றைப் பயன்படுத்தலாம்.

ஒரு செயல்முறை மாதிரியைப் பயன்படுத்துதல்

ஒரு உன்னதமான பயண முன்பதிவுக்கான சாகா டெம்ப்ளேட்டைப் பயன்படுத்தி ஒரு உதாரணத்தைப் பார்ப்போம், அங்கு நீங்கள் ஒரு வரிசையில் மூன்று செயல்களைத் தூண்ட வேண்டும் மற்றும் பின்னர் தோல்வியுற்றால் வெற்றிகரமான செயல்களை அழகாக ஈடுசெய்ய வேண்டும். 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

அடுத்த சுவாரஸ்யமான கேள்வி: ஒரு காரை முன்பதிவு செய்வது போன்ற நடைமுறைகளை Camunda எவ்வாறு அழைக்கிறது? Camunda சில உள்ளமைவைப் பயன்படுத்தி உடனடியாக சேவைகளை மட்டும் அழைக்க முடியாது (புஷ்-பிரிசிபிள்). இணைப்பிகள், ஆனால் வேலை பொருட்களை ஒரு வகையான உள்ளமைக்கப்பட்ட வரிசையில் வைக்கவும். தொழிலாளி REST மூலம் பணிப் பொருட்களைப் பெறலாம், வேலையைச் செய்யலாம் மற்றும் முடித்ததை Camunda க்கு (புல்-பிரிசிபிள்) தெரிவிக்கலாம்.

REST மற்றும் ஒர்க்ஃப்ளோ எஞ்சின் (ஜாவா இல்லை) அடிப்படையிலான எளிதான ஆர்கெஸ்ட்ரேஷனுக்கு கேமுண்டாவைப் பயன்படுத்துதல்

எனவே முதலில் நீங்கள் செய்ய வேண்டும் fetchAndLock (ஏனெனில் மற்ற தொழிலாளர்கள் ஒரே நேரத்தில் கணினியை அளவிடுவதற்கு பணிகளைப் பெறலாம்):

  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 ஐப் பயன்படுத்தியும் வசதியாக செய்யப்படுகிறது. ஆனால் இதற்கு நேரம் எடுக்கும். எனவே நீங்கள் சில கிளையன்ட் நூலகத்தைப் பயன்படுத்தலாம்.

தற்போது பல ஆயத்த கிளையன்ட் நூலகங்கள் உள்ளன:

  • ஜாவாஸ்கிரிப்ட்: ссылка. காமுண்டாவால் ஆதரிக்கப்பட்டது;
  • ஜாவா: ссылка. காமுண்டாவால் ஆதரிக்கப்பட்டது;
  • சி #:ссылка и ссылка. இந்த இரண்டு திட்டங்களும் இடைநிலை நிலையில் உள்ளன மற்றும் நடைமுறையில் செயலற்ற நிலையில் உள்ளன, ஆனால் ஒரு நல்ல தொடக்க புள்ளியாக செயல்பட முடியும்;
  • PHP: இப்போது ссылка இது மிகவும் முழுமையான நூலகம் அல்ல, சமீபத்திய API மாற்றங்கள் இதில் இல்லை, ஆனால் அதைப் பயன்படுத்தும் திட்டங்கள் பற்றி எனக்குத் தெரியும்.

ஜாவாஸ்கிரிப்ட் மற்றும் ஜாவாவைத் தவிர, கிளையன்ட் லைப்ரரிகள் கமுண்டா தயாரிப்பின் ஒரு பகுதியாக இல்லை. Camunda இன் REST API இன் அனைத்து அம்சங்களையும் அவர்கள் ஆதரிப்பார்கள் என்று எதிர்பார்க்க வேண்டாம். நூலகம் ஒரு குறிப்பிட்ட அம்சத்தை வழங்காததால், அது இல்லை என்று அர்த்தமல்ல, எப்போதும் Camunda REST API ஐச் சரிபார்க்கவும். வழக்கமான திட்டங்கள் நூலகங்களை ஒரு தொடக்க புள்ளியாகவும் டெம்ப்ளேட்டாகவும் பயன்படுத்துகின்றன.

சி # உதாரணம்

மேலே உள்ள கிளையன்ட் நூலகத்தைப் பயன்படுத்தி, நாம் எளிமையாக எழுதலாம்:

  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

கமுண்டாவைத் தொடங்க மாற்று வழிகள்

"Camunda standalone WAR" உடன் தனிப்பயன் டோக்கர் படம்

கமுண்டாவில் இருந்து முன்பே கட்டமைக்கப்பட்ட டோக்கர் படத்திற்கு மாற்றாக, நீங்கள் டாம்கேட்டை நீங்களே தயார் செய்து கொள்ளலாம் (உதாரணமாக, அதிகாரப்பூர்வ டோக்கர் டாம்கேட் படங்களின் அடிப்படையில்) பின்னர் அதில் காமுண்டாவை WAR கோப்புகள் என அழைக்கப்படும் ஒன்றாக நகலெடுக்கலாம்.

REST மற்றும் ஒர்க்ஃப்ளோ எஞ்சின் (ஜாவா இல்லை) அடிப்படையிலான எளிதான ஆர்கெஸ்ட்ரேஷனுக்கு கேமுண்டாவைப் பயன்படுத்துதல்

உங்களிடம் பல கூடுதல் தேவைகள் இருந்தால் மற்றும் ஜாவா உருவாக்க சூழலைத் தனிப்பயனாக்க முடியும் என்றால், நீங்கள் Camunda தனித்துப் போரை உள்ளமைக்கலாம். இந்த உதாரணங்களில் உள்ளதைப் போல ஒரு மேவன் கட்டமைப்பை அமைக்கவும்: உருவாக்கவும் போர் கட்டமைப்பு கொண்ட மேவன் அல்லது சட்டசபை மேலோடு மேவன்.

Camunda Tomcat விநியோகத்தைத் தொடங்குதல்

மற்றொரு விருப்பம் Camunda Tomcat விநியோகத்தை வெறுமனே பதிவிறக்கம் செய்து, அதை அவிழ்த்து, அதை இயக்கவும். இதற்கு உங்கள் கணினியில் நிறுவப்பட்ட Java Runtime Environment (JRE) மட்டுமே தேவைப்படுகிறது. இது எளிதாக முடியும் இங்கிருந்து பதிவிறக்கவும்.

REST மற்றும் ஒர்க்ஃப்ளோ எஞ்சின் (ஜாவா இல்லை) அடிப்படையிலான எளிதான ஆர்கெஸ்ட்ரேஷனுக்கு கேமுண்டாவைப் பயன்படுத்துதல்

தரவுத்தளத்தை மாற்ற அல்லது வேறு எதையும் செய்ய நீங்கள் டாம்கேட்டை உள்ளமைக்க வேண்டும் ஆவணத்தில் விவரிக்கப்பட்டுள்ளது. டாம்கேட் சிக்கலானதாகத் தோன்றலாம் என்று எனக்குத் தெரியும், ஆனால் அது உண்மையில் மிகவும் எளிமையானது. மேலும் செயல்பாட்டில் தேவைப்படும் எல்லாவற்றிற்கும் Google பதில்களை அறிந்திருக்கிறது.

டாம்கேட்டைப் பயன்படுத்தி கமுண்டாவை இயக்குதல்

கடைசி மாற்று டாம்கேட்டை நீங்களே அமைத்து அதில் கமுண்டாவை நிறுவ வேண்டும். நிறுவல் விளக்கத்தை தொடர்ந்து. நீங்கள் விரும்பும் Tomcat இன் எந்தப் பதிப்பையும் பயன்படுத்த இது உங்களுக்கு வாய்ப்பளிக்கும் அல்லது, எடுத்துக்காட்டாக, அதை Windows சேவையாக நிறுவவும்.

கமுண்டா தயாரிப்பில் இறங்குகிறது

பொதுவாக, இது Camunda இயங்குவதற்கு சில இறுதி அமைப்பைச் செய்ய வேண்டும். Camunda இதை மிக விரிவாக விவரிக்கும் வழிகாட்டுதல்களைக் கொண்டுள்ளது, ஆனால் அவற்றை இந்தக் கட்டுரையில் நான் தொடமாட்டேன் - நான் ஒரு உதாரணம் தருகிறேன்: விநியோகத்தின் REST API இயல்பாக அங்கீகாரத்திற்காக கட்டமைக்கப்படவில்லை. நீங்கள் இதை மாற்ற விரும்பலாம்.

சுருக்கமாக

நீங்கள் பார்க்கிறபடி, நீங்கள் எந்த மொழியைப் பயன்படுத்தினாலும், Camunda உடன் தொடங்குவது மிகவும் எளிதானது. முக்கிய விஷயம் என்னவென்றால், அனைத்து தொடர்புகளும் REST API மூலம் செய்யப்படுகிறது. நிறுவல் மிகவும் எளிதானது, குறிப்பாக டோக்கரைப் பயன்படுத்தும் போது.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்