Gambaran Singkat
Berikut adalah ilustrasi sederhana terkait Custom Script. Suatu fungsi dalam custom script akan dijalankan merujuk pada jenis pemicu yang diasosiasikan. Sistem MocoBaaS memiliki script-router
yang akan menentukan eksekusi script yang sesuai dengan pemicu yang masuk (baik dari HTTP ataupun Event).
Sumber pemicu eksekusi custom script terdiri dari 4 jenis yaitu:
- webhook
melalui HTTP invocation. Umum digunakan untuk integrasi dengan pihak lain (3rd party). - function
melalui HTTP invocation dengan standar JSON-API format sesuai Generic Swagger API. Dapat digunakan untuk komunikasi client-server dengan front-end app (mobile / web), khususnya dengan memanfaatkan Client-SDK yang disediakan. - event
melalui Event yang masuk ke dalam sistem - cron
melalui Scheduler Event yang masuk ke dalam sistem
Contoh Script Sesuai trigger type
Webhook & Remote function
Contoh script berikut ini adalah fungsi sebagai handler untuk sebuah http endpoint (webhook). Fungsi ini memiliki sebuah argument ctx
yang berisi konteks dari request yang masuk. Pada custom script yang difungsikan sebagai HTTP webhook atau Remote fuction. fungsi yang ditulis harus mengembalikan (return) response dalam bentuk object.
Pengembang bisa memasukkan beberapa properties kepada object yang akan dikembalikan, berikut adalah daftar properties yang dapat digunakan :
name | type | required | description |
---|---|---|---|
data | any | true | body response dari endpoint/webhook |
status | number | false | http status code |
error | any | false | error response/message dari endpoint/webhook |
headers | object | false | custom response headers |
serializer | enum ["jsonApi"] | false | serializer untuk body response |
mask | array | false | opsi untuk masking data |
mask[n] | object | false | object yang berisi ketentuan masking data |
mask[n].field | string | true | object properties yang akan di-masking, misal: "nama", "order.jumlah" |
mask[n].type | string | false | ["phone","password","card","email"] |
mask[n].options | object | false | jika tidak diberi options, makan masking dilakukan sesuai konfigurasi default. properties dari mask options akan diterangkan lebih jelas pada tabel di bawah |
Berikut adalah properties mask[n].options
:
name | type | description | default | used on type |
---|---|---|---|---|
maskWith | string | character pengganti saat masking | "*" | all |
unmaskedStartDigits | number | jumlah awal character yang tidak dimasking | 4 | phone, email, card |
unmaskedEndDigits | number | jumlah akhir character yang tidak dimasking | 1 | phone, emal, card |
maxMaskedCharacters | number | jumlah maksimal character yang dimasking | 16 | password |
maskAtTheRate | boolean | jika bernilai true , simbol @ akan dimasking | false | |
maxMaskedCharactersBeforeAtTheRate | number | jumlah maskimal character yang dimasking sebelum simbol @ | 10 | |
maxMaskedCharactersAfterAtTheRate | number | jumlah maskimal character yang dimasking setelah simbol @ | 10 |
Berikut adalah contoh pemakaian fungsi mask saat mengembalikan data dari custom script.
Event & Cron
Contoh script di bawah ini akan menjadi fungsi yang dieksekusi oleh event/cron, yang berfungsi untuk menampilkan data yang dikirim ke event menjadi log pada terminal server.
Khusus pada mode event dan cron, pengembang tidak perlu mendeklarasikan kembalian fungsi (return) dari fungsi yang dibuat.
Configuration
Pengembang tidak perlu mengubah konfigurasi secara manual. Selalu gunakan antarmuka pada MocoBaaS Console untuk mengubah konfigurasi dengan benar. Bagian ini hanya bersifat referensi.
Script yang ditulis oleh pengembang akan akan dimuat saat aplikasi dijalankan. Sistem loader
akan membaca folder /scripts
yang ada pada directory backend dan memuat masing-masing isinya sesuai dengan konfigurasi yang ada di dalamnya. Sesuai pada diagram di atas, ada beberapa konfigurasi untuk custom scripts. Berikut adalah detail konfigurasi beserta penjelasan dan contohnya.
Parameter konfigurasi di bawah ini akan otomatis terisi sesuai dengan pilihan yang diatur melalui MocoBaaS Console. Berikut adalah penjelasan mengenai konfigurasi yang dimaksud.
config.json properties
name | type | description | required | special use |
---|---|---|---|---|
enable | boolean | jika enable=true maka script akan dimuat oleh loader | ||
trigger | object | konfigurasi tentang jenis trigger dan metadata | ||
trigger.type | string | type dari trigger custom script, bisa berisi [HTTP, SDK, EVENT] | ||
trigger.method | string | HTTP method [GET, POST, PUT, PATCH, DELETE] | trigger.type = HTTP | webhook |
trigger.path | string | path untuk endpoint webhook | trigger.type = HTTP | webhook |
trigger.schedule | string | cron pattern, harus diisi jika membuat custom scripts untuk cron | cron | |
trigger.queue | string | berisi topic dari queue jika trigger.entity=table berisi nama dari queue jika trigger.entity=custom | event | |
trigger.entity | string | entitas dari event, bisa berisi [table, custom] | event |
contoh konfigurasi
Webhook
Custom script akan menjadi fungsi yang akan dieksekusi menggunakan HTTP request sesuai konfigurasi endpoint.
Remote function
Custom script akan menjadi sebuah fungsi remote yang dapat dipanggil melalui Client-SDK ataupun HTTP request.
Cron
Custom script pengembang agar dijalankan secara terjadwal sesuai dengan cron pattern yang tertulis pada konfigurasi.
Event(table)
Custom script pengembang akan di-picu melalui event dari table (database). [insert, update, delete]
Event(custom)
Custom script yang ditulis akan menjadi fungsi bekerja sebagai queue consumer. Fungsi ini akan diproses jika terdapat pesan (message) dari queue yang telah didefinisikan.
Event(MQTT)
Custom script pengembang akan dijalankan ketika terdapat "message" yang di picu oleh mqtt publish sesuai dengan topic yang diasosiasikan.