[Teil-Gelöst] Timeout / Leerlauf für Codeunit

25. März 2013 16:45

Hallo,

ich hab mal wieder was 'blödes' :-(

Ich sollte eine SingleInstance Codeunit erzeugen, welche ja im Hintergrund immer läuft.
Diese speichert XML-Daten für das rasche Einlesen vorläufig nur in eine temporäre Tabelle. Sobald sich die Codeunit für ca. 5 Sekunden im Leerlauf befindet, soll sie überprüfen, ob in der temporären Tabelle Daten enthalten sind. Wenn ja, dann sollten diese Daten von der temp. Tabelle in eine normale Tabelle geschrieben werden.

Jedoch finde ich hier und bei mibuso nicht wirklich was, was mir da weiterhelfen könnte.

Ist meine Idee überhaupt so umsetzbar? Wenn ja, wie?

Warum ich das so brauche:
Ich bekomme von einem externen Programm Daten/Nachrichten im Millisekundentakt zugeschickt. NAV ist zu langsam, um diese zu empfangen und zu bearbeiten. Deshalb die Idee mit der temporären Tabelle, diese Daten dann in eine echte Tabelle übergeben und dann die Verarbeitung anzufangen.

MfG
kyrios
Zuletzt geändert von kyrios am 28. März 2013 17:44, insgesamt 1-mal geändert.

Re: Timeout / Leerlauf für Codeunit

25. März 2013 18:42

Was heißt denn "zuschicken" in dem Fall? Sind das Dateien? Oder MSMQ? Oder Web Service? Oder per Automation Server?

Re: Timeout / Leerlauf für Codeunit

25. März 2013 23:24

Codeunit 448 Job Queue Dispacher ist auch Single Instance und nutzt den Timerautomationserver, da kann man sich viele Funktionen abschauen.

Re: Timeout / Leerlauf für Codeunit

26. März 2013 10:27

Wie lässt Du die SingleInstance "im Hintergrund" laufen?
Benutzt Du dafür den NAS mit Job Queue? Oder hast Du irgendwo einen Client offen, der nur da ist um die Codeunit auszuführen?

Re: Timeout / Leerlauf für Codeunit

26. März 2013 16:52

JanGD hat geschrieben:Wie lässt Du die SingleInstance "im Hintergrund" laufen?
Benutzt Du dafür den NAS mit Job Queue? Oder hast Du irgendwo einen Client offen, der nur da ist um die Codeunit auszuführen?

Dafür werde ich eine NAS mit Job Queue verwenden.

Kowa hat geschrieben:Codeunit 448 Job Queue Dispacher ist auch Single Instance und nutzt den Timerautomationserver, da kann man sich viele Funktionen abschauen.

Hab ich mir schon angeschaut. Da wird lediglich der Timer auf 20sek. gesetzt und alle 20sek. führt der da die funktionen aus (während des ausführens wird der timer gestoppt).
Ich brauche dies jedoch etwas anderst - indem überprüft wird, ob der schon zB 5 sekunden läuft, ohne dass was ausgeführt wurde. Erst dann soll eine Aktivität gestartet werden.

HattrickHorst hat geschrieben:Was heißt denn "zuschicken" in dem Fall? Sind das Dateien? Oder MSMQ? Oder Web Service? Oder per Automation Server?

Zuschicken heißt in dem Fall, dass ich per TCP/IP-Schnittstelle XML Daten von einer anderen Software zugeschickt bekomme, welche ich eig. sofort annehmen, abarbeiten und beantworten sollte. NAV kann jedoch kein multitasking.

Re: Timeout / Leerlauf für Codeunit

27. März 2013 12:04

kyrios hat geschrieben:
HattrickHorst hat geschrieben:Was heißt denn "zuschicken" in dem Fall? Sind das Dateien? Oder MSMQ? Oder Web Service? Oder per Automation Server?

Zuschicken heißt in dem Fall, dass ich per TCP/IP-Schnittstelle XML Daten von einer anderen Software zugeschickt bekomme, welche ich eig. sofort annehmen, abarbeiten und beantworten sollte. NAV kann jedoch kein multitasking.

Als Stream asynchron und ohne handshake?! Dann laß lieber die Daten von einer .NET-Applikation annehmen. Anschließend kannst du die Daten als Datei oder MSMQ oder sowas ablegen und NAV liest die dann von dort ein. Alles andere wäre aus meiner Sicht viel zu instabil.
Zuletzt geändert von HattrickHorst am 29. März 2013 14:12, insgesamt 1-mal geändert.

Re: Timeout / Leerlauf für Codeunit

28. März 2013 17:42

HattrickHorst hat geschrieben:Als Stream asynchron und ohne handshake?! Dann laß lieber die Daten von einer .NET-Applikation annehmen. Anschließend kannst du die Daten als Datei oder MSMQ oder sowas ablegen und NAV ließt die dann von dort ein. Alles andere wäre aus meiner Sicht viel zu instabil.

Ja, muss ich wohl echt so machen, es hat sich nämlich noch ein anderes Problem herausgestellt (NAV darf bei der Schnittstelle nicht als Server agieren - nur als Client). :evil:

Statusmeldung bekommt ihr noch, sobald dies umgesetzt wurde - damit ihr auch wisst, wie ich das gelöst habe.

Vielen Dank bisher für eure Hilfestellungen!