Die virtic Zeitwirtschaft bietet eine Vielzahl von Webservices für den automatisierten Austausch von Stamm- und Bewegungsdaten mit Fremdsystemen wie HR-, Lohn- oder ERP-Software. Typischerweise werden über die Webservices
Die Webservices bieten mehrere Methoden zum Abrufen von Daten, wie z.B. getData(), fetchv100, fetchv101 usw. Die bequemste Option für Entwickler ist die Verwendung der Fetch-Methoden. Diese sind so nummeriert, dass die höchste Zahl die neueste Version der Methode darstellt und bevorzugt verwendet werden sollte.
virtic hat umfangreiche Implementierungshinweise zu jedem Webservice bereitgestellt. Entwickler finden diese Dokumentation hier. Die erforderlichen Zugangsdaten erhalten Sie vom virtic-Kundendienst (E-Mail: technik@virtic.com).
Die folgenden Anleitungen zeigen, wie Sie die virtic-Webservices in verschiedenen Entwicklungsumgebungen und mit verschiedenen Programmiersprachen nutzen können:
Die folgende Anleitung können Sie verwenden, wenn Sie bereits ein .NET Core Project in Visual Studio 2019 angelegt haben.
Um den Dienst aufzurufen, müssen Sie nun einen Client in Ihrer Anwendung entwickeln.
Hinweis: Sie benötigen die Eclipse IDE for Enterprise Java-Developers.
Wenn Sie noch kein Projekt haben, erstellen Sie zunächst ein Standardprojekt und nennen Sie es WebServiceClient. Es wird später für die Erzeugung von Klassen des SOAP-Clients verwendet.
Für ein bestehendes Projekt beschreiben die folgenden Schritte, wie Sie einen Webservice-Client in Eclipse erzeugen.
Um den Webservice mit den erzeugten Klassen zu nutzen, erzeugen wir eine weitere Datei mit der Bezeichnung ServiceClient.java, die die Funktionen des Webservice aufruft.
Hinweis: Um einen Webservice in Java aufzurufen, sollte die folgende Reihenfolge eingehalten werden:
Die Nutzung des Webservice Zeit erfolgt durch mindestens 5 aufeinanderfolgende SOAP-Requests:
Die Methoden zum Lesen der Daten (Schritt 3) mit fetchV103 und anderen fetch-Methoden können beliebig oft wiederholt werden, bevor dann die Methoden 4 und 5 aufgerufen werden müssen.
Alle SOAP-REQUESTS werden als HTTPS POSTS an die URL
https://api.virtic.net/wsa/wsa1
gesendet.
Der Connect zum WebService Server (Connect_wsZeit)
userId und password ist durch ‘XXXXX‘ ersetzt worden, appServerInfo ist durch ‘00000000‘ ersetzt worden.
================Request====================
POST /wsa/wsa1 HTTP/1.0
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)
VsDebuggerCausalityData: uIDPowoztjd6qj1OpUpGnyr9ZEcAAAAAweJ3ui8Q2UWEYXdsBGCUFJF4SJ6ccNlLipErFMz7CBUACQAA
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Host: api.virtic.net
Content-Length: 423
Expect: 100-continue
Proxy-Connection: Keep-Alive
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><Connect_wsZeit xmlns="http://www.virtic.com/xmlns/virsapZeit/wsZeit"><userId>XXXXX</userId><password>XXXXX</password><appServerInfo>00000000</appServerInfo></Connect_wsZeit></soap:Body></soap:Envelope>
================Response===================
HTTP/1.1 200 OK
Date: Tue, 03 May 2022 14:22:09 GMT
Server: Http Server
Content-Length: 604
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: sameorigin
Connection: close
Content-Type: text/xml;charset=utf-8
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Header>
<wsZeitID xmlns="http://www.virtic.com/xmlns/virsapZeit/wsZeit"><UUID>82e67c56c48374a2:38ed0e06:17fd07a06b4:-7ffa;<virsapZeit|PX-820469|AO>;gbWcNimQ7j9NNaguIeRkXQ==</UUID></wsZeitID>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<Connect_wsZeitResponse xmlns="http://www.virtic.com/xmlns/virsapZeit/wsZeit">
</Connect_wsZeitResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
In diesem Request wird der Wert aus dem Element UUID des Responses verwendet.
================Request====================
POST /wsa/wsa1 HTTP/1.0
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)
VsDebuggerCausalityData: uIDPowsztjd6qj1OpUpGnyr9ZEcAAAAAweJ3ui8Q2UWEYXdsBGCUFJF4SJ6ccNlLipErFMz7CBUACQAA
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Host: api.virtic.net
Content-Length: 532
Expect: 100-continue
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><wsZeitID xmlns="http://www.virtic.com/xmlns/virsapZeit/wsZeit"><UUID>82e67c56c48374a2:38ed0e06:17fd07a06b4:-7ffa;<virsapZeit|PX-820469|AO>;gbWcNimQ7j9NNaguIeRkXQ==</UUID></wsZeitID></soap:Header><soap:Body><CreatePO_zeit xmlns="http://www.virtic.com/xmlns/virsapZeit/wsZeit" /></soap:Body></soap:Envelope>
================Response===================
HTTP/1.1 200 OK
Date: Tue, 03 May 2022 14:22:09 GMT
Server: Http Server
Content-Length: 621
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: sameorigin
Connection: close
Content-Type: text/xml;charset=utf-8
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Header>
<zeitID xmlns="http://www.virtic.com/xmlns/virsapZeit/zeit"><UUID>82e67c56c48374a2:38ed0e06:17fd07a06b4:-7ffa;<virsapZeit|PX-820470|PO>;ZnhR4I3WRY7dVhAlXnlYdg==</UUID></zeitID>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<CreatePO_zeitResponse xmlns="http://www.virtic.com/xmlns/virsapZeit/wsZeit">
<result xsi:nil="true"/>
</CreatePO_zeitResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Die Parameter der Methode:
iObjId | ObjID des Mitarbeiters |
cFremdId | Personalnummer |
iPerObjId | ObjId der Periode |
iPerMonat | Monat der Periode |
iPerJahr | Jahr der Periode |
cQueryString | weitere Filterkriterien |
Einige der Parameter können alternativ zueinander verwendet werden. Soll für einen Parameter kein Wert übergeben werden, kann für Stringwerte der leere String, für alle anderen NIL übergeben werden.
================Request====================
POST /wsa/wsa1 HTTP/1.0
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)
VsDebuggerCausalityData: uIDPowwztjd6qj1OpUpGnyr9ZEcAAAAAweJ3ui8Q2UWEYXdsBGCUFJF4SJ6ccNlLipErFMz7CBUACQAA
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Host: api.virtic.net
Content-Length: 660
Expect: 100-continue
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><zeitID xmlns="http://www.virtic.com/xmlns/virsapZeit/zeit"><UUID>82e67c56c48374a2:38ed0e06:17fd07a06b4:-7ffa;<virsapZeit|PX-820470|PO>;ZnhR4I3WRY7dVhAlXnlYdg==</UUID></zeitID></soap:Header><soap:Body><fetchV103 xmlns="http://www.virtic.com/xmlns/virsapZeit/zeit"><iObjId>95220900</iObjId><cFremdId /><iPerObjId xsi:nil="true" /><iPerMonat>3</iPerMonat><iPerJahr>2022</iPerJahr><cQueryString /></fetchV103></soap:Body></soap:Envelope>
================Response===================
HTTP/1.1 200 OK
Date: Tue, 03 May 2022 14:22:09 GMT
Server: Http Server
Content-Length: 343796
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: sameorigin
Connection: close
Content-Type: text/xml;charset=utf-8
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<fetchV103Response xmlns="http://www.virtic.com/xmlns/virsapZeit/zeit">
<result xsi:nil="true"/>
<zeitV103Out>
<zeitV103OutRow>
<firObjId>0000000000</firObjId>
<ztObjId>586929950</ztObjId>
<marObjId>95220900</marObjId>
<marFremdId>794651</marFremdId>
<marMandant></marMandant>
<marName>Nachname</marName>
<marVorname>Vorname</marVorname>
<perObjId>123456</perObjId>
<perJahr>2022</perJahr>
<perMonat>3</perMonat>
<tgObjId>123456789</tgObjId>
<tgDatum>2022-03-01</tgDatum>
<tgIstFeiertag>false</tgIstFeiertag>
<tgIstArbeitsTag>true</tgIstArbeitsTag>
<sctObjID>551724860</sctObjID>
<sctDatum>2022-03-01</sctDatum>
<sctBerStart>2022-03-01T05:25:17.395+01:00</sctBerStart>
<sctBerEnde>2022-03-01T18:24:11.892+01:00</sctBerEnde>
<sctBez></sctBez>
<sctAnzBSt>1</sctAnzBSt>
<sctHerkunft>Arbeitszeit</sctHerkunft>
<atObjId>94923282</atObjId>
<atFremdId></atFremdId>
<atBez>West, Mo-Fr 8,0 Std. FZR</atBez>
<ztBerStart>2022-03-01T05:25:17.395+01:00</ztBerStart>
<ztBerEnde>2022-03-01T05:25:26.723+01:00</ztBerEnde>
<ztMengeStd>0</ztMengeStd>
<ztMengeStd10>0.0025911111</ztMengeStd10>
<maeObjIdStart>123456789</maeObjIdStart>
<ztStart>2022-03-01T05:25:17.395+01:00</ztStart>
<ztGenehmigtMaeStart>false</ztGenehmigtMaeStart>
<ztKommentarMaeStart></ztKommentarMaeStart>
<maeObjIdEnde>136776248</maeObjIdEnde>
<ztEnde>2022-03-01T05:25:26.723+01:00</ztEnde>
<ztBStBuch>false</ztBStBuch>
<bstObjId>0</bstObjId>
<bstFremdId xsi:nil="true"/>
<bstBez xsi:nil="true"/>
<bstMandant xsi:nil="true"/>
<ztBStStd>0</ztBStStd>
<ztBStStd10>0</ztBStStd10>
<ztAuftrNr></ztAuftrNr>
<ztKm xsi:nil="true"/>
<ztKmEntfernungsTyp xsi:nil="true"/>
<ztKuerzesteEntf xsi:nil="true"/>
<ztFremdIdFakt></ztFremdIdFakt>
<ztNotiz>zahlthotel=no</ztNotiz>
<ztLohnBuch>false</ztLohnBuch>
<zaObjId>111440939</zaObjId>
<zaBez>Dateneingabe unbez.</zaBez>
<fegObjId xsi:nil="true"/>
<fegBez xsi:nil="true"/>
<ztFremdIdLohn></ztFremdIdLohn>
<ztLohnStd>0</ztLohnStd>
<ztLohnStd10>0</ztLohnStd10>
<ztLohnStdFeiertagVerr>0</ztLohnStdFeiertagVerr>
<ztLohnStdFeiertagVerr10>0</ztLohnStdFeiertagVerr10>
<ztHerkunft>Arbeitszeit</ztHerkunft>
<ztIstArbeitszeit>true</ztIstArbeitszeit>
<ztIstKug>false</ztIstKug>
<ztIstPause>false</ztIstPause>
<ztIstSchlechtw>false</ztIstSchlechtw>
<ztIstUeStdRel>true</ztIstUeStdRel>
<ztZeitAnpassung>0</ztZeitAnpassung>
<ztZeitAnpassung10>0</ztZeitAnpassung10>
<ztPauseAbzug>0</ztPauseAbzug>
<ztPauseAbzug10>0</ztPauseAbzug10>
<ztFahrtzeitAbzug>0</ztFahrtzeitAbzug>
<ztFahrtzeitAbzug10>0</ztFahrtzeitAbzug10>
<kstObjIdKst xsi:nil="true"/>
<kstObjIdKtr xsi:nil="true"/>
<ztKStNr xsi:nil="true"/>
<ztKtrNr xsi:nil="true"/>
<ztCreated>2022-05-02T15:37:52.856+02:00</ztCreated>
<fedObjIdStart>132438627</fedObjIdStart>
<fedFremdIdStart></fedFremdIdStart>
<fedBezStart>Verlassen Unterkunft</fedBezStart>
<maeBelegeingabenStart>zahlthotel=no</maeBelegeingabenStart>
<fedObjIdEnde>132438608</fedObjIdEnde>
<fedFremdIdEnde></fedFremdIdEnde>
<fedBezEnde>Fahrt zur Baustelle</fedBezEnde>
<maeBelegeingabenEnde>Besorgung</maeBelegeingabenEnde>
<gewObjId>136490928</gewObjId>
<gewFremdId>23</gewFremdId>
<gewBez>23 - Oberleitung</gewBez>
<ylaObjId>13</ylaObjId>
<ylaIsoCode>DE</ylaIsoCode>
<ylaBez>Germany</ylaBez>
<martObjId>151013841</martObjId>
<martBez>Bauleitender Obermonteur</martBez>
<martVertragsTyp>Angestellter</martVertragsTyp>
<lTransOk>true</lTransOk>
<cErr></cErr>
</zeitV103OutRow>
</zeitV103Out>
<cErr></cErr>
</fetchV103Response>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Es wird die bereits bekannte UUID vom Connect Response verwendet.
================Request====================
POST /wsa/wsa1 HTTP/1.0
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)
VsDebuggerCausalityData: uIDPow0ztjd6qj1OpUpGnyr9ZEcAAAAAweJ3ui8Q2UWEYXdsBGCUFJF4SJ6ccNlLipErFMz7CBUACQAA
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Host: api.virtic.net
Content-Length: 523
Expect: 100-continue
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><zeitID xmlns="http://www.virtic.com/xmlns/virsapZeit/zeit"><UUID>82e67c56c48374a2:38ed0e06:17fd07a06b4:-7ffa;<virsapZeit|PX-820470|PO>;ZnhR4I3WRY7dVhAlXnlYdg==</UUID></zeitID></soap:Header><soap:Body><Release_zeit xmlns="http://www.virtic.com/xmlns/virsapZeit/zeit" /></soap:Body></soap:Envelope>
================Response===================
HTTP/1.1 200 OK
Date: Tue, 03 May 2022 14:22:12 GMT
Server: Http Server
Content-Length: 372
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: sameorigin
Connection: close
Content-Type: text/xml;charset=utf-8
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<Release_zeitResponse xmlns="http://www.virtic.com/xmlns/virsapZeit/zeit">
</Release_zeitResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Es wird die bereits bekannte UUID vom Connect Response verwendet.
================Request====================
POST /wsa/wsa1 HTTP/1.0
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)
VsDebuggerCausalityData: uIDPow4ztjd6qj1OpUpGnyr9ZEcAAAAAweJ3ui8Q2UWEYXdsBGCUFJF4SJ6ccNlLipErFMz7CBUACQAA
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Host: api.virtic.net
Content-Length: 533
Expect: 100-continue
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><wsZeitID xmlns="http://www.virtic.com/xmlns/virsapZeit/wsZeit"><UUID>82e67c56c48374a2:38ed0e06:17fd07a06b4:-7ffa;<virsapZeit|PX-820469|AO>;gbWcNimQ7j9NNaguIeRkXQ==</UUID></wsZeitID></soap:Header><soap:Body><Release_wsZeit xmlns="http://www.virtic.com/xmlns/virsapZeit/wsZeit" /></soap:Body></soap:Envelope>
================Response===================
HTTP/1.1 200 OK
Date: Tue, 03 May 2022 14:22:13 GMT
Server: Http Server
Content-Length: 378
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: sameorigin
Connection: close
Content-Type: text/xml;charset=utf-8
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<Release_wsZeitResponse xmlns="http://www.virtic.com/xmlns/virsapZeit/wsZeit">
</Release_wsZeitResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Die in der Methode fetchV103 verwendeten Parameter dienen der Bildung eines Filters für die Datenbankabfrage.
Hierbei sind folgende Regeln zu beachten:
Abfrage mit FremdID (cFremdId = Personalnummer des Kundensystems) und Monat und Jahr für die Periodenauswahl mit der Methode fetchV103
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header>
<zeitID xmlns="http://www.virtic.com/xmlns/virsapZeit/zeit">
<UUID>82e67c56c48374a2:38ed0e06:17fd07a06b4:-7ffa;<virsapZeit|PX-841369|PO>;XSE/e47JAHpRTq74ZiY9vA==</UUID>
</zeitID>
</soap:Header>
<soap:Body>
<fetchV103 xmlns="http://www.virtic.com/xmlns/virsapZeit/zeit">
<iObjId xsi:nil="true"/>
<cFremdId>794651</cFremdId>
<iPerObjId xsi:nil="true"/>
<iPerMonat>3</iPerMonat>
<iPerJahr>2022</iPerJahr>
<cQueryString/>
</fetchV103>
</soap:Body>
</soap:Envelope>
Abfrage mit einer Erweiterung des Filters auf einen Zeitraum durch die Verwendung des Parameter cQueryString. Zu beachten ist die Syntax bei der Verwendung des logischen & (und) Operators. Dieser muss URL Post encoded werden (&).
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header>
<zeitID xmlns="http://www.virtic.com/xmlns/virsapZeit/zeit">
<UUID>82e67c56c48374a2:38ed0e06:17fd07a06b4:-7ffa;<virsapZeit|PX-842192|PO>;8+MwzE/2qxHlcTlkRmG64g==</UUID>
</zeitID>
</soap:Header>
<soap:Body>
<fetchV103 xmlns="http://www.virtic.com/xmlns/virsapZeit/zeit">
<iObjId xsi:nil="true"/>
<cFremdId>794651</cFremdId>
<iPerObjId xsi:nil="true"/>
<iPerMonat>3</iPerMonat>
<iPerJahr>2022</iPerJahr>
<cQueryString>sctDatumGE=2022-03-05T00:00:00.000&sctDatumLE=2022-03-15T23:00:00.000</cQueryString>
</fetchV103>
</soap:Body>
</soap:Envelope>
Teilen Feedback