Benutzer-Werkzeuge

Webseiten-Werkzeuge


extensibility:plugins-generic

Dies ist eine alte Version des Dokuments!


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:

  1. Abrufen einzelner Datensätze (vor Datenbankzugriff)
  2. Abrufen einzelner Datensätze (nach Datenbankzugriff)
  3. Abrufen einer Liste von Datensätzen (vor Datenbankzugriff)
  4. Abrufen einer Liste von Datensätzen (nach Datenbankzugriff)
  5. Neuen Datensatz mit Initialwerten anfordern
  6. Anlegen (vor Speicherung)
  7. Anlegen (nach Speicherung)
  8. Aktualisieren (vor Speicherung)
  9. Aktualisieren (nach Speicherung)
  10. 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.

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);
    }
}

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.1724169254.txt.gz · Zuletzt geändert: 2024/08/20 15:54 von dlatikay

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki