Aku kerep ngrembug arsitektur microservice karo wong non-Jawa: pangembang C#, pangembang Node.JS/JavaScript, utawa penggemar Golang. Kabeh mau ngadhepi kasunyatan sing mbutuhake mekanisme orkestrasi ing arsitektur microservice, utawa mung alat kanggo streamline alur kerja lan entuk kemampuan kanggo pesenan, nangani wektu entek, Saga lan transaksi ganti rugi.
platform BPM karo open source saka Camunda gedhe kanggo tugas kuwi. Ramah pangembang minangka salah sawijining fitur utama produk kasebut. Nanging yen sampeyan ndeleng dokumentasi, sampeyan bisa uga entuk kesan yen "keramahan" Camunda utamane ditujokake kanggo pangembang Jawa. Platform kasebut nyedhiyakake akeh pilihan kanggo nyambungake fungsi lan ekstensi sampeyan dhewe, nanging kabeh wis rampung ing Jawa. Apa tenan?
Ora! Nyatane, sampeyan bisa kanthi gampang mbukak Camunda tanpa kawruh Jawa lan nyiyapake arsitektur kanggo kode ing basa apa wae sing sampeyan pilih. Ing artikel iki, kita bakal nliti:
arsitektur dhasar;
REST API
saran babagan perpustakaan klien sing ana kanggo basa liyane saka Jawa;
conto nggunakake C # lan Node.JS;
cara kanggo miwiti server Camunda (Docker utawa Tomcat).
arsitektur
Camunda ditulis ing Jawa lan mbutuhake Java Virtual Machine (JVM) kanggo mbukak. Camunda nyedhiyakake API REST sing ngidini sampeyan nulis ing basa apa wae sing disenengi lan nggunakake REST karo Camunda:
Alur kerja ing Camunda ditetepake ing BPMN, sing sejatine minangka file XML. Bisa dimodelake karo Modeler Camunda.
Mlaku Camunda liwat gambar Docker sing wis dibangun
Cara paling gampang kanggo mbukak Camunda yaiku nggunakake Docker. Cara alternatif kanggo miwiti Camunda diterangake mengko ing artikel iki.
Ing kasus iki, mung mbukak:
docker run -d -p 8080:8080 camunda/camunda-bpm-platform:latest
Sampeyan ora perlu kuwatir babagan Linux, JVM utawa Tomcats. Dockerfiles lan dokumentasi dhasar (contone, instruksi kanggo nyambungake menyang database dibutuhake) kasedhiya ing GitHub.
Yen sampeyan pengin mbukak Camunda Enterprise Edition sampeyan bisa ngganti kanthi gampang file docker.
Nanging, mlaku Camunda karo Docker duwe kekurangan: sampeyan bakal entuk versi Tomcat sing ora mesthi kalebu perbaikan paling anyar. Kanggo ngatasi masalah iki, sampeyan bisa nggawe gambar Docker dhewe adhedhasar distribusi Tomcat sing dikarepake, kaya sing ditampilake ing conto iki, utawa gunakake salah sawijining solusi sing diterangake ing ngisor iki.
Panyebaran Model Proses
Ayo kang katon ing conto nggunakake Cithakan Saga kanggo pesenan trip klasik ngendi sampeyan pengin micu telung tumindak ing saurutan lan gracefully ijol kanggo tumindak kasil rampung ing cilik saka Gagal mengko. Diwakili ing wangun BPMN, katon kaya iki:
Saiki sampeyan bisa nggunakake REST API kanggo penyebaran model proses. Contone, sampeyan nyimpen minangka trip.bpmn lan mbukak Camunda liwat Docker supaya kasedhiya ing localhost:8080:
Pitakonan menarik sabanjure yaiku: kepiye cara nelpon Camunda kaya pesenan mobil? Camunda ora mung bisa nelpon layanan langsung (Push-Principle) nggunakake sawetara dibangun ing konektor, nanging uga sijine item karya ing jinis dibangun ing urutan. Buruh banjur bisa njupuk item karya liwat REST, nindakake karya, lan menehi Camunda kanggo ngrampungake (Pull-Principle).
Dadi pisanan sampeyan kudu nglakokake fetchAndLock (amarga buruh liyane bisa nampa tugas ing wektu sing padha kanggo skala sistem):
Mekaten - sampeyan isih durung mbutuhake basa Jawa, ta? Lan iku cukup kanggo miwiti!
Pustaka Klien
Nelpon REST API gampang ing sembarang basa program. Ing JavaScript, iki gampang ditindakake nggunakake JQuery, lan ing C #, nggunakake System.Net.Http lan Newtonsoft.Json. Nanging iki bakal njupuk wektu. Dadi sampeyan mung bisa nggunakake sawetara perpustakaan klien.
Saiki, sawetara perpustakaan klien sing wis siap kasedhiya:
C #:pranala ΠΈ pranala. Loro-lorone proyek kasebut ana ing negara penengah lan meh ora aktif, nanging bisa dadi titik wiwitan sing apik;
PHP: pranala - ora lengkap banget lan ora kalebu owah-owahan API paling anyar, nanging aku ngerti proyek sing nggunakake.
Kajaba JavaScript lan Jawa, perpustakaan klien ora dadi bagean saka produk Camunda dhewe. Aja ngarepake dheweke ndhukung kabeh fitur REST API Camunda. Mung amarga perpustakaan ora nyedhiyani fungsi tartamtu ora ateges iku ora ana, tansah mriksa Camunda REST API. Proyek referensi nggunakake perpustakaan minangka titik wiwitan lan cithakan.
Tuladha C#
Nggunakake perpustakaan klien ing ndhuwur, kita mung bisa nulis:
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", "..." }
});
Kode sumber kanthi lengkap bisa ditemokake online: pranala. Conto liyane kasedhiya ing pranala.
Informasi liyane bisa ditemokake ing situs web github.com
Cara Alternatif kanggo Bukak Camunda
Gambar Docker khusus kanthi "PERANG mandiri Camunda"
Minangka alternatif kanggo gambar Docker sing wis dibangun saka Camunda, sampeyan bisa nyiyapake Tomcat dhewe (contone, adhedhasar gambar Docker Tomcat resmi) banjur nyalin Camunda minangka salah sawijining file WAR sing diarani.
Yen sampeyan duwe akeh syarat tambahan lan bisa nyetel lingkungan mbangun Jawa, sampeyan uga bisa nyiyapake perang Camunda Standalone. Nggawe mbangun Maven kaya ing conto iki: mbangun Maven karo konfigurasi perang utawa perakitan Maven karo Numpuki.
Miwiti distribusi Camunda Tomcat
Pilihan liyane yaiku ngundhuh distribusi Camunda Tomcat, unzip, lan mbukak. Iki mung mbutuhake Java Runtime Environment (JRE) diinstal ing komputer. Bisa gampang download saka kene.
Kanggo ngganti database utawa nindakake tindakan liya sampeyan kudu ngatur Tomcat kaya diterangake ing dokumentasi. Aku ngerti Tomcat bisa muni rumit, nanging bener banget prasaja. Lan Google ngerti jawaban kanggo kabeh sing dibutuhake ing proses kasebut.
Mlaku Camunda nggunakake Tomcat
Alternatif pungkasan yaiku nyiyapake Tomcat dhewe lan nginstal Camunda, nderek katrangan instalasi. Iki bakal menehi pilihan kanggo nggunakake versi Tomcat sing disenengi, utawa nginstal minangka layanan Windows, contone.
Nalika sampeyan bisa ndeleng, iku gampang banget kanggo miwiti karo Camunda, preduli saka basa sing digunakake. Intine yaiku kabeh interaksi ditindakake liwat REST API. Instalasi uga gampang banget, utamane nalika nggunakake Docker.