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 14:15] 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:
Zeile 11: Zeile 13:
   - 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)
Zeile 19: Zeile 21:
 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. 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.1724163342.txt.gz · Zuletzt geändert: 2024/08/20 14:15 von adm-dlatikay

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki