Funktionen nacheinander aufrufen, bleibt die Abfolge?

10. September 2018 15:24

Hallo miteinander,

bin neu im Umgang mit NAV, habe nur Erfahrungen in OOP.
Bei uns läuft NAV 2013 R2.

Nun zu meiner Frage:
Ich habe in einer CodeUnit zwei Funktionen die Nacheinander analog aufgerufen werden sollen.
Beide Funktionen haben keinen Rückgabewert.
Problem dabei ist, dass die Funktionen auch genau in der Reihenfolge ausgeführt werden müssen.
In Java & Co. kein Problem. Wie sieht das hier aus, wenn die erste Funktion auf die Datenbank zugreift und dabei etwas länger braucht?
Startet die zweite bevor die erste fertig ist?
Falls ja, laufen dann zwei Threads nebeneinander?

Oder ist es eher wie in anderen Sprachen und die zweite Funktion wird erst nach Beendigung der ersten ausgeführt.

Vielen Dank
Gruß
Andre

Re: Funktionen nacheinander aufrufen, bleibt die Abfolge?

10. September 2018 16:46

ckh hat geschrieben:...Oder ist es eher wie in anderen Sprachen und die zweite Funktion wird erst nach Beendigung der ersten ausgeführt.

Ja genau so.

Re: Funktionen nacheinander aufrufen, bleibt die Abfolge?

10. September 2018 17:09

Hallo,
Oder ist es eher wie in anderen Sprachen und die zweite Funktion wird erst nach Beendigung der ersten ausgeführt.

Naja, das kommt ein wenig darauf an. :mrgreen:

Schreibst du in dem aufrufendes Programm:
Code:
CodeUnit.Funktion1;
Codeunit.Funktion2;

dann ist das so. Zuerst wird "Funktion1" ausgeführt und dann "Funktion2".

Gemein wird es nur, wenn die Funktionen von unterschiedlichen Servicetiers aus unterschiedlichen Modulen separat aufgerufen werden, oder diese Funktionen selbst ein STARTSESSION ausführen. dann wird zwar das STARTSESSION in der richtigen Reihenfolge ausgeführt, nicht aber der Code, der durch das STARTSESSION ausgeführt wurde. Der läuft dann u.U. parallel ab.

Gruß Fiddi

Re: Funktionen nacheinander aufrufen, bleibt die Abfolge?

11. September 2018 06:44

Guten Morgen,

hat mir sehr weiter geholfen.
Es ist so, dass ich erst Funktion1(); aufrufe und danach direkt Funktion2();
Beide Funktionen werden hintereinander aus einer CodeUnit aufgerufen.
Da aber beide auf den Selben Datenbankeintrag zugreifen, wäre es fatal, wenn dies gleichzeitig passiert.

Danke für eure Unterstützung.

Gruß
Andre

Re: Funktionen nacheinander aufrufen, bleibt die Abfolge?

11. September 2018 08:58

Um auf Nummer sicher zu gehen Funktion2 am Ende von Funktion1 aufrufen? :D :mrgreen: :-P :twisted:

Re: Funktionen nacheinander aufrufen, bleibt die Abfolge?

11. September 2018 13:45

Hallo,

brauchst nicht auf Nummer sicher zu gehen, NAV arbeitet einzelne Funktionen in einem Objekt immer nacheinander ab.
Wäre schlimm wenn nicht. :wink:

Das würde auch dem Ansatz des Natural Language Programming widersprechen, der von Marije Brummel hier vorgestellt wurde:
https://marijebrummel.blog/2014/12/08/i ... ogramming/

Kenne die Thematik aber auch aus Javascript, daher kann ich deine Ängste schon nachvollziehen. :-D

Gruß