Neu JTL Worker xml-import triggern

WAWI-USER

Aktives Mitglied
7. Februar 2011
7
1
Berlin
Hallo allerseits,
ich habe ein web basiertes Tool gebaut um Lieferscheine schneller zu erstellen und zu bearbeiten es ist direkt mit der WAWI SQL Datenbank verbunden um sich Produkt/Kunden infos zu besorgen und erstellt anschließend ein auftrags-xml. Der wird dann in der Tabelle tXMLBestellImport abgelegt. nun will ich aber nicht immer bis zu 5 minuten warten bis der JTL-Worker den automatischen import macht, auch will ich den import dienst nicht immer manuell neu starten müssen.
gibt es hier irgendein workaround, irgend eine Prozedur die ich triggern kann damit immer beim upload die xml Dateien sofort weiter verarbeitet werden? Die Wawi API will ich nicht nutzten da 199€ monatlich für eine selbst gehostete API unfassbar teuer ist.

jegliche Hilfe ist sehr Willkommen!
 

no80

Sehr aktives Mitglied
28. Juni 2023
755
89
Du kannst per Ameise in csv oder ggf. noch über die externDLL.

kannst deine XML Teile bitte
 

John

Sehr aktives Mitglied
3. März 2012
4.215
1.088
Berlin
Der Worker besteht ja aus dem Hauptprozess, der in der DB nachschaut, welche Abgleiche wann zu erledigen sind. Entsprechend startet er dann Unterprozesse als eigene Instanzen.
Vielleicht reicht es aus, dem Hauptprozess durch Modifikation des Eintrags für den letzen Start des XML Imports vorzugaukeln, dass dieser zuletzt vor mehr als 5 Minuten lief.
Einfach den Zeitpunkt des letztens Laufes in der Datenbank zurück datieren.

Versuch ist das wert...
 

WAWI-USER

Aktives Mitglied
7. Februar 2011
7
1
Berlin
Du kannst per Ameise in csv oder ggf. noch über die externDLL.

kannst deine XML Teile bitte
unsere xml ist auf dem oldWawi.xsd basierend.
was meinst du mit der externDLL
unser template sieht dann so aus:


Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<tBestellungen>
    <tBestellung kFirma="{{ kFirma }}">
        <cSprache>{{ cSprache|default('ger') }}</cSprache>
        <cWaehrung>{{ cWaehrung }}</cWaehrung>
        <fGuthaben>0.00</fGuthaben>
        <fGesamtsumme>{{ fGesamtsumme }}</fGesamtsumme>
        <cBestellNr>{{ cBestellNr }}</cBestellNr>
        <cExterneBestellNr></cExterneBestellNr>
        <cVersandartName>{{ cVersandartName }}</cVersandartName>
        <cVersandInfo>{{ cVersandInfo|default('') }}</cVersandInfo>
        <dVersandDatum></dVersandDatum>
        <cTracking></cTracking>
        <cLogistiker></cLogistiker>
        <dLieferDatum></dLieferDatum>
        <cKommentar></cKommentar>
        <cBemerkung></cBemerkung>
        <dErstellt>{{ dErstellt }}</dErstellt>
        <cZahlungsartName>{{ cZahlungsartName }}</cZahlungsartName>
        <dBezahltDatum></dBezahltDatum>
        <fBezahlt>0.00</fBezahlt>
        {% if nZahlungsziel is defined and nZahlungsziel is not empty %}
        <nZahlungsziel>{{ nZahlungsziel }}</nZahlungsziel>
        {% endif %}

        {% for bestellpos in products %}
        <twarenkorbpos>
            <cName>{{ bestellpos.cName }}</cName>
            <cArtNr>{{ bestellpos.cArtNr }}</cArtNr>
            <cBarcode>{{ bestellpos.cBarcode }}</cBarcode>
            <cSeriennummer></cSeriennummer>
            <cEinheit>{{ bestellpos.cEinheit }}</cEinheit>
            <fPreisEinzelNetto>{{ bestellpos.fPreisEinzelNetto }}</fPreisEinzelNetto>
            <fPreis>{{ bestellpos.fPreis }}</fPreis>
            <fMwSt>{{ bestellpos.fMwSt }}</fMwSt>
            <fAnzahl>{{ bestellpos.fAnzahl }}</fAnzahl>
            <cPosTyp>standard</cPosTyp>
            <fRabatt>{{ bestellpos.fRabatt }}</fRabatt>
        </twarenkorbpos>
        {% endfor %}

        <tkunde>
            <cKundenNr>{{ customer.cKundenNr|default('') }}</cKundenNr>
            <cAnrede>{{ customer.cAnrede|default('') }}</cAnrede>
            <cTitel>{{ customer.cTitel|default('') }}</cTitel>
            <cVorname>{{ customer.cVorname|default('') }}</cVorname>
            <cNachname>{{ customer.cNachname|default(customer.cName|default('')) }}</cNachname>
            <cFirma>{{ customer.cFirma|default('') }}</cFirma>
            <cStrasse>{{ customer.cStrasse|default('') }}</cStrasse>
            <cAdressZusatz>{{ customer.cAdressZusatz|default('') }}</cAdressZusatz>
            <cPLZ>{{ customer.cPLZ|default('') }}</cPLZ>
            <cOrt>{{ customer.cOrt|default('') }}</cOrt>
            <cBundesland>{{ customer.cBundesland|default('') }}</cBundesland>
            <cLand>{{ customer.cLand|default('') }}</cLand>
            <cTel>{{ customer.cTel|default('') }}</cTel>
            <cMobil>{{ customer.cMobil|default('') }}</cMobil>
            <cFax>{{ customer.cFax|default('') }}</cFax>
            <cMail>{{ customer.cMail|default('') }}</cMail>
            <cUSTID>{{ customer.cUSTID|default('') }}</cUSTID>
            <cWWW>{{ customer.cWWW|default('') }}</cWWW>
            <cHerkunft>{{ customer.cHerkunft|default('Wawi') }}</cHerkunft>
        </tkunde>

        <tlieferadresse>
            <cAnrede>{{ deliveryAddress.cAnrede|default('') }}</cAnrede>
            <cVorname>{{ deliveryAddress.cVorname|default('') }}</cVorname>
            <cNachname>{{ deliveryAddress.cNachname|default('') }}</cNachname>
            <cTitel>{{ deliveryAddress.cTitel|default('') }}</cTitel>
            <cFirma>{{ deliveryAddress.cFirma|default('') }}</cFirma>
            <cStrasse>{{ deliveryAddress.cStrasse|default('') }}</cStrasse>
            <cAdressZusatz>{{ deliveryAddress.cAdressZusatz|default('') }}</cAdressZusatz>
            <cPLZ>{{ deliveryAddress.cPLZ|default('') }}</cPLZ>
            <cOrt>{{ deliveryAddress.cOrt|default('') }}</cOrt>
            <cBundesland>{{ deliveryAddress.cBundesland|default('') }}</cBundesland>
            <cLand>{{ deliveryAddress.cLand|default('') }}</cLand>
            <cTel>{{ deliveryAddress.cTel|default('') }}</cTel>
            <cMobil>{{ deliveryAddress.cMobil|default('') }}</cMobil>
            <cFax>{{ deliveryAddress.cFax|default('') }}</cFax>
            <cMail>{{ deliveryAddress.cMail|default('') }}</cMail>
        </tlieferadresse>
    </tBestellung>
</tBestellungen>
 
  • Gefällt mir
Reaktionen: no80

WAWI-USER

Aktives Mitglied
7. Februar 2011
7
1
Berlin
Der Worker besteht ja aus dem Hauptprozess, der in der DB nachschaut, welche Abgleiche wann zu erledigen sind. Entsprechend startet er dann Unterprozesse als eigene Instanzen.
Vielleicht reicht es aus, dem Hauptprozess durch Modifikation des Eintrags für den letzen Start des XML Imports vorzugaukeln, dass dieser zuletzt vor mehr als 5 Minuten lief.
Einfach den Zeitpunkt des letztens Laufes in der Datenbank zurück datieren.

Versuch ist das wert...
ich habe versucht Worker.tStatus dZeitstempelUtc des xmlBestellImport workers 10 minuten zurück zusetzen aber das hat leider keinen einfluss. auch den interval in der DB ändern macht nichts.
war aber definitiv einen versuch wert.
 

WAWI-USER

Aktives Mitglied
7. Februar 2011
7
1
Berlin
Es führt wohl keine weg drum herum. ich werde die Daten direkt in die Auftrags Tabellen schreiben müssen. das wollte ich eigentlich nicht aber ich denke es geht nicht anders.
Trotzdem vielen Dank für die Ideen
 

John

Sehr aktives Mitglied
3. März 2012
4.215
1.088
Berlin
Hmm, vielleicht kann man auch mit einem Tool von SysINternals mitschneiden, wie der Worker Hauptprozess den XML Subprozess startet und mit dem Mitschnitt den Subprozess aus einer eigenen Anwendung heraus selbst starten?
Ich würde Auftrag selbst anlegen echt versuchen zu vermeiden oder ggf. via Ameise gehen. Selbst schreiben ist echt ekelig bzgl. zu beachtender Seiteneffekte.
 

Ähnliche Themen