Zum Inhalt

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 DOMDocument mit den DCC-Namespaces
  • Baut die Sektionen administrativeData und measurementResults auf
  • 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 ist
  • getDccMappingPath() -- Gibt den Pfad zur Mapping-Datei zurueck

ReportEngineManager

Die Klasse ReportEngineManager steuert, ob die DCC-Erzeugung aktiv ist:

// Pruefen ob DCC global aktiviert ist
Yii::app()->reportEngine->isDccPluginEnabled();

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:

  1. Der Benutzer loest die Berichtserzeugung fuer eine Kalibrierung aus
  2. Der ReportEngineManager prueft, ob das DCC-Plugin aktiviert ist
  3. Die Berichtsvorlage wird auf ein vorhandenes DCC-Mapping geprueft
  4. Der DccXmlGenerator wird mit dem Pfad zur Mapping-Datei instanziiert
  5. generate($ctag) laedt die Kalibrierdaten und erzeugt das XML
  6. embedPdf($pdfPath) bettet den gerenderten PDF-Bericht ein
  7. validate() prueft das XML gegen das XSD-Schema
  8. 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

  1. Laden Sie die JasperReports-Vorlage in das Verzeichnis httpdocs/reports/calibrations/ hoch
  2. Legen Sie die zugehoerige dcc-mapping.json im selben Verzeichnis ab
  3. 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

Weitergehende Informationen