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:43] adm-dlatikayextensibility:plugins-generic [2024/08/20 16:27] (aktuell) – [Fehlercodes und Lösungen] dlatikay
Zeile 21: 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.
  
-===== Beispiele =====+===== 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>
  
-Beispiel 
  
 ===== Fehlercodes und Lösungen ===== ===== Fehlercodes und Lösungen =====
Zeile 30: Zeile 73:
  
 ^ Fehlercode      ^ Bedeutung       ^ Lösung          ^ ^ Fehlercode      ^ Bedeutung       ^ Lösung          ^
-CAATS00001 | No suitable public type for installable plugin | Definiern Sie in Ihrem Skript genau eine Klasse des verlangten Basistyps | +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 | 
-Row 3 Col 1    Row 3 Col 2     Row 3 Col 3        |+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.1724164990.txt.gz · Zuletzt geändert: 2024/08/20 14:43 von adm-dlatikay

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki