Munixo Support Forum - Kostenfreier Support für Munixo Anwender und Entwicklungspartner
0 Punkte

Eine ähnliche Frage kam bereits vor, an einem konkreten Beispiel würde ich das gerne noch einmal durchgehen. Meine Frage kam auf beim Aufrufen zweier Prozesse auf einem Datensatz. Ziel ist es dabei, einen Prozess aufzurufen und abzuschliessen, befor ein zweiter Prozess ausgeführt wird. Dabei gibt es in LUA mehrere scheinbar gleich aussehende Möglichkeiten. Wie genau werden die LUA Aufrufe von folgenden zwei Varianten verarbeitet:

V1: Erster Prozess sync, zweiter Prozess Async

function start()
    local parameters ={{"SelectedGuids", Utils:Serialize(guids)}}
    DB:Process("PI_XXXX_Extensions", "FirstProcess", parameters);
    
    local action =  DB:ProcessAsync(this, "PI_XXXX_Extensions", "SecondProcess", parameters);
    action:AddEvent("completed", "SecondProcessCompleted");
end
function SecondProcessCompleted(sender, args)
    if(HasErrors(args)) then
        return
    end
end
start()

V2: Beide Prozesse async, zweiter wird vom success Event des ersten aufgerufen

function start()
    local parameters ={{"SelectedGuids", Utils:Serialize(guids)}}
    local firstAction = DB:ProcessAsync(this,"PI_XXXX_Extensions", "FirstProcess", parameters);
    firstAction:AddEvent("completed", "FirstProcessCompleted");
end
function FirstProcessCompleted(sender, args)
    if(HasErrors(args)) then
        return
    else
        local parameters ={{"SelectedGuids", Utils:Serialize(guids)}}
        local action =  DB:ProcessAsync(this, "PI_XXXX_Extensions", "SecondProcess", parameters);
        action:AddEvent("completed", "SecondProcessCompleted");
    end
end
function SecondProcessCompleted(sender, args)
    if(HasErrors(args)) then
        return
    end
end
start()

Was für einen Unterschied würde die Implementierung bei Rückmeldung an den User machen?

Vielen Dank für die Hilfe schon einmal

von (1.1k Punkte)

1 Antwort

0 Punkte

Es sollte keinen Unterschied geben in der Art der Ausführung. Es gilt weiterhin Action 1 => Action 2.

Dennoch wird firstAction in Bsp. 2 nun async ausgeführt. Das heißt das alle anderen Dinge darunter direkt ausgeführt werden.  Im Gegensatz zu Bsp. 1 wird hier erst der DB:Process ausgeführt und danach Weiteres.

von (40 Punkte)