Dynamics AX Blog - sysoperation-framework - Seite 3

Momentan angezeigt werden nur Beiträge, bei denen das Schlagwort »sysoperation-framework« eingetragen wurde. Filter entfernen

SysOperation-Klassen mit Hilfe von CodePermissions berechtigen

Um für eine Funktion, die über das SysOperaton-Framework abgebildet wurde, die Berechtigungen über eine Code Permission abzubilden, sind folgende Schritte notwendig:

  1. Klassen erstellen
  2. MenuItem erstellen (für Controller)
  3. Code Permission erstellen
  4. In dieser CP im Knoten Server-Methods die auszuführende Methode aus der Serviceklasse einfügen
  5. In den Tables-Knoten alle Tabellen die benötigt werden einfügen und entsprechend berechtigen
  6. CodePermssion beim MenuItem in der Eigenschaft LinkedPermissionObject eintragen und als LinkedPermissionType den Wert CodePermission auswählen
  7. Das MenuItem wie üblich in ein Privilige oder eine Aufgabe einfügen

Abbildung: Darstellung von Schritt 4

Screenshot

Nachzulesen auf MSDN.


 
 

SysOperation-Klassen per Job erstellen

Wer schon einmal eine Funktion mit Hilfe des SysOperation-Frameworks umgesetzt hat weiß, daß das Erstellen der bis zu vier notwendigen Klassen doch etwas Tipparbeit ist.

ScreenshotFür faule effiziente Zeitgenossen habe ich deshalb den nachstehenden Job entwickelt, mit dessen Hilfe sich diese zeitraubende Arbeit deutlich verkürzen kann.

Man gibt im Job über die Variable baseClassName einen "Basisnamen" für seine Funktion an und der Job erstellt alle vier Klassen (Controller, Dataprovider, UIBuilder und Service).

Zusätzlich gibt es im Job noch eine Map namens dataContractParmsMap aus der - soferne man Inhalte in diese Map eingefügt hat - bei der Generierung des Dataproviders auch gleich passende parm-Methoden erstellt werden. Im Job enthält die Map zwei Einträge für eine Debitorenkontonummer und eine Artikelnummer.


 
 

Aufruf des SysOperation-Frameworks per Code

Wenn man eine Funktion die über das SysOperation-Framework abgebildet ist per Code aufrufen möchte, kann der folgende Job zeigen, wie man das machen kann.

static void runSysOperationThroughCode(Args _args)
{
    TutorialSysOperationServiceController controller;
    TutorialSysOperationDataContract dataContract;
    SysOperationStartResult sysOperationStartResult;
    
    controller = TutorialSysOperationServiceController::newFromArgs(new Args()); 

    dataContract = controller.getDataContractObject('_dataContract'); 

    controller.parmExecutionMode(SysOperationExecutionMode::Synchronous); 

    dataContract.parmFilenameSave(@"c:\temp\myFile.txt");
    dataContract.parmCustAccount('US-006');
       
    sysOperationStartResult =
    controller.startOperation();
}

 
 

SysOperation: Formular mit bestimmten Datensatz nach dem Verarbeiten öffnen

Stellt euch folgende Aufgabenstellung vor: Es soll über eine vom SysOperation-Framework abgeleitete Klasse ein Datensatz erstellt oder aktualisiert werden. Danach soll sich ein bestimmtes Formular mit eben diesem Datensatz öffnen damit der Benutzer gleich mit evtl. weiteren manuellen Änderungen am Datensatz fortfahren kann.

Ich nutze für eine solche Aufgabenstellung gerne die afterOperation() der Kontroller-Klasse. In dieser kann ich den operationReturnValue meiner Service-Klasse auslesen und entsprechend verarbeiten.


 
 

AX 2012: SysOperation-Framework: Ein eigenes Formular als Dialog verwenden II

In dem folgenden Beitrag habe ich schon einmal beschrieben, wie man innerhalb des SysOperation-Frameworks ein eigenes Formular als Dialog einbinden kann. Mittlerweile bin ich auf eine wesentlich einfachere Variante gestossen:

  • Erstellen einer Kopie des Forms SysOperationTemplateForm
  • Überschreiben der Methode templateForm() wie im folgenden angedeutet
protected FormName templateForm()
{
    FormName ret;

    ret = formStr(CopyOfSysOperationTemplateForm);

    return ret;
}

 
 

AX 2012: SysOperation-Framework: Security-Hinweis

Wenn man in einer Service-Klasse das Attribute SysEntryPointAttribute auf True gesetzt hat (wie ich dies beispielsweise in diesem Blog-Beitrag getan habe), darf man nicht vergessen, die jeweilige Methode in den Knoten Permissions > Server Methods eines Security-Privileges einzufügen. Nur das Hinzufügen des MenuItems der jeweiligen Controller-Klasse reicht nicht aus! Sonst kann der Benutzer unter Umständen zwar den Dialog der Funktion aufrufen, diese dann aber nicht starten.

Weiters sollte man beachten, daß man Tabellen, die von dieser Klasse verwendet/befüllt werden gleichermassen über ein Privilege berechtigt.

Screenshot Privilege


 
 

AX 2012: SysOperation-Framework: Ein eigenes Attribut erstellen

Die Attribute des SysOperation-Frameworks sind über Klassen abgebildet, die von SysAttribute abgeleitet sind. Dadurch ist es relativ einfach möglich, sich eigene Attribute zu erstellen.
Im folgenden habe ich ein solches Attribute erstellt, mit Hilfe dessen ich die Hintergrundfarbe eines Controls im vom Framework generierten Dialog verändern kann.

Folgende Schritte sind dafür notwendig:

  1. Erstellen einer Klasse, welche von SysAttribute abgeleitet ist
    Dabei ist die Methode new() Dreh- und Angelpunkt der Logik, da man über die Parameter der new()-Methode die möglichen Parameter des Attributes festlegt. 
  2. Erweitern der Klasse SysOperationDataMemberInfo
    Hier wird vor allem die new()-Methode um den neuen Wert für die Hintergrundfarbe erweitert.
  3. Erweitern der Klasse SysOperationAttributedDataMemberInfo
    Hier wird das neue Attribut abgefragt und entsprechend berücksichtigt.
  4. Erweitern der Klasse SysOperationAutomaticUIBuilder
    In dieser Klasse wird das neue Attribut abgefragt und die Hintergrundfarbe dem Control zugewiesen.

 
 
Seiten « 1 2 3 4 » 

 

 
 
 
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