SysOperation-Framework: Asynchrone Verarbeitung

Ü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

Service 

 

Servicegruppe AxClient

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

Kommentar hinzufügen
 
 

 

 
 
 
Beiträge des aktuellen Monats
März 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
25262728293031
 
© 2006-2024 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
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