Schnittstellen-Customizing Neu ab S 39.5.4

Neue Mapping-Funktion anlegen

info Informationen
  • Mapping-Funktionen werden unter ppms.interface abgelegt und müssen importierbar sein.
  • Das ppms.interface package stellt drei Basisklassen zur Verfügung: BaseConverter, BaseEnricher sowie BaseValidator.

Parameter

info Informationen
  • Jede Klasse besitzt das Klassenattribut PARAMETERS. Hier wird ein Dictionary erwartet, dessen Schlüssel-Wert-Paar die Parameter darstellt, mit denen dieser Schnittstellen-Baustein konfiguriert werden kann.
  • Der Schlüssel ist hier der Text, der dem Benutzer angezeigt wird und der Wert ist die Standardeinstellung.
  • Auf den Wert der eigenen Parameter kann innerhalb der Instanz über das Attribut parameters zugegriffen werden.

application Beispiel

  • Hier wird ein Validator definiert, der prüft, ob der übergebene Wert dem konfigurierten entspricht.
  • Dazu wird im Klassenattribut PARAMETERS ein Schlüssel-Wert-Paar definiert, dessen Schlüssel der Text "value" ist und der keinen Standardwert besitzt.
  • Innerhalb der check -Methode wird über self.parameters auf die konfigurierten Parameter zugegriffen. Dabei wird der Wert des Parameters value abgerufen.
  • Danach wird geprüft, ob der übergebene Wert dem konfigurierten entspricht.

from ppms.interface import BaseValidator, InvalidRecordException

class Equals(BaseValidator):
    PARAMETERS = {'value': ''}
    
    def check(self, value):
        check_value = self.parameters['value']
        
        if value != check_value:
            raise InvalidRecordException('"%s" is not equal to "%s"' % (value, check_value))

Erstellen eines neuen Validators

info Informationen
  • Neue Datei unter ppms.interface erstellen und eine neue Klasse definieren, die von BaseValidator erbt.
  • Hier muss die Methode check(self, parameter) implementiert werden.
  • Die Methode muss die InvalidRecordException werfen, wenn die Validierung fehlgeschlagen ist.

application Beispiel: Validator, der prüft, ob ein bestimmter Vorgang existiert

from ppms.interface import BaseValidator, InvalidRecordException

class TaskExists(BaseValidator):
    PARAMETERS = {'project': ''}
    
    def check(self, task_id):
        pr_id = self.parameters['project']
        
        task_record = ppms.search_record(463, [pr_id, task_id], [1097, 1098], True)
        
        if task_record is None:
            raise InvalidRecordException('There is no task "%s" in project "%s"' % (task_id, pr_id))

Erstellen eines neuen Enrichers

info Informationen
  • Neue Datei unter ppms.interface erstellen und eine neue Klasse definieren, die von BaseEnricher erbt.
  • Hier muss die Methode enrich(self, parameter) implementiert werden.
  • Die Methode muss den bearbeiteten Wert zurückgeben.

application Beispiel: Enricher, um einen Text durch einen anderen zu ersetzen

from ppms.interface import BaseEnricher

class Replacer(BaseEnricher):
    """Gives access to the str.replace function"""
    PARAMETERS = {'old_value': '',
                  'new_value': ''}
    
    def enrich(self, arg):
        return arg.replace(self.parameters['old_value'], 
                           self.parameters['new_value'])

Erstellen eines neuen Konverters

info Informationen
  • Neue Datei unter ppms.interface erstellen und eine neue Klasse definieren, die von BaseConverter erbt.
  • Hier muss die Methode convert(self, parameter) implementiert werden.
  • Die Methode muss den konvertierten Wert zurückgeben.

application Beispiel: Konverter, um einen Text in Großbuchstaben umzuwandeln

from ppms.interface import BaseConverter

class ToUppercase(BaseConverter):
    def convert(self, value):
        return value.upper()

Neue Modulklasse anlegen

info Informationen
  • Die Modulklassen implementieren individuelle Übertragungslogik und stellen Andockpunkte zu anderen Systemen dar.
  • Jede Modulklasse, die für die Schnittstelle benutzt werden soll, muss von der Klasse BaseInterfaceModule erben.
  • Die Parameter der Modulklasse funktionieren genauso wie die Parameter der Schnittstellen-Bausteine.
  • Die Basisklasse definiert 6 Methoden, je 3 für den Import und den Export:

Ab S 39.5.5

Export

Reihenfolge Signatur Verwendung Rückgabewert
1 before_send(self) Bereitet das Modul für das Senden von Daten vor Keinen
2 send(self) Sendet die Datensätze als Dictionaries Muss alle Records einzeln per yield zurückgeben. Der Rückgabewert von yield ist entweder True, wenn der Datensatz erfolgreich empfangen wurde, oder False, wenn ein Fehler aufgetreten ist
3 after_send(self, was_successful) Hier können geöffnete Ressourcen wieder geschlossen werden.
NEU Der Parameter was_successful gibt an, ob der Übertrag erfolgreich war.
Keinen

Import

Reihenfolge Signatur Verwendung Rückgabewert
1 before_receive(self) Bereitet das Modul für das Empfangen von Daten vor Keinen
2 receive(self, record) Wird für jeden Datensatz einmal aufgerufen und empfängt den Datensatz Gibt entweder True zurück, wenn der Datensatz erfolgreich verarbeitet wurde, oder wirft eine CantProcessRecordException
3 after_receive(self, was_successful) Hier können geöffnete Ressourcen wieder geschlossen werden.
NEU Der Parameter was_successful gibt an, ob der Übertrag erfolgreich war.
Keinen

Bis S 39.5.4

Export

Reihenfolge Signatur Verwendung Rückgabewert
1 before_send(self) Bereitet das Modul für das Senden von Daten vor Keinen
2 send(self) Sendet die Datensätze als Dictionaries Muss alle Records einzeln per yield zurückgeben. Der Rückgabewert von yield ist entweder True, wenn der Datensatz erfolgreich empfangen wurde, oder False, wenn ein Fehler aufgetreten ist
3 after_send(self) Hier können geöffnete Ressourcen wieder geschlossen werden Keinen

Import

Reihenfolge Signatur Verwendung Rückgabewert
1 before_receive(self) Bereitet das Modul für das Empfangen von Daten vor Keinen
2 receive(self, record) Wird für jeden Datensatz einmal aufgerufen und empfängt den Datensatz Gibt entweder True zurück, wenn der Datensatz erfolgreich verarbeitet wurde, oder wirft eine CantProcessRecordException
3 after_receive(self) Hier können geöffnete Ressourcen wieder geschlossen werden Keinen

Neue Pool-Tabelle anlegen

warning Hinweise

Ab S 39.5.8

  • Pool-Tabellen sind genauso wie andere Tabellen in PLANTA Project zu erfassen.
  • NEU In allen Pool-Tabellen muss eine UUID-Spalte als Primärschlüssel enthalten sein damit diese Tabelle in der Schnittstelle verwendet werden kann.
  • Zusätzlich sind die folgenden Felder notwendig:

Bis S 39.5.8

  • Pool-Tabellen sind genauso wie andere Tabellen in PLANTA zu erfassen.
  • Zusätzlich sind die folgenden Felder notwendig:

Dataitem Sort DI-Python-ID Sort SQL-ID Sort Spaltentyp Sort DB-Länge Sort DF-Länge Sort Sonstiges
Schnittstellen-Konfiguration config_id CONFIG_ID UUID 16 36 FK zur DT 560
Status status STATUS Zahl ohne NK, bis 4 Stellen 2 2
Übertragen am transferred_on TRANSFERRED_ON Alpha 80 80


index Siehe auch:

Ab DB 39.5.11

note Allgemeines

note Workflows (Tutorials)

note Funktionen

note Standard-Schnittstellen

note Module

note Datentabellen

Topic revision: r27 - 2018-02-09 - 13:40:07 - IrinaZieger








 
  • Suche in Topic-Namen

  • Suche in Topic-Inhalten