Bu belge AI tarafından çevrilmiştir. Herhangi bir yanlışlık için lütfen İngilizce sürümüne bakın
JavaScript Betiği düğümü, kullanıcıların bir iş akışı içinde özel bir sunucu tarafı JavaScript betiği çalıştırmasına olanak tanır. Betiğin içinde, iş akışının önceki adımlarından gelen değişkenleri parametre olarak kullanabilirsiniz. Ayrıca, betiğin dönüş değerini sonraki düğümlerin kullanımına sunabilirsiniz.
Betiğiniz, NocoBase uygulamasının sunucu tarafında ayrı bir iş parçacığında (worker thread) çalışır ve Node.js özelliklerinin çoğunu destekler. Ancak, yerel (native) yürütme ortamından bazı farklılıkları vardır. Ayrıntılar için Özellik Listesi bölümüne bakabilirsiniz.
İş akışı yapılandırma arayüzünde, iş akışındaki artı (“+”) düğmesine tıklayarak bir “JavaScript” düğümü ekleyebilirsiniz:


Betiğe, iş akışı bağlamından değişkenler veya statik değerler aktarmak için kullanılır. Bu değerler, betiğin içindeki kod mantığı tarafından kullanılır. name alanı parametre adını belirtir; bu ad, betiğe aktarıldığında bir değişken adı olarak kullanılır. value ise parametre değeridir; burada bir değişken seçebilir veya sabit bir değer girebilirsiniz.
Betiğin içeriği bir fonksiyon olarak düşünülebilir. Node.js ortamında desteklenen herhangi bir JavaScript kodunu yazabilirsiniz. Ayrıca, return ifadesini kullanarak düğümün çalışma sonucu olarak bir değer döndürebilirsiniz. Bu değer, sonraki düğümler tarafından bir değişken olarak kullanılabilir.
Kodu yazdıktan sonra, düzenleyici kutusunun altındaki test düğmesine tıklayarak bir test yürütme iletişim kutusu açabilirsiniz. Burada parametreleri statik değerlerle doldurarak simüle edilmiş bir çalıştırma yapabilirsiniz. Çalıştırma sonrasında, iletişim kutusunda dönüş değerini ve çıktı (log) içeriğini görebilirsiniz.

Birim milisaniyedir. 0 olarak ayarlandığında, zaman aşımı belirlenmez.
Bu seçenek işaretlendiğinde, betik bir hatayla karşılaşsa veya zaman aşımına uğrasa bile sonraki düğümler çalışmaya devam eder.
Betiğin bir hata vermesi durumunda, herhangi bir dönüş değeri olmayacaktır. Düğümün sonucu hata mesajıyla doldurulur. Eğer sonraki düğümler betik düğümünün sonuç değişkenini kullanıyorsa, bu durumu dikkatli bir şekilde ele almanız gerekir.
Ana uygulamanın çalıştığı Node.js sürümüyle aynıdır.
Betiğin içinde modülleri sınırlı bir şekilde kullanabilirsiniz. CommonJS ile uyumlu olarak, kodunuzda require() yönergesini kullanarak modülleri dahil edersiniz.
Node.js'in yerel modülleri ve node_modules içinde yüklü olan modüller (NocoBase tarafından zaten kullanılan bağımlılıklar dahil) desteklenir. Kodunuzda kullanmak istediğiniz modüllerin uygulamanın WORKFLOW_SCRIPT_MODULES ortam değişkeninde tanımlanması gerekir. Birden fazla paket adı, virgülle ayrılarak belirtilir, örneğin:
WORKFLOW_SCRIPT_MODULES ortam değişkeninde tanımlanmamış modüller, Node.js'in yerel modülleri veya node_modules içinde yüklü olsalar bile, betiklerde kullanılamazlar. Bu politika, operasyonel düzeyde kullanıcıların kullanabileceği modül listesini kontrol etmek için kullanılabilir. Böylece, bazı senaryolarda betiklerin aşırı yetkilere sahip olması engellenir.
Kaynak koddan dağıtım yapılmayan bir ortamda, eğer bir modül node_modules içinde yüklü değilse, ihtiyaç duyduğunuz paketi storage dizinine manuel olarak yükleyebilirsiniz. Örneğin, exceljs paketini kullanmanız gerektiğinde, aşağıdaki adımları uygulayabilirsiniz:
Ardından, bu paketin uygulamanın CWD'sine (mevcut çalışma dizini) göreceli (veya mutlak) yolunu WORKFLOW_SCRIPT_MODULES ortam değişkenine ekleyin:
Böylece exceljs paketini betiğinizde kullanabilirsiniz:
global, process, __dirname ve __filename gibi global değişkenler desteklenmez.
Düğümde yapılandırılan parametreler, betiğin içinde global değişkenler olarak doğrudan kullanılabilir. Betiğe aktarılan parametreler yalnızca boolean, number, string, object ve diziler gibi temel türleri destekler. Bir Date nesnesi aktarıldığında, ISO formatında bir dizgeye dönüştürülür. Özel sınıf örnekleri gibi diğer karmaşık türler doğrudan aktarılamaz.
return ifadesini kullanarak temel veri türlerini (parametre kurallarıyla aynı) düğüme sonuç olarak döndürebilirsiniz. Eğer kodda return ifadesi çağrılmazsa, düğüm yürütmesinin bir dönüş değeri olmaz.
Logları console kullanarak çıktı vermeniz desteklenir.
İş akışı çalıştırıldığında, betik düğümünün çıktısı da ilgili iş akışının log dosyasına kaydedilir.
async kullanarak asenkron fonksiyonlar tanımlamanız ve await ile asenkron fonksiyonları çağırmanız desteklenir. Promise global nesnesini kullanmanız da desteklenir.
setTimeout, setInterval veya setImmediate gibi metotları kullanmak isterseniz, bunları Node.js'in timers paketinden dahil etmeniz gerekir.