Persistente Daten
Um persistente Daten zu speichern gibt es in Kalibriware drei Möglichkeiten, welche alle über eine gemeinsame Basisklasse abgebildet werden:
Diese hat eine Schnittstelle wie folgt:
interface PersistentStorageEngine {
async get(key: string, namespace = "script.ini"): Promise<string | number | boolean>;
async set(key: string, value: string | number | boolean, namespace = "script.ini"): Promise<void>;
}
Über die Funktion set kann ein Wert überschrieben werden, dabei kann ein namespace zur Gruppierung und Organisation von Werten benutzt werden.
Standardmäßig ist namespace auf script.ini gesetzt, um Kompatibilität zur alten Script-Engine zu gewährleisten.
Über die Funktion get kann ein Wert abgefragt werden, namespace gilt ebenso wie bei set.
Hinweis: beide Funktionen sind asynchron, müssen also mit
awaitbenutzt werden.
Datenspeicherung
Es gibt innerhalb von Kalibriware drei sog. Scopes:
- Messplatz, dieser wird implizit für den Messplatz verfügbar gemacht
- Standard, dieser ist innerhalb eines Standard-Treibers verfügbar und kann nur dort benutzt werden
- Skript, dieser ist innerhalb von Kalibrierskripten verfügbar und ist potentiell über mehrere Messplätze teilbar.
Die Daten werden in der Backend-Datenbank gespeichert und von dort wieder abgerufen.
Benutzung
Die drei Scopes werden über verschiedene Klassen innerhalb der Dependency Injection abgebildet:
- Messplatz:
WorkplaceStorage - Standard:
CalibratorStorage - Skript:
ScriptStorage
Ein Beispiel könnte so aussehen:
@Injectable()
export class ScriptStorageExample extends Script {
// ScriptStorage anfordern
constructor(private storage: ScriptStorage, private steps: StepsService) {
}
public Run() {
this.steps.Add("Speicher-Parameter", async () => {
const parameter = await this.storage.get('parameter') as number;
parameter += 1;
await this.storage.set('parameter', parameter);
})
}
}