Backend Javascript

iCodeBetter'da backend'de kod yazmak için, JavaScript kullanıyoruz (tıpkı frontend'de olduğu gibi).

Advanced: Normalde Nashorn'u kullanıyoruz, ama docker üzerinde GraalVM image'ını deploy edersek, JavaScript, R, Python da kullanabiliyoruz.

Yazmış olduğumuz kodlar serverdaki VM'de çalıştığı için, platformun engine'lerine (motorlarına) ulaşabiliyoruz. Örneğin, CRUD Engine, Query Engine, Conversion Engine, REST Engine, Workflow Engine. Redis veya istersen RabbitMQ servislerine de ulaşabiliyoruz.

Çalışan backend kodu, aynı transaction'da çalıştığı için de, eğer bir exeception alırsa bütün transaction'ı rollback yapıyor.

Genelde bir backend kodunu bir olay(event) tetikliyor. Olaylar bunlar olabilir:

  • Table Event

  • Global Function

  • JavaScript Query

Bütün backend kodları çalıştırırken, iCodeBetter Script Engine size 3 tane obje veriyor:

  1. $ - Bu sizin Backend'deki engine'lere ulaşabildiğiniz bir objedir. Örneğin $.postForm(formId, {params}).

  2. _request - Bu kod çalışırken gönderilen _request pararametreleridir.

  3. _scd - Bu kodu çalıştıran kullanıcının Session Datasıdır.

$ ile neleri çağırabiliriz (örnekler) :

// projedeki funcId global function
var r = $.execFunc(funcId, {params});
// projedeki formId formunu action=1(edit) 2(insert) 3(delete) işlemi için
var f = $.postForm(formId, action, {params});
// serbest bir query
var q = $.sqlQuery("SELECT * FROM X WHERE ${req.params}=AAA", {params});
// mesaj almak için
var s = $.geLocMsg("locale_msg_key");
// serverdan browser'a mesaj göndermek için
$.console("mesaj");
// String olan dt1 ve dt2 'yi karşılaştırır. dt1<dt2:-1 ; dt1=dt2:0 ; dt1>dt2:1 çıkarabilir sonucu
var r = $.compareDates(dt1, dt2);
// REST metodu çağırmak için
var users = $.REST('JSONPlaceholder.users',{});

Daha detaylı bilgi için iwb.script.NashornScript class'ını inceleyebilirsiniz.

Sistemde nerelerde backend Javascript yazabiliyoruz:

Table Event yazmak için böyle yapıyoruz. Tablo seçiyoruz, Events'a gelerek artı butonuna basıyoruz.

New Editor -> Backend Function açarak global function yazabiliyoruz.

Form Conversion'larda yazabiliyoruz. (Form'a sağ tıklayarak conversion ekleyebiliyoruz)