Benutzer-Werkzeuge

Webseiten-Werkzeuge


extensibility:plugins-generic

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
extensibility:plugins-generic [2024/08/20 15:53] dlatikayextensibility:plugins-generic [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== Plugins (Standarderweiterungen) ====== 
- 
-Diese Art von Plugins ermöglicht es, in die Standardlogik aller CAATS-Dienste einzugreifen, und so das Verhalten der Standardfunktionen mit individuellen Programmierungen zu beeinflussen. 
- 
-===== Beschreibung ===== 
- 
-Die Standardfunktionen und Einsprungpunkte sind: 
-  - Abrufen einzelner Datensätze (vor Datenbankzugriff) 
-  - Abrufen einzelner Datensätze (nach Datenbankzugriff) 
-  - Abrufen einer Liste von Datensätzen (vor Datenbankzugriff) 
-  - Abrufen einer Liste von Datensätzen (nach Datenbankzugriff) 
-  - Neuen Datensatz mit Initialwerten anfordern 
-  - Anlegen (vor Speicherung) 
-  - Anlegen (nach Speicherung) 
-  - Aktualisieren (vor Speicherung) 
-  - Aktualisieren (nach Speicherung) 
-  - Löschen (vor Speicherung) 
- 
-Wird eine dieser Standardfunktionen durch ein Plugin ergänzt, so steht es dem Autor des Plugins frei, die übergebenen Daten zu verwerfen, beizubehalten, abzuändern, oder durch eigene zu ersetzen.   
- 
-Im Falle des Abrufens einer Liste von Datensätzen (Punkt 3) steht es dem Autor des Plugins außerdem frei, die übergebenen Filter-, Sortierungs- und Gruppierungskriterien vor dem Ausführen des Datenbankzugriffes zu ändern. 
- 
-===== Beispiel ===== 
- 
-Dieses Beispiel ersetzt den Vornamen aller neu angelegten Klienten durch den Vornamen "Franz". Es dient nur zu Schulungszwecken und sollte nicht in einem Echtsystem eingesetzt werden. 
- 
-<file csharp runnable_plugin_example.cs> 
-using Grpc.Core; 
-using System; 
-using System.Security.Cryptography; 
-using System.Threading.Tasks; 
- 
-using Caats.Infrastructure.Authorization; 
-using Caats.Infrastructure.Constants; 
-using Caats.Infrastructure.Helper; 
-using Caats.Proto; 
- 
-using Caats.Services.PersonAPI.Infrastructure; 
-using Caats.Services.PersonAPI.Repositories; 
- 
-namespace Caats.Service.Infrastructure.Extensibility; 
- 
-[PluginServiceDto(typeof(PersonDto))] 
-public class MyTestCaatsPersonPlugin : PluginBase 
-{ 
-    private readonly IPersonRepository _repository; 
- 
-    public MyTestCaatsPersonPlugin(IPersonRepository repository) 
-    { 
-        _repository = repository; 
-    } 
- 
-    public override PluginDto Ident() => new() { }; 
- 
-    public async override Task<(RequestMsg, ResponseMsg?)> OnBeforeCreate(RequestMsg request, Lazy<IdentityBase> identity, ServerCallContext context) 
-    { 
-        var candidate = RequestMsgHelper.GetSingleOrDefault<PersonDto>(request); 
- 
-        candidate.GivenName = "Alle heißen Franz"; 
- 
-        var modified = RequestMsgHelper.CreateWithSingle(candidate); 
- 
-        modified.PartitionIndex = request.PartitionIndex; 
- 
-        return (modified, null); 
-    } 
-}</file> 
- 
- 
-===== Fehlercodes und Lösungen ===== 
- 
-Beim Programmieren von standarderweiternden Plugins können - abseits von den Warnungen und Fehlermeldungen des C# Compilers - folgende CAATS-spezifische Fehlercodes vorkommen: 
- 
-^ Fehlercode      ^ Bedeutung       ^ Lösung          ^ 
-| CAATS0001 | No suitable public type for installable plugin | Definiern Sie in Ihrem Skript eine öffentliche Klasse des verlangten Basistyps | 
-| CAATS0003 | Installable plugin exposes more than one plugin type | Reduzieren Sie die Anzahl der öffentlichen Klassen des angegebenen Basistyps in Ihrem Skript auf 1 | 
  
extensibility/plugins-generic.1724169218.txt.gz · Zuletzt geändert: von dlatikay

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki