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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki