Zum Inhalt

Eigene Generatoren und Converter

Verwende eine eigene Komponente nur, wenn die generierten Kataloge das erforderliche Verhalten nicht bereitstellen. Halte die .scr.py-Datei im Projekt, lade sie explizit und mache Eingaben im Descriptor sichtbar.

Komponenten-Script

Wenn DATAMIMIC eine projektlokale .scr.py-Datei lädt, stehen die Basisklassen Generator, Converter und CustomConverter automatisch bereit. Importiere keine internen DATAMIMIC-Implementierungsmodule, um eine Projektkomponente zu definieren.

script/custom.scr.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
class CustomStringGenerator(Generator):
    def __init__(self, prefix: str = "") -> None:
        self.prefix = prefix
        self.counter = 0

    def generate(self) -> str:
        self.counter += 1
        return f"{self.prefix}{self.counter}"


class CustomUpperConverter(Converter):
    def convert(self, value: str) -> str:
        return value.upper()

Komponente laden und verwenden

datamimic.xml
1
2
3
4
5
6
<setup numProcess="1">
    <execute uri="script/custom.scr.py"/>
    <generate name="custom_output" count="10" target="LogExporter">
        <key name="code" generator="CustomStringGenerator(prefix='item-')" converter="CustomUpperConverter"/>
    </generate>
</setup>

Dieses Beispiel verwendet numProcess="1", weil der Generator einen Zähler besitzt. Eine für parallele Generierung vorgesehene Komponente sollte sich nicht auf veränderlichen prozesslokalen Zustand verlassen.

Eigene Scripts führen Code aus und gehören deshalb zur vertrauenswürdigen Codebasis des Projekts. Prüfe sie wie Anwendungscode und vermeide versteckte Netzwerk- oder Dateisystemeffekte. Verwende für schreibgeschützte Runtime-Werte oder Memstore-Zugriffe die öffentliche Scripting-API, statt interne Engine-Module zu importieren.