REPEAT UNTIL Schleife "blockiert" NAV

Bild Microsoft Dynamics NAV 2016

REPEAT UNTIL Schleife "blockiert" NAV

Beitragvon d.larisch » 2. Dezember 2016 16:36

Hallo Liebe Community,

ich stehe gerade vor einer Programmierherausforderung. Und zwar möchte ich ein externen Prozess aus NAV heraus aufrufen, wenn dieser Prozess beendet wird soll eine Rückmeldung an NAV erfolgen, dass dieser beendet wurde.
Dies habe ich nun zuerst mit einer REPEAT UNTIL Schleife gelöst, diese "blockiert" aber NAV, da es die ganze Zeit wartet bis die Schleife durchgelaufen ist. Meine erste Idee war eine Single Instance Codeunit, wo aber das gleiche Problem auftritt.

Hat vielleicht noch jemand eine andere Idee, wie das umzusetzen wäre?
Benutzeravatar
d.larisch
Microsoft Partner
Microsoft Partner
 
Beiträge: 25
Registriert: 21. März 2016 17:41
Realer Name: Dennis Larisch
Arbeitsort: Berlin
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 7.00 - 19.00

Re: REPEAT UNTIL Schleife "blockiert" NAV

Beitragvon Natalie » 2. Dezember 2016 16:44

Was genau meint du denn mit dem externen Prozess?
Gruß, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! Dafür ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: REPEAT UNTIL Schleife "blockiert" NAV

Beitragvon MichaelK » 2. Dezember 2016 16:46

Hallo,

hast du das schon einmal über einen Timer probiert?

Gruß

Michael
MichaelK
Microsoft Partner
Microsoft Partner
 
Beiträge: 550
Registriert: 4. März 2009 10:21
Realer Name: Michael Kaluza
Arbeitsort: Lustenau
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3.70,4.00,5,2009,2013,2015

Re: REPEAT UNTIL Schleife "blockiert" NAV

Beitragvon d.larisch » 2. Dezember 2016 17:23

Natalie hat geschrieben:Was genau meint du denn mit dem externen Prozess?


z.B.: im Grunde eine einfache *.exe

MichaelK hat geschrieben:hast du das schon einmal über einen Timer probiert?


der Timer in NAV blockiert doch genauso

Meine Überlegung wäre, einfach über .Net zu prüfen, ob der Prozess noch läuft und wenn nicht, dann an NAV eine Rückmeldung schicken
Benutzeravatar
d.larisch
Microsoft Partner
Microsoft Partner
 
Beiträge: 25
Registriert: 21. März 2016 17:41
Realer Name: Dennis Larisch
Arbeitsort: Berlin
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 7.00 - 19.00

Re: REPEAT UNTIL Schleife "blockiert" NAV

Beitragvon pjung » 5. Dezember 2016 08:41

Also wenn ich das ganze richtig verstanden habe willst du den Prozess von dem externen Programm/*.exe Asynchron verarbeiten.
Mir stellt sich noch die Frage, ob die Rückmeldung nur an den Ausführenden-Benutzer gehen soll?

Wenn ja würde ich es mit folgendem probieren.

Ich würde mir ein Event schreiben und dieses dann Triggern und in einer anderen CodeUnit würde ich es dieses Event fangen.
Anschließend würde ich es in dieser CodeUnit das Programm startet und dort so lange warten bis das Programm beendet ist.

Wenn Nein

würde ich eine Datei ablegen und mit einem Schedule-Job überwachen ob die Datei abgelegt wurde und wenn diese vorhanden ist die *.exe ausführen.
pjung
 
Beiträge: 89
Registriert: 10. Februar 2016 09:55

Re: REPEAT UNTIL Schleife "blockiert" NAV

Beitragvon fiddi » 5. Dezember 2016 09:03

Hallo,

die erste Frage, die ich mir stellen würden, ist ob das Programm auf die Beendigung warten soll, das scheint hier nicht der Fall zu sein, denn dann wäre es kein Problem, wenn NAV blockiert.
Die zweite Frage ist, was mit "Rückmeldung" gemeint ist. Denn eine Rückmeldung kann eine Message auf dem Bildschirm sein, eine Mail, ein Eintrag in einer Tabelle, oder evtl. auch das Ergebnis eines geplanten Reports.

Wenn diese Fragen geklärt sind, dann kann man nach Lösungen suchen. Das könnte eine Hintergrundsession sein (STARTSESSION), ein geplanter Report, ein Event, oder die Kombination aus mehreren.

Gruß Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! Dafür ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: REPEAT UNTIL Schleife "blockiert" NAV

Beitragvon d.larisch » 5. Dezember 2016 11:36

fiddi hat geschrieben:Wenn diese Fragen geklärt sind, dann kann man nach Lösungen suchen. Das könnte eine Hintergrundsession sein (STARTSESSION), ein geplanter Report, ein Event, oder die Kombination aus mehreren.


Um das ganze mal etwas verständlicher zu machen, hier ein kleiner Ablauf den ich mir vorgestellt habe:

- Benutzer 1 soll aus NAV heraus ein externen Prozess starten, sobald dieser gestartet wurde, wird in NAV eine Sperre gesetzt, dass kein anderer Benutzer diesen Prozess ein zweites mal ausführen kann
- Benutzer 1 will aber in NAV weiterhin arbeiten, auch wenn er den externen Prozess gestartet hat und dieser im Hintergrund weiterhin läuft
- Wenn Benutzer 1 diesen Prozess beendet soll die Sperre in NAV logischerweise wieder rausgenommen werden, damit alle anderen Benutzer den Prozess wieder ausführen können

Mit Rückmeldung meine ich hier in diesem Fall, wenn Benutzer 1 den externen Prozess beendet hat, dass eine Funktion prüft ob dieser beendet wurde und eine Rückmeldung an NAV macht, damt NAV die Sperre wieder entfernen kann.

pjung hat geschrieben:Ich würde mir ein Event schreiben und dieses dann Triggern und in einer anderen CodeUnit würde ich es dieses Event fangen.
Anschließend würde ich es in dieser CodeUnit das Programm startet und dort so lange warten bis das Programm beendet ist.


Das mache ich aktuell genau so wie du es beschrieben hast, und genau das blockiert mir NAV in der Zeit in der ich warte, bis das Programm beendet wurde.
Aber die zweite Variante klingt auch Interessant, ich glaube ich komme um eine externe .NET dll einfach nicht herum.
Benutzeravatar
d.larisch
Microsoft Partner
Microsoft Partner
 
Beiträge: 25
Registriert: 21. März 2016 17:41
Realer Name: Dennis Larisch
Arbeitsort: Berlin
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 7.00 - 19.00

Re: REPEAT UNTIL Schleife "blockiert" NAV

Beitragvon fiddi » 5. Dezember 2016 11:50

Hallo,

ich kenne das Problem jetzt noch nicht ganz genau, aber ich würde da mal von Seite ran gehen, den Prozess Benutzer-unabhängig per JobQueue zu starten, und dann die Ergebnisse für die Benutzer bereitstellen.

Gruß Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! Dafür ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: REPEAT UNTIL Schleife "blockiert" NAV

Beitragvon d.larisch » 7. Dezember 2016 12:52

fiddi hat geschrieben:ich kenne das Problem jetzt noch nicht ganz genau, aber ich würde da mal von Seite ran gehen, den Prozess Benutzer-unabhängig per JobQueue zu starten, und dann die Ergebnisse für die Benutzer bereitstellen.


Also ich habe es jetzt erstmal über eine Codeunit gelöst die nach einem bestimmten Intervall prüft, ob der Prozess noch läuft. Diese Codeunit wird über eine Projektwarteschlange angestoßen. Mal sehen wie weit ich damit komme...

Danke trotzdem für eure Ideen.
Benutzeravatar
d.larisch
Microsoft Partner
Microsoft Partner
 
Beiträge: 25
Registriert: 21. März 2016 17:41
Realer Name: Dennis Larisch
Arbeitsort: Berlin
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 7.00 - 19.00


Zurück zu NAV 2016

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast