Schnittstellen-Customizing Neu ab S 39.5.4
Neue Mapping-Funktion anlegen
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
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.
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
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.
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
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.
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
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.
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
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
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: