Export nach DispoMatrik
Ziel
Schaffung und Beschreibung einer Schnittstelle zwischen VIA und Dispomatrik auf REST-Basis
Voraussetzungen
- Hinterlegung eines neuen Static Token in VIA
- Mitteilung des Statik Token an Dispomatrik
- Erstellen der REST-Funktion
- Implementierung in Dispomatrik
- Testing
Grundlagen
🌐12.2 VIA REST-API (Version 2)
🔑12.3 Authentifizierung (API-Keys)
Call
curl "https://app.vuschlienz.via-cloud.de/api/v2/export_umlauf_wegpunkte?static_token=[api_token]&datum=2021-10-07" \
-H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8'URL:
https://app.vuschlienz.via-cloud.de
Route:
/api/v2
Endpunkt:
export_umlauf_wegpunkte
Methode:
GET
Parameter:
- static_token oder api_key zur Verifizierung des Aufrufs
- datum zur Filterung der Umläufe
- output (optional)
- json: standard Gibt ein JSON-Objekt zurück
- html: Gibt eine mit HTML formatierte Tabelle zurück
- xml: Gibt ein XML-Objekt zurück
Verfahren
Vorschlag von Dispomatrix
hier unser erster Vorschlag für die REST Schnittstelle:
- Wir bekommen einen Request, der uns für einen Tag sämtliche Touren mit Zwischenstopps zurückliefert. Das ganze in einer großen JSON Tabelle – ggf. gezippt.
- D.h. es würden wahrscheinlich nicht mehr als ca. 1.000 Touren für einen Aufruf geliefert.
- Im Echtbetrieb würden wir vorab für die nächsten 14 Tage die Touren abfragen – dann (mehrmals) täglich den aktuellen Tag
Objekt
- Uml Id
- VIA-Interne ID des Umlauf, um die Wegpunkte zusammen zufassen
- Datum "YYYY-MM-DD"
- TourNr
- Die in VIA geführte "Umlauf-Id"
- Wenn der Umlauf ein Stand ist, dann wird die "Parent-Umlauf-Id" übergeben
- TourName
- Richtung
- 0 = Hinfahrt
- 1 = Rückfahrt
- KFZ_Kennzeichen
- KFZ_Nr
- Kostenstelle
→ VarField am Umlauf aktuell
- Lohngruppe (müsste ein frei editierbares Feld pro Tour sein)
→ VarField am Umlauf aktuell
- Halt_Art
- Fahrer Start
- Fahrer beginnt mit Umlauf
- Fahrer Ziel
- Fahrer beendet Umlauf
- Begleitperson Start
- Begleitperson steigt ein
- Begleitperson Ziel
- Begleitperson steigt aus
- Person Einstieg
- Fahrgast steigt an Heimat-Haltestelle ein
- Nur bei Hinfahrten
- Person Ausstieg
- Fahrgast steigt an Heimat-Haltestelle aus
- Nur bei Rückfahrten
- Schule Ankunft
- Fahrgäste steigen an Schul-Haltestelle aus
- Nur bei Hinfahrten
- Schule Abfahrt
- Fahrgäste steigen an Schul-Haltestelle ein
- Nur bei Rückfahrten
- Fahrer Start
- Ankunft Uhrzeit hh:mm
- Abfahrt Uhrzeit hh:mm
- ID Personeninformation
- Schüler: Schüler-Nummer
- Schulen: Schulen-ID
- Fahrer: Personal-Nummer
- Begleitperson: Personal-Nummer
- PLZ
- ORT
- Strasse
- Bemerkungen
- nur bei Person Einstieg, Person Ausstieg
- Telefon
- Telefon Mobil
- Einrichtung
- nur bei Person Einstieg, Person Ausstieg
- Abwesend
- "Ja"/"Nein"
- nur bei Person Einstieg, Person Ausstieg
- Abwesenheitsgrund
- (nur bei Person Einstieg, Person Ausstieg)
- Typen:
- Krankheit
- HomeSchooling
- keine Beförderung
- Sonstiger
- Abwesenheitsnotiz
- kann Maske tragen
- "Ja"/"Nein"
- nur bei Person Einstieg, Person Ausstieg
- Begleitung (nur bei Person Einstieg, Person Ausstieg)
- Typen:
- Leer
- Busbegleitung
- Ind.-begleitung
- Typen:
[
{
"Uml_Id": "10",
"Datum": "2021-10-07",
"Tourname": "Tour 01",
"Tournummer": "01",
"Tourkürzel": "",
"KFZ_Kennzeichen": "ES ST 7567",
"KFZ_Nr": "7567",
"Kostenstelle": "",
"Lohngruppe": "",
"Halt Art": "Fahrer Start",
"Ankunft": "",
"Abfahrt": "07:36",
"Name": "Strohxxx Diexxx",
"ID": "2595",
"Straße": "Beinsteinerstr 30",
"PLZ": "71394",
"Ort": "Kernen",
"Bemerkung": "Fahrer\/in",
"Telefon": "",
"Mobil": "+49 1575XXXXXX",
"Schule": "",
"Einrichtung": "",
"Begleitperson_erforderlich": "",
"Kann_Maske_tragen": "",
"Abwesend": "",
"Abwesenheitsgrund": "",
"Abwesenheitsnotiz": ""
},
{
"Uml_Id": "10",
"Datum": "",
"Tourname": "",
"Tournummer": "",
"Tourkürzel": "",
"KFZ_Kennzeichen": "",
"KFZ_Nr": "",
"Kostenstelle": "",
"Lohngruppe": "",
"Halt Art": "Person Einstieg",
"Ankunft": "07:56",
"Abfahrt": "07:57",
"Name": "Ellxxx, Banxxx",
"ID": "8356",
"Straße": "Am Feuersee 10",
"PLZ": "73666",
"Ort": "Baltmannsweiler",
"Bemerkung": "",
"Telefon": "07153\/XXXXXX ",
"Mobil": " ",
"Schule": "2.2.5 ROH Außenklasse Schillerschule",
"Einrichtung": "",
"Begleitperson_erforderlich": "",
"Kann_Maske_tragen": "Maske: Nein",
"Abwesend": "Nein",
"Abwesenheitsgrund": "",
"Abwesenheitsnotiz": ""
},
{
"Uml_Id": "10",
"Datum": "",
"Tourname": "",
"Tournummer": "",
"Tourkürzel": "",
"KFZ_Kennzeichen": "",
"KFZ_Nr": "",
"Kostenstelle": "",
"Lohngruppe": "",
"Halt Art": "Person Einstieg",
"Ankunft": "08:05",
"Abfahrt": "08:06",
"Name": "Maxxx, Wetxxx",
"ID": "8360",
"Straße": "Seestr. 9",
"PLZ": "73666",
"Ort": "Baltmannsweiler",
"Bemerkung": "",
"Telefon": "07153\/XXXXXX ",
"Mobil": " ",
"Schule": "2.2.5 ROH Außenklasse Schillerschule",
"Einrichtung": "",
"Begleitperson_erforderlich": "",
"Kann_Maske_tragen": "Maske: Nein",
"Abwesend": "Nein",
"Abwesenheitsgrund": "",
"Abwesenheitsnotiz": ""
},
{
"Uml_Id": "10",
"Datum": "",
"Tourname": "",
"Tournummer": "",
"Tourkürzel": "",
"KFZ_Kennzeichen": "",
"KFZ_Nr": "",
"Kostenstelle": "",
"Lohngruppe": "",
"Halt Art": "Person Einstieg",
"Ankunft": "08:17",
"Abfahrt": "08:18",
"Name": "Yixxx, Berxxxx",
"ID": "8357",
"Straße": "Hirschlandstr. 16",
"PLZ": "73730",
"Ort": "Esslingen",
"Bemerkung": "",
"Telefon": " ",
"Mobil": "0174 XXXXXX ",
"Schule": "2.2.5 ROH Außenklasse Schillerschule",
"Einrichtung": "",
"Begleitperson_erforderlich": "",
"Kann_Maske_tragen": "Maske: Nein",
"Abwesend": "Nein",
"Abwesenheitsgrund": "",
"Abwesenheitsnotiz": ""
},
{
"Uml_Id": "10",
"Datum": "",
"Tourname": "",
"Tournummer": "",
"Tourkürzel": "",
"KFZ_Kennzeichen": "",
"KFZ_Nr": "",
"Kostenstelle": "",
"Lohngruppe": "",
"Halt Art": "Person Ausstieg",
"Ankunft": "08:29",
"Abfahrt": "08:30",
"Name": "2.2.5 ROH Außenklasse Schillerschule",
"ID": "17",
"Straße": "Schulstraße 56",
"PLZ": "73734",
"Ort": "Esslingen",
"Bemerkung": "",
"Telefon": "",
"Mobil": "",
"Schule": "",
"Einrichtung": "",
"Begleitperson_erforderlich": "",
"Kann_Maske_tragen": "",
"Abwesend": "",
"Abwesenheitsgrund": "",
"Abwesenheitsnotiz": ""
},
{
"Uml_Id": "10",
"Datum": "",
"Tourname": "",
"Tournummer": "",
"Tourkürzel": "",
"KFZ_Kennzeichen": "",
"KFZ_Nr": "",
"Kostenstelle": "",
"Lohngruppe": "",
"Halt Art": "Fahrer Ziel",
"Ankunft": "08:54",
"Abfahrt": "",
"Name": "Strohxxx Diexxx",
"ID": "2595",
"Straße": "Beinsteinerstr 30",
"PLZ": "71394",
"Ort": "Kernen",
"Bemerkung": "Fahrer\/in",
"Telefon": "",
"Mobil": "+49 1575XXXXXX",
"Schule": "",
"Einrichtung": "",
"Begleitperson_erforderlich": "",
"Kann_Maske_tragen": "",
"Abwesend": "",
"Abwesenheitsgrund": "",
"Abwesenheitsnotiz": ""
}
]Anmerkungen
- Die Kombination Datum/TourNr wäre das Mappingkriterium zu den Diensten in der Dispo – das dürfte sich nicht ändern
- Fahrerstammdaten würden über die Personalnummer gemappt
- Fahrzeugstammdaten würden über Fahrzeug gemappt (Nr oder Kennzeichen)
- Wenn Halttypen von einem Begleitfahrer dabei sind, dann werden in der Dispo zwei Dienste erzeugt – einen für den Fahrer, einen für den Begleitfahrer
- Hinweis zur Lohngruppe: Über den Typ vom Halt müssten wir unterscheiden, welche Umlaufanteile Leer- und welche Besetztfahrten sind. Je nach Lohngruppe haben dann Leer- und Besetztfahrtanteile andere Lohnarten in der Lohnbuchhaltung.
Fragen
- Gäbe es eine Möglichkeit gelöschte Touren zu übertragen – mit Flag gelöscht?
→ Nein, gelöscht gibt es bei uns eigentlich nicht. Die Umläufe werden editiert und erhalten Versionen, die in bestimmten Zeiträumen dann gültig sind. Soll ein Umlauf ganz entfallen, werden alle Personen aus dem Umlauf genommen. Die Schnittstelle bringt diese aktuell leer rüber, das kann aber auch geändert werden.
13.1 VIA Schnittstellen