Keine Bearbeitungszusammenfassung Markierung: 2017-Quelltext-Bearbeitung |
Markierung: 2017-Quelltext-Bearbeitung |
||
Zeile 213: | Zeile 213: | ||
|Stamm-Planungseinheit | |Stamm-Planungseinheit | ||
|MasterAllocation | |MasterAllocation | ||
| | |[[Bfx.Abstract.Model.WebService.dll#Externe_Kennzeichen_.28Foreign_Keys.29|wie konfiguriert]] | ||
| | | | ||
|- | |- | ||
|Zuname | |Zuname | ||
|Surname | |Surname | ||
| | |Zeichenkette | ||
| | | | ||
|- | |- | ||
|Vorname | |Vorname | ||
|Forename | |Forename | ||
| | |Zeichenkette | ||
| | | | ||
|- | |- | ||
|Kurzname | |Kurzname | ||
|Nickname | |Nickname | ||
| | |Zeichenkette | ||
| | | | ||
|- | |- | ||
|Titel vor Name | |Titel vor Name | ||
|EmployeeTitleBeforeName | |EmployeeTitleBeforeName | ||
| | |Zeichenkette | ||
| | | | ||
|- | |- | ||
|Titel nach Name | |Titel nach Name | ||
|EmployeeTitleAfterName | |EmployeeTitleAfterName | ||
| | |Zeichenkette | ||
| | | | ||
|- | |- | ||
Zeile 250: | Zeile 250: | ||
|Geburtstag | |Geburtstag | ||
|DayOfBirth | |DayOfBirth | ||
| | |Datum | ||
| | | | ||
|- | |- | ||
|Berufsgruppe | |Berufsgruppe | ||
|EmployeeJobGroup | |EmployeeJobGroup | ||
| | |[[Bfx.Abstract.Model.WebService.dll#Externe_Kennzeichen_.28Foreign_Keys.29|wie konfiguriert]] | ||
| | | | ||
|- | |- | ||
|Beschäftigt | |Beschäftigt | ||
|Employed | |Employed | ||
| | |leer | ||
|<code>keyDate</code> für Beschäftigt ab | |<code>keyDate</code> für Beschäftigt ab | ||
Zeile 267: | Zeile 267: | ||
|E-Mail Adresse | |E-Mail Adresse | ||
|EmployeeEmailAddress | |EmployeeEmailAddress | ||
| | |Zeichenkette | ||
| | | | ||
|- | |- | ||
|Lohnartenumschlüsselung | |Lohnartenumschlüsselung | ||
|EmployeeAccountToWageTypeMap | |EmployeeAccountToWageTypeMap | ||
| | |[[Bfx.Abstract.Model.WebService.dll#Externe_Kennzeichen_.28Foreign_Keys.29|wie konfiguriert]] | ||
| | | | ||
|- | |- | ||
|Kartennummer | |Kartennummer | ||
|EmployeeCardID | |EmployeeCardID | ||
| | |Zeichenkette | ||
| | | | ||
|- | |- | ||
Zeile 295: | Zeile 295: | ||
|Telefonnummer | |Telefonnummer | ||
|EmployeePhoneNumber | |EmployeePhoneNumber | ||
| | |Zeichenkette | ||
| | | | ||
|- | |- | ||
|Sozialversicherungs-Nr. | |Sozialversicherungs-Nr. | ||
|EmployeeSocialInsurance | |EmployeeSocialInsurance | ||
| | |Zeichenkette | ||
| | | | ||
|- | |- | ||
|Straße | |Straße | ||
|EmployeeStreet | |EmployeeStreet | ||
| | |Zeichenkette | ||
| | | | ||
|- | |- | ||
|Handzeichen für Pflegedoku | |Handzeichen für Pflegedoku | ||
|EmployeeSignature | |EmployeeSignature | ||
| | |Zeichenkette | ||
| | | | ||
|- | |- | ||
Zeile 320: | Zeile 320: | ||
|Beschäftigungsausmaß in Prozent | |Beschäftigungsausmaß in Prozent | ||
|BESCH_GRAD_IN_PROZENT | |BESCH_GRAD_IN_PROZENT | ||
| | |Gleitkommazahl | ||
| | | | ||
|- | |- | ||
|Sollstunden Montag | |Sollstunden Montag | ||
|SOLL_MO | |SOLL_MO | ||
| | |Gleitkommazahl | ||
| | | | ||
|- | |- | ||
|Sollstunden Dienstag | |Sollstunden Dienstag | ||
|SOLL_DI | |SOLL_DI | ||
| | |Gleitkommazahl | ||
| | | | ||
|- | |- | ||
|Sollstunden Mittwoch | |Sollstunden Mittwoch | ||
|SOLL_MI | |SOLL_MI | ||
| | |Gleitkommazahl | ||
| | | | ||
|- | |- | ||
|Sollstunden Donnerstag | |Sollstunden Donnerstag | ||
|SOLL_DO | |SOLL_DO | ||
| | |Gleitkommazahl | ||
| | | | ||
|- | |- | ||
|Sollstunden Freitag | |Sollstunden Freitag | ||
|SOLL_FR | |SOLL_FR | ||
| | |Gleitkommazahl | ||
| | | | ||
|- | |- | ||
|Sollstunden Samstag | |Sollstunden Samstag | ||
|SOLL_SA | |SOLL_SA | ||
| | |Gleitkommazahl | ||
| | | | ||
|- | |- | ||
|Sollstunden Sonntag | |Sollstunden Sonntag | ||
|SOLL_SO | |SOLL_SO | ||
| | |Gleitkommazahl | ||
| | | | ||
|- | |- | ||
|Sollstunden FEIERTAG | |Sollstunden FEIERTAG | ||
|SOLL_FT | |SOLL_FT | ||
| | |Gleitkommazahl | ||
| | | | ||
|- | |- | ||
|Fixes Monatssoll in Stunden | |Fixes Monatssoll in Stunden | ||
|SOLL_MONAT_FIX | |SOLL_MONAT_FIX | ||
| | |Gleitkommazahl | ||
| | | | ||
|- | |- | ||
|Arbeitstage je Woche | |Arbeitstage je Woche | ||
|WorkingDaysPerWeek | |WorkingDaysPerWeek | ||
| | |Gleitkommazahl | ||
| | | | ||
|- | |- | ||
Zeile 393: | Zeile 393: | ||
6 = 7. Kind | 6 = 7. Kind | ||
|} | |} | ||
== Datums-Automatik == | == Datums-Automatik == |
Version vom 29. Dezember 2022, 16:49 Uhr
Das Webservice - "Objekte anlegen und ändern" ist eine Programmfunktion zum Anlegen von Objekten eines Objekttyps und zum Ändern von Eigenschaften eines Objekts über das HTTP-Protokoll.
Es kann dazu verwendet werden
- das Personal aktuell zu halten
- die Benutzer aktuell zu halten
- Eigenschaften zu importieren
Ausgangssituation
Voraussetzungen
Um die Programmfunktion nutzen zu können
- muss der Webservice-Daemon konfiguriert sein.
- muss ein gültiger WebApi-Port konfiguriert sein.
- muss Bfx.Abstract.Model.WebService.dll als Plugin konfiguriert sein.
- kann ein Zertifikat zur Verschlüsselung verwendet werden.
- kann ein Sicherer Link-Aufruf konfiguriert werden.
Das Webservice stellt dann folgende Zugriffspfade an der konfigurierten Webservice-Adresse zur Verfügung:
/New
: Anlage eines neuen Objekts.- kann entfallen wenn der Parameter
Systemeinstellungen: Object Import Einstellungen: Eigenschaften-Import: Neu erstellen falls nicht gefunden?
aktiviert ist. [1]
- kann entfallen wenn der Parameter
/Set
: Ändern eines bestehenden Objekts.
Der Bediener des Webservice muss mit dem HTTP-Protokoll und seinen Möglichkeiten zur Argumentübertragung[2][3] vertraut sein.
Der Bediener des Webservice muss zudem die Formate kennen, welche übergeben werden können.
Formatierung
Die Daten werden dem Webservice entweder in der URL kodiert als GET-Argumentübertragung, oder als JSON formatierte Datei mittels POST-Argumentübertragung übergeben.
Eine URL kann in eine JSON-Datei konvertiert werden und eine JSON-Datei in eine oder mehrere URLs.
Ein Datum wird immer als DD.MM.YYYY
übertragen.
Schema für URL-Kodierung
Der Prozent-Encodierte Query-String der URL muss folgendes Format haben:
/New ?objectType= &indexQuery= &matchString= &keyDate=
/Set ?objectType= &indexQuery= &matchString= &importType= &valueString= &keyDate= &toDate= &keyString=
Schema für JSON-File
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Set", "description": "format for the set-webservice", "type": "object", "properties": { "objectType": { "type": "string" }, "indexQuery": { "type": "string" }, "importType": { "type": "string" }, "lines": { "type": "array", "items": { "type": "object", "properties": { "matchString": { "type": "string" }, "valueString": { "type": "string" }, "importType": { "type": "string" }, "keyString": { "type": "string" }, "keyDate": { "type": "string", "pattern": "^(3[01]|[12][0-9]|0[1-9]).(1[0-2]|0[1-9]).[0-9]{4}$" } }, "required": [ "matchString", "valueString" ] } } }, "required": [ "objectType", "indexQuery", "importType" ] }
objectType
Der objectType
enthält den Objekttyp des zu ändernden Objekts.
- Für Personal:
Employee
- Für Benutzer:
AlexUser
indexQuery
Der indexQuery
enthält den Index über den das Objekt gesucht wird.
- Für Personal:
EmployeeIDX
- Für Benutzer:
UserX
matchString
Der matchString
enthält den Wert für die Indexsuche.
- Für Personal die Personalnummer.
- Für Benutzer der Benutzername.
importType
Der importType
enthält die Eigenschaft die geändert werden soll.
valueString
Der valueString
enthält den Wert der zu setzenden Eigenschaft als Zeichenkette. Eigenschaften können folgende Werte annehmen:
- Zeichenketten:
"Mayr"
,"Groß"
,"Ü"
- Ganze Zahlen:
"1"
,"2"
,"10000"
- Gleitkommazahlen:
"1.123"
,"1.4567"
- Fremdschlüssel: Verweis auf "Station 1" in Eigenschaft "Stammplanungseinheit"
- Komplexe Werte: Kinder für Pflege-Anspruch oder Anspruchszeile
Property1####Value&Property2####Value ... &PropertyN####Value
keyDate
(optional)
Das keyDate
enthält den Wert des Von-Datums der zu setzenden Eigenschaft.
toDate
(optional)
Das toDate
enthält den Wert des Bis-Datums der zu setzenden Eigenschaft.
keyString
(optional)
Der keyString
enthält den Schlüsselwert der zu setzenden Eigenschaft.
Beispiele
Beispiel 1: Neues Objekt anlegen
Objekttyp | Beschreibung | URL Aufruf | JSON Aufruf |
---|---|---|---|
Personal | Neues Personal mit Personalnummer 1 | /New |
- |
Benutzer | Neuer Benutzer mit Benutzername U1 | /New |
- |
Beispiel 2: Eigenschaft in Objekt ändern
Der Einfachheit halber nehmen wir an es gibt bereits ein Personal mit Personalnummer 1
und einen Benutzer mit Benutzername U1
.
Objekttyp | Änderung | URL Aufruf (codiert) | JSON Aufruf |
---|---|---|---|
Personal | Email auf test@example.com | /Set |
- |
Personal | Kartennumer auf 3 ab 01.01.2020 | /Set |
- |
Personal | Zuname auf Mustermann ab 01.10.2020 | /Set |
- |
Personal | Vorname auf Max | /Set |
- |
Personal | Beschäftigungsausmaß auf 62,5% ab 01.03.2022 | /Set |
- |
Personal | Austritt auf 31.08.2022 | /Set |
- |
Personal | Berufsgruppe auf B1 | /Set |
- |
Personal | Stammplanungseinheit auf P1 | /Set |
- |
Personal | Stammplanungseinheit P1 abgrenzen | /Set |
- |
Personal | Qualifikation AS von 01.09.2022 bis 31.12.2022 | /Set |
- |
Personal | Anspruch von Urlaub (beachten | /Set |
- |
Personal | Kind 1 | /Set |
- |
Personal | Mutterschutz von 01.01.2020 bis 01.08.2020 | /Set |
- |
Benutzer | Email auf test@example.com | /Set |
- |
Benutzer | Benutzername auf U2 | /Set |
- |
Cheatsheet
Eigenschaft | importType
|
valueString
|
Zusätzliche Informationen |
---|---|---|---|
Stamm-Planungseinheit | MasterAllocation | wie konfiguriert | |
Zuname | Surname | Zeichenkette | |
Vorname | Forename | Zeichenkette | |
Kurzname | Nickname | Zeichenkette | |
Titel vor Name | EmployeeTitleBeforeName | Zeichenkette | |
Titel nach Name | EmployeeTitleAfterName | Zeichenkette | |
Geschlecht | Sex | 0 = weiblich
1 = männlich |
|
Geburtstag | DayOfBirth | Datum | |
Berufsgruppe | EmployeeJobGroup | wie konfiguriert | |
Beschäftigt | Employed | leer | keyDate für Beschäftigt ab
|
E-Mail Adresse | EmployeeEmailAddress | Zeichenkette | |
Lohnartenumschlüsselung | EmployeeAccountToWageTypeMap | wie konfiguriert | |
Kartennummer | EmployeeCardID | Zeichenkette | |
Inaktivzeiten | MaternityProtection | 0 = Schwanger
1 = Mutterschutz 2 = Karenz 3 = Sonstige Inaktivzeit weitere kundenspezifische möglich |
|
Telefonnummer | EmployeePhoneNumber | Zeichenkette | |
Sozialversicherungs-Nr. | EmployeeSocialInsurance | Zeichenkette | |
Straße | EmployeeStreet | Zeichenkette | |
Handzeichen für Pflegedoku | EmployeeSignature | Zeichenkette | |
Einstufung | EmployeeJobEvaluation | ||
Beschäftigungsausmaß in Prozent | BESCH_GRAD_IN_PROZENT | Gleitkommazahl | |
Sollstunden Montag | SOLL_MO | Gleitkommazahl | |
Sollstunden Dienstag | SOLL_DI | Gleitkommazahl | |
Sollstunden Mittwoch | SOLL_MI | Gleitkommazahl | |
Sollstunden Donnerstag | SOLL_DO | Gleitkommazahl | |
Sollstunden Freitag | SOLL_FR | Gleitkommazahl | |
Sollstunden Samstag | SOLL_SA | Gleitkommazahl | |
Sollstunden Sonntag | SOLL_SO | Gleitkommazahl | |
Sollstunden FEIERTAG | SOLL_FT | Gleitkommazahl | |
Fixes Monatssoll in Stunden | SOLL_MONAT_FIX | Gleitkommazahl | |
Arbeitstage je Woche | WorkingDaysPerWeek | Gleitkommazahl | |
Anspruchsart | EmployeeEntitlement_NAME | EmployeeRecEntitlementKeyDate: Stichtag
EmployeeRecEntitlementCustomPostingKeyDate: Zubuchungstag EmployeeRecEntitlementValue: Zusatzanspruch |
NAME = Name der Anspruchsart aus Stammdaten |
Kinder für Pflegefreistellung | EmployeeChildren | ChildName: Name
ChildBirthday: Geburtstag |
keyString enthält Index des Kindes
0 = 1. Kind 6 = 7. Kind |
Datums-Automatik
Hier VERBESSERUNGSBEDARF in Doku (und Program?)
Beim Setzen von zeitlich abgrenzbaren Eigenschaften wird der Beginn automatisch begrenzt mit dem 'Ist bis'-Datum der Stammplanungseinheit des Mitarbeiters.
Wird ein keyDate mitgegeben, so wird entweder dieses Datum verwendet oder als Beginn das Maximum zwischen keyDate und "Ist bis" genommen.
Wird kein keyDate mitgegeben, so wird entwerder der 1. des aktuellen Monats genommen oder auch das Maximum zwischen keyDate und "Ist bis".
Beispiel:
- Dezember 2021 befindet sich im Status IST
- Jänner 2022 befindet sich im Status Planung
- "Ist bis" ist somit der 1.1.2022
- Parameter Zuname wird mit Stichtag 1.3.2022 gesendet
- Ergebnis: Zuname wird per 1.3.2022 hinterlegt
- Parameter Zuname wird mit Stichtag 1.11.2021 gesendet
- Ergebnis: Zuname wird per 1.1.2022 hinterlegt
- Setzen von Kartennummer "1234567" bei Personal mit Personalnummer "PNR123" ab 01.01.2020
- Achtung, ist das "Ist bis" Datum z. B. der 01.03.2020 so würde der Beginn auch erst ab 01.03.2020 gesetzt werden!
Externe Kennzeichen (Foreign Keys)
Der Import von Externen Kennzeichen (Foreign Keys) ist über die interne ObjectID
von ALEX möglich oder über Fremdschlüssel, die zuvor initialisiert werden müssen.
Sind Externe Kennzeichen gesetzt, soll aber trotzdem über die ObjektID importiert werden, so muss folgender Parameter am System gesetzt werden: "Eigenschaften-Import: Referenzen entsprechen 'ObjektID'?" (unter Object Import Einstellungen)
Systemeinstellungen für Objekt Import |
Fremdschlüssel stehen für die gängigsten Objekttypen zur Verfügung:
- Berufsgruppe
- Planungseinheit
- Qualifikation
- Vertrag
- Lohnartenumschlüsselung
Ausgabe
JSON in der Form:
{ "request" : "" , "status" : "" , "details" : "" }
request
: Angeforderter Request als "Handshake"status
: "ok" oder "error"details
: Optionale Detailinformationen bei "error"
File Import
Der Pfad für die Importfiles kann in den Systemeinstellungen in der Gruppe "Object Import Einstellungen" beim Parameter "Eigenschaften-Import Pfad" festgelegt werden.
Die gewünschte Dateierweiterung kann beim Parameter "Eigenschaften-Import Dateierweiterung" eingetragen werden.
Der definierte Ordner wird alle 2 Minuten auf neue Dateien geprüft.
Format für Datei
{ "objectType": "string", "indexQuery": "string", "importType": "string", "lines": [ { "matchString": "string", "valueString": "string", "importType": "string", "keyString": "string", "keyDate": "DD.MM.YYYY" } ] }
Beispiele Personal
Setzen von Kartennummer "1234567" bei Personal mit Personalnummer "1" ab 01.01.2020.
{ "objectType": "Employee", "indexQuery": "EmployeeIDX", "importType": "EmployeeCardID", "lines": [ { "matchString": "1", "valueString": "1234567", "keyDate": "01.01.2020" } ] }
Setzen von Email "test@example.com" bei Personal mit Personalnummer "1" ab 01.01.2020.
{ "objectType": "Employee", "indexQuery": "EmployeeIDX", "importType": "EmployeeEmailAddress", "lines": [ { "matchString": "1", "valueString": "test@example.com", "keyDate": "01.01.2020" } ] }
Setzen von Zuname "Mair" bei Personal mit Personalnummer "1" ab 01.01.2020 und setzen von Zuname "Huber" bei Personal mit Personalnummer "2" ab 01.02.2020.
{ "objectType": "Employee", "indexQuery": "EmployeeIDX", "importType": "Surname", "lines": [ { "matchString": "1", "valueString": "Mair", "keyDate": "01.01.2020" }, { "matchString": "2", "valueString": "Huber", "keyDate": "01.02.2020" } ] }
Setzen von Zuname, Vorname, Berufsgruppe und 1. Kind bei Personal mit Personalnummer "1":
{ "objectType": "Employee", "indexQuery": "EmployeeIDX", "lines": [ { "matchString": "1", "importType": "Surname", "valueString": "Mair", "keyDate": "01.12.2000" }, { "matchString": "1", "importType": "Forename", "valueString": "Franz" }, { "matchString": "1", "importType": "EmployeeJobGroup", "valueString": "DGKS", "keyDate": "01.02.2018" }, { "matchString": "1", "importType": "EmployeeChildren", "keyString": "0", "valueString": "ChildName####Karl&ChildBirthday####03.02.2014" } ] }
Der Inhalt des Files kann dem /Set
Webservice auch gePOST
et werden
Protokollierung
Damit Änderungen über die Webservice-Schnittstelle protokolliert werden, muss beim Parameter "Eigenschaften-Import: Benutzer für Webservice" ein Benutzer hinterlegt werden.
Der hinterlegte Benutzer hat die SUPERVISOR-Berechtigung für das ganze System.
Benutzer WEBSERVICE |
Protokoll Personal |