Kombinationsskripte für Gerätefamilien entwickeln
Einführung
Anders als im alten Kalibriscript gibt es in kalibriware die Möglichkeit, Skripte basierend auf dem Prüfling und/oder dem Auftrag zu verändern. Ein sehr gutes Beispiel dafür ist, Gerätefamilien zu kalibrieren. Beispielsweise könnte eine Gerätefamilie aus Geräten mit verschiedenen Optionen kombinierbar sein, sodass basierend auf dem Prüfling diverse Optionen kalibriert werden müssen.
Dies soll im folgenden näher beleuchtet werden.
Skript-Anpassung
Um ein Skript für mehrere Prüflinge zu schreiben, müssen wir zunächst an die Information, welcher Prüfling vorliegt, kommen. Die Informationen zum Werkstattauftrag sind innerhalb der Dependency Injection unter dem Schlüssel JobDetailsToken verfügbar und können z.B. so abgefragt werden:
import { Inject } from 'injection-js';
import { Script, JobDetailsToken, JobDetails } from '@script';
@Injectable()
export class SampleJobDetails extends Script {
constructor(
@Inject(JobDetailsToken) private jobDetails: JobDetails,
) {
super();
}
public Run() {
}
}
Damit haben wir nun alle Informationen, die zum Entwickeln benötigt werden.
Kombiniertes Prüf-/Kalibrierskript
Um eine Unterscheidung der Verhaltensweise vorzunehmen, abhängig vom Servicekennzeichen (Prüf-/Kalibrierskript) kann folgender Code verwendet werden:
import { Inject } from 'injection-js';
import { Script, JobDetailsToken, JobDetails } from '@script';
@Injectable()
export class CheckAndCalibrationScript extends Script {
constructor(
@Inject(JobDetailsToken) private jobDetails: JobDetails,
) {
super();
}
public Run() {
if (this.jobDetails.job.serviceTag === 'Check') {
// Wird ausgeführt bei einer Prüfung
} else {
// Wird ausgeführt bei einer Kalibrierung
}
}
}
Die Abfrage von Prüf- und Kalibriermodus kann an beliebiger Stelle im Skript erfolgen.
Ein Skript für viele Geräte
Um basierend auf dem Gerät/Gerätetyp eine Unterscheidung zu treffen, kann beispielsweise folgender Code benutzt werden:
import { Inject } from 'injection-js';
import { Script, JobDetailsToken, JobDetails, StepService } from '@script';
@Injectable()
export class OLP55xx extends Script {
constructor(
private steps: StepService,
@Inject(JobDetailsToken) private jobDetails: JobDetails,
) {
super();
}
public Run() {
this.steps.Add('Gemeinsam für alle Modelle', async () => {
// Kalibrierlogik, welche für alle Modelle ausgeführt wird
});
// Die Information des Prüflings ist unter `this.jobDetails.job.dutType` erreichbar
// Empfehlenswert sind Verhaltensänderungen entweder basierend auf der `externalSapID` (SAP-Materialnummer des Prüflings)
// oder auf der `id` (Interne UUID des Prüflings in unserem System)
if (this.jobDetails.job.dutType.externalSapID === '42') {
// Wenn der Prüfling nicht Materialnummer `42` hat, dann taucht dieser Schritt auch nicht im Kalibrierprotokoll auf.
this.steps.Add('Option A für Modell 42', async () => {
});
}
}
}
Natürlich können auch innerhalb der Schritte entsprechende Varianten erzeugt werden.