Über das SysOperation-Framework kann man Funktionen auch asynchron ausführen lassen. Dafür wird der ExecutionMode auf SysOperationExecutionMode::Asynchronous gesetzt.
Dies macht beispielsweise dann Sinn, wenn eine zeitintensive Aktion gestartet werden soll, der Benutzer aber nicht zwinged auf das Ende dieser Aktion warten muss und dafür bereits an anderen Themen weiterarbeiten können soll.
Allerdings funktioniert eine solche asynchrone Verarbeitung nur, wenn folgende Kriterien erfüllt sind:
Die Funktion wurde im AOT als Service eingebunden
Dieses Service wurde zur Servicegruppe AxClient hinzugefügt und bereitgestellt
Der Benutzer hat die Option Geschäftliche Arbeitsgänge in CIL ausführen aktiviert
Nachstehend ein einfaches Beispiel für ein solches Konstrukt:
Service-Klasse
class Tutorial_AsyncService extends SysOperationServiceBase
{
}
[SysEntryPointAttribute(true)]
public void runService()
{
// Do your work...this simple example only sleeps for 10 seconds
sleep(10000);
info("Finished");
}
Controller-Klasse
public class Tutorial_AsyncController extends SysOperationServiceController
{
}
public static void main(Args _args)
{
Tutorial_AsyncController controller;
controller = new Tutorial_AsyncController(
classStr(Tutorial_AsyncService),
methodStr(Tutorial_AsyncService, runService),
SysOperationExecutionMode::Asynchronous
);
controller.run();
}
Service
Servicegruppe AxClient
Aufruf
Der Aufruf der Funktion erfolgt beispielsweise über ein MenuItem für die Controller-Klasse oder per Code über:
Tutorial_AsyncController::main()
Dieser Beitrag bezieht sich auf die Version: Dynamics AX 2012
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.
Mehr dazu
Über das SysOperation-Framework kann man Funktionen auch asynchron ausführen lassen. Dafür wird der ExecutionMode auf SysOperationExecutionMode::Asynchronous gesetzt.
Dies macht beispielsweise dann Sinn, wenn eine zeitintensive Aktion gestartet werden soll, der Benutzer aber nicht zwinged auf das Ende dieser Aktion warten muss und dafür bereits an anderen Themen weiterarbeiten können soll.
Allerdings funktioniert eine solche asynchrone Verarbeitung nur, wenn folgende Kriterien erfüllt sind:
Nachstehend ein einfaches Beispiel für ein solches Konstrukt:
Service-Klasse
Controller-Klasse
Service
Servicegruppe AxClient
Aufruf
Der Aufruf der Funktion erfolgt beispielsweise über ein MenuItem für die Controller-Klasse oder per Code über: