DCC-Export¶
calServer erzeugt Digitale Kalibrierscheine (DCC -- Digital Calibration Certificate) gemaess der Spezifikation der Physikalisch-Technischen Bundesanstalt (PTB), Version 3.3.0. Dieser Abschnitt beschreibt die technische Umsetzung, den Erzeugungsprozess und die Einrichtung.
Grundlagen¶
Der DCC ist ein maschinenlesbares XML-Format fuer Kalibrierscheine, das von der PTB standardisiert wird. Es ermoeglicht den automatisierten Austausch von Kalibrierdaten zwischen Laboren und deren Kunden. calServer implementiert:
- XML-Erzeugung nach PTB DCC v3.3.0
- Einbettung des PDF-Kalibrierscheins als Base64 im XML
- XSD-Validierung des erzeugten XML
- Mapping von calServer-Datenbankfeldern auf DCC-XML-Elemente ueber eine konfigurierbare JSON-Datei
Architektur¶
Die DCC-Erzeugung umfasst drei Komponenten:
FrontendCalibration
│
▼
DccXmlGenerator ◄── dcc-mapping.json
│
├── generate() XML-Struktur aufbauen
├── embedPdf() PDF als Base64 einbetten
└── validate() Gegen XSD pruefen
│
▼
DCC-XML-Datei
DccXmlGenerator¶
Die Klasse DccXmlGenerator (unter httpdocs/protected/components/) ist der zentrale Einstiegspunkt. Sie:
- Liest die Mapping-Konfiguration aus
dcc-mapping.json - Laedt den Kalibrierdatensatz mit Relationen (Inventar, Kunde, Ergebnisse, Standards)
- Erzeugt ein
DOMDocumentmit den DCC-Namespaces - Baut die Sektionen
administrativeDataundmeasurementResultsauf - Bettet optional das gerenderte PDF als Base64 ein
- Validiert das Ergebnis gegen das PTB-XSD-Schema
Die wesentlichen Namespaces:
| Namespace | URI |
|---|---|
| DCC | https://ptb.de/dcc |
| SI | https://ptb.de/si |
DCC-Mapping¶
Das Mapping zwischen calServer-Feldern und DCC-XML-Elementen wird in einer JSON-Datei (dcc-mapping.json) definiert, die zusammen mit den Berichtsvorlagen ausgeliefert wird. Diese Datei beschreibt, welche Datenbank-Felder in welche XML-Elemente uebertragen werden.
Verwaltet wird das Mapping ueber das Admin-Model AdminReportSetting:
hasDccMapping()-- Prueft, ob fuer eine Berichtsvorlage ein DCC-Mapping vorhanden istgetDccMappingPath()-- Gibt den Pfad zur Mapping-Datei zurueck
ReportEngineManager¶
Die Klasse ReportEngineManager steuert, ob die DCC-Erzeugung aktiv ist:
Das Feature-Flag enable_dcc_plugin wird systemweit in den Anwendungseigenschaften gesetzt.
XML-Struktur¶
Ein erzeugter DCC folgt diesem Aufbau:
<?xml version="1.0" encoding="UTF-8"?>
<dcc:digitalCalibrationCertificate
xmlns:dcc="https://ptb.de/dcc"
xmlns:si="https://ptb.de/si"
schemaVersion="3.3.0">
<dcc:administrativeData>
<!-- Laborinformationen, Kundeninformationen,
Kalibrierobjekt, Kalibrierdatum -->
</dcc:administrativeData>
<dcc:measurementResults>
<!-- Messergebnisse mit SI-Einheiten -->
</dcc:measurementResults>
<dcc:document>
<!-- Eingebettetes PDF (Base64) -->
</dcc:document>
</dcc:digitalCalibrationCertificate>
Erzeugungsprozess¶
Der vollstaendige Ablauf einer DCC-Erzeugung:
- Der Benutzer loest die Berichtserzeugung fuer eine Kalibrierung aus
- Der
ReportEngineManagerprueft, ob das DCC-Plugin aktiviert ist - Die Berichtsvorlage wird auf ein vorhandenes DCC-Mapping geprueft
- Der
DccXmlGeneratorwird mit dem Pfad zur Mapping-Datei instanziiert generate($ctag)laedt die Kalibrierdaten und erzeugt das XMLembedPdf($pdfPath)bettet den gerenderten PDF-Bericht einvalidate()prueft das XML gegen das XSD-Schema- Das fertige XML wird gespeichert und zum Download bereitgestellt
Einrichtung¶
Voraussetzungen¶
- calServer-Version mit DCC-Unterstuetzung
- JasperReports-Vorlage mit zugehoeriger
dcc-mapping.json - PTB-XSD-Schema (optional, fuer Validierung)
Feature-Flag aktivieren¶
Das DCC-Plugin wird ueber die Anwendungseigenschaften aktiviert:
Bereich: features > report_engine > enable_dcc_plugin = 1
Berichtsvorlage einrichten¶
- Laden Sie die JasperReports-Vorlage in das Verzeichnis
httpdocs/reports/calibrations/hoch - Legen Sie die zugehoerige
dcc-mapping.jsonim selben Verzeichnis ab - Konfigurieren Sie die Berichtsvorlage unter Administration > Berichtsverwaltung
Mapping-Datei erstellen¶
Die dcc-mapping.json definiert die Zuordnung der calServer-Felder zu DCC-XML-Elementen. Die Datei wird pro Berichtsvorlage angelegt und referenziert die internen Feldnamen (C-Serie fuer Kalibrierfelder, I-Serie fuer Inventarfelder).
Sprachen¶
Der DCC-Export unterstuetzt Deutsch und Englisch. Die Sprachauswahl wird beim Aufruf von generate() als Parameter uebergeben:
$generator = new DccXmlGenerator($mappingPath, $xsdPath);
$dom = $generator->generate($ctag, 'de'); // oder 'en'
Fehlerbehebung¶
| Problem | Ursache | Loesung |
|---|---|---|
Failed to parse dcc-mapping.json |
JSON-Datei fehlerhaft oder nicht vorhanden | Pfad und JSON-Syntax pruefen |
Calibration not found |
Ungueltige Kalibrier-ID | CTAG-Wert pruefen |
PDF file not found for DCC embedding |
PDF wurde nicht erzeugt | Berichtserzeugung pruefen, Report-Runner-Logs einsehen |
| XSD-Validierungsfehler | XML entspricht nicht dem Schema | Mapping-Datei und Kalibrierdaten pruefen |