Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Um einen Body zuzuweisen stehen folgende Overloads zur Verfügung:

Methode

Beschreibung

Body<Person, PersonService>((person, service) => service.Execute(person))

Der PersonService wird über den IoC ausgelöst und die Aktion Execute mit der aktuellen Person ausgeführt.

Body<PersonService>((personService) => personService.Execute)

Direkte Zuweisung eines Delegate. Die Signatur der Methode muss dabei einen Parameter vom Typ IDataObject oder einer Ableitung davon zur Verfügung stellen.

Body<Person, PersonService>()

Der PersonService muss das Interface IActionAware<in IDataObject> implementieren. Der PersonService selbst wird über den IoC aufgelöst.

Die generische Methode um eine Aktion direkt mit den MetaActionEventArgs auszuführen steht ebenfalls zur Verfügung. Es wird aber davon abgeraten diese zu verwenden. Die Abkapslung in Services erhöht die Testbarkeit der jeweiligen Aktionen und verhindert das Business-Logik direkt in die Builders geschrieben wird.

Jede Aktion kann definieren welche Änderungen sie vorgenommen hat und drückt diese über den Rückgabetyp aus.

Rückgabetyp

Beschreibung

MetaActionResult.None()

Keine Änderungen. Die Daten im Client werden nicht neu geladen.

MetaActionResult.CallingObjectChanged()

Das aufgerufene Objekt muss neu geladen werden.

MetaActionResult.MultipleObjectsChanged()

Das aufgerufene und alle verlinkten Objekte müssen neu geladen werden.

Als optionaler Parameter kann bei allen Methoden folgendes definiert werden:

Parameter

Beschreibung

FeedbackType

Kann definieren ob die Aktion erfolgreich war:

  • None (keine Meldung wird angezeigt)

  • Success

  • Warning

  • Error

DynamicString

Meldung die dem Benutzer angezeigt wird.

Soll zusätzlich zur Rückmeldung noch eine Navigation erfolgen so kann die Klasse NavigationLinkActionResult verwendet werden. Der NavigationLinkAspect muss dabei als Parameter zur Verfügung gestellt werden.

...

Um eine Aktion mit Parametern auszustatten stehen dieselben Methoden wie oben beschrieben zur Verfügung mit der Ergänzung eines zusätzlichen Type-Argument welches den Parameter-Typ identifiziert.

Methode

Beschreibung

Body<Person, Contact, PersonService>((person, contact, service) => service.Execute(person, contact))

Der PersonService wird über den IoC ausgelöst und die Aktion Execute mit der aktuellen Person ausgeführt.

Body<PersonService>((personService) => personService.Execute)

Direkte Zuweisung eines Delegate. Die Signatur der Methode muss dabei einen Parameter vom Typ IDataObject und des entsprechenden Parameter enthalten oder einer Ableitung davon zur Verfügung stellen.

Body<Person, Contact, PersonService>()

Der PersonService muss das Interface IActionAware<in TDataObject, TParameter> implementieren. Der PersonService selbst wird über den IoC aufgelöst.

Der Parameter für die Aktion wird im Client über ein Popup abgefragt und danach an die entsprechende Aktion weitergeleitet. Es stehen dieselben Rückgabetypen wie bei einer normalen Aktion zur Verfügung.

...

Die SampleAction ist in diesem Beispiel eine Hauptaktion, ist die erste Aktion in der Gruppe von Aktionen, und ist eine primäre Aktion, hierdurch wird das Styling angepasst.

Berechtigungen

Aktionen können grundsätzlich nur von authentifizierten Usern ausgeführt werden. Die Ausnahme bilden Aktionen die im Client direkt implementiert sind.

Standardmässig benötigt der User Lese-Berechtigung auf der Klasse auf welcher die Aktion sich befindet. Nur dann ist eine Ausführung möglich. Diese Restriktion kann pro Aktion angepasst werden um zu verhindern das Aktionen ausgeführt werden die Daten verändern:

Code Block
      Elements.Person.Add.Action("SampleAction")
        .PermissionRequired(GenericOperation.Create);

Eine so definierte Aktion kann nur von einem User ausgeführt werden welcher über “Create” Berechtigung auf der Entität verfügt.

Erweiterte Restriktionen müssen aktuell in der Aktion selbst implementiert werden.