İçeriğe geç

Script Engine

inSCADA JDK21, iki ayrı script ortamı sunar: server-side (ins.*) ve client-side (Inscada.*). İkisi farklı yerlerde çalışır, farklı amaçlar için tasarlanmıştır ve birbirinden izole API yüzeyleri vardır.

Server-side (ins.*)Client-side (Inscada.*)
Nerede çalışırinSCADA sunucusu (JVM)Tarayıcı (browser JS)
EngineGraalJS (Nashorn uyumlu)Tarayıcının kendi motoru
Bindingins (global)new InscadaApi(projectName)
AmaçOtomasyon, hesap, alarm, zamanlı işKullanıcı etkileşimi, UI kontrolü
Tipik kullanımScheduled script, variable / alarm / log expression, MQTT parseAnimation click, custom HTML widget, dashboard widget

Server-side (ins.*) detaylarıClient-side (Inscada.*) detayları

inSCADA’da script’ler pek çok yerde devreye girer. Aşağıdaki tablo her kullanım yerinin hangi ortamda çalıştığını gösterir.

Kullanım YeriOrtamTetikleme
Scheduled Scriptserver (ins.*)Periodic / Daily / Once / manuel
Variable Expressionserver (ins.*)Poll döngüsünde otomatik
Alarm Expressionserver (ins.*)Değer değişiminde otomatik
Log Expressionserver (ins.*)Poll döngüsünde otomatik
MQTT Subscribe/Publishserver (ins.*)Her MQTT mesajında
Animation Expressionserver (ins.*)UI güncellemesinde (uzaktan)
Animation Click Scriptclient (Inscada.*)Kullanıcı tıklaması
Custom HTML Widgetclient (Inscada.*, sandboxed iframe)Widget kendi içinde
Dashboard Widgetclient (Inscada.*)Dashboard render / etkileşim

İki ortamda da script’ler izole çalışır, ama kısıtlar farklıdır:

  • Server tarafıHostAccess.EXPLICIT: yalnızca @HostAccess.Export işaretli Java metodlarına erişim. eval, with kapalı. Thread/IO/process/native yasak. 100k statement limiti, 60s timeout (default).
  • Client tarafı — Custom HTML widget’lar sandboxed iframe’de çalışır; ana sayfa API’sine InscadaBridge üzerinden, origin-doğrulamalı postMessage ile erişir.