Benutzer-Werkzeuge

Webseiten-Werkzeuge


extensibility:plugins-generic

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
extensibility:plugins-generic [2024/08/20 14:13] – angelegt adm-dlatikayextensibility:plugins-generic [2024/08/20 16:27] (aktuell) – [Fehlercodes und Lösungen] dlatikay
Zeile 2: Zeile 2:
  
 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. 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: 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   - Neuen Datensatz mit Initialwerten anfordern
   - Anlegen (vor Speicherung)   - Anlegen (vor Speicherung)
   - Anlegen (nach Speicherung)   - Anlegen (nach Speicherung)
-  - Aktualisieren (vor Speichrung)+  - Aktualisieren (vor Speicherung)
   - Aktualisieren (nach Speicherung)   - Aktualisieren (nach Speicherung)
   - Löschen (vor 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.+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 generic_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 \\ //Each kind of plugin must use a well-known namespace and interface/base type for its main class, so the automation can instantiate and call it// | Definiern Sie in Ihrem Skript eine öffentliche Klasse des verlangten Basistyps |
 +| CAATS0003 | Installable plugin exposes more than one plugin type \\ //Each plugin script must export exactly one main class that satisfies the automator's type constraints// | Reduzieren Sie die Anzahl der öffentlichen Klassen des angegebenen Basistyps in Ihrem Skript auf 1 |
  
extensibility/plugins-generic.1724163190.txt.gz · Zuletzt geändert: 2024/08/20 14:13 von adm-dlatikay

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki