Changes between Version 19 and Version 20 of Documentatie/Ontwikkelaar/OpenAC3/Scriptfuncties


Ignore:
Timestamp:
07/14/20 13:17:44 (6 years ago)
Author:
henk
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Documentatie/Ontwikkelaar/OpenAC3/Scriptfuncties

    v19 v20  
    4242Scriptfuncties worden uitgevoerd voor alle geregistreerde contexten. Als er meerdere scriptfuncties zijn geregistreerd voor één context dan worden ze allemaal uitgevoerd. Zie [#Registratie Registratie] voor informatie over het registreren van scriptfuncties. 
    4343 
    44 Om scriptfuncties uit te voeren moet eerst klasse !TabelScripts worden geïnstantieerd: 
     44Om scriptfuncties uit te voeren moet eerst klasse !TabelScriptRunner worden geïnstantieerd: 
    4545{{{ 
    4646#!csharp 
    4747 
    48 var tabelscripts = new TabelScripts(); 
     48var scriptRunner = new TabelScriptRunner (); 
    4949}}} 
    5050 
     
    5454#!csharp 
    5555 
    56 var result = await tabelscripts.ExecuteAsync(new PathElement("patient(ACH-H12345)/behandelingen(ACH-H54321)"), HubCommand.UPDATE, TabelScriptWhen.AFTER, new TabelScriptResult()); 
     56var result = await scriptRunner.ExecuteAsync(new PathElement("patient(ACH-H12345)/behandelingen(ACH-H54321)"), HubCommand.UPDATE, TabelScriptWhen.AFTER, new TabelScriptResult()); 
    5757}}} 
    5858 
     
    6060 
    6161In echte code wordt de !PathElement instantie al eerder aangemaakt, met als argument een aan de controller meegegeven pad. !TabelScripts gebruikt !PathElement.ACLPath om alle scriptfuncties uit te voeren die zijn geregistreerd voor "patient/behandelingen" en AFTER UPDATE. Scriptfuncties gebruiken !PathElement.Key om zorgtraject ACH-H54321 op te halen als deze niet is meegegeven of door een eerder uitgevoerde scriptfunctie is opgehaald. 
     62 
     63 
     64== Een nieuwe scriptfunctie maken == 
     65Je kunt een nieuwe scriptfunctie maken door interface {{{ ITabelScript }}} te implementeren: 
     66 
     67{{{ 
     68#!csharp 
     69 
     70public interface ITabelScript 
     71{ 
     72    IEnumerable<TabelScriptRegistration> RegisterFor { get; } 
     73    Task<TabelScriptResult> ExecuteAsync(IServiceProvider serviceProvider, PathElement path, string command, TabelScriptWhen when, TabelScriptResult scriptResult); 
     74} 
     75 
     76 
     77}}} 
     78 
     79Scriptfuncties die horen bij de kern van OpenAC staan in OpenACLogica\Modules\Tabellen\Scripts. Scriptfuncties specifiek voor module <x> staan in OpenACLogica\Modules\<x>\Scripts. Geef scriptfuncties een naam die past bij de entiteit waar ze betrekking op hebben met prefix Script, zoals !ZorgtrajectScript. 
     80 
     81=== Te implementeren functies === 
     82==== RegisterFor ==== 
     83Deze functie geeft één of meerdere contexten terug waarvoor het script moet worden geregistreerd: 
     84 
     85{{{ 
     86#!csharp 
     87 
     88public IEnumerable<TabelScriptContext > RegisterFor => new List<TabelScriptRegistration> { 
     89    new TabelScriptContext { Command = HubCommand.DELETE, When = TabelScriptWhen.BEFORE, Path = "patient/behandelingen/fin_trajecten" }, 
     90    new TabelScriptContext { Command = HubCommand.DELETE, When = TabelScriptWhen.AFTER, Path = "patient/behandelingen/fin_trajecten" }, 
     91    new TabelScriptContext { Command = HubCommand.UPDATE, When = TabelScriptWhen.AFTER, Path = "patient/behandelingen/fin_trajecten" }         
     92}; 
     93 
     94}}} 
     95 
     96 
     97 
     98==== ExecuteAsync ==== 
     99 
    62100 
    63101== [=#Registratie Registratie] == 
     
    92130#!csharp 
    93131 
    94 public IEnumerable<TabelScriptRegistration> RegisterFor => new List<TabelScriptRegistration> { 
    95     new TabelScriptRegistration { Command = HubCommand.DELETE, When = TabelScriptWhen.BEFORE, Path = "patient/behandelingen/fin_trajecten" }, 
    96     new TabelScriptRegistration { Command = HubCommand.DELETE, When = TabelScriptWhen.AFTER, Path = "patient/behandelingen/fin_trajecten" }, 
    97     new TabelScriptRegistration { Command = HubCommand.UPDATE, When = TabelScriptWhen.AFTER, Path = "patient/behandelingen/fin_trajecten" }         
     132public IEnumerable<TabelScriptContext > RegisterFor => new List<TabelScriptRegistration> { 
     133    new TabelScriptContext { Command = HubCommand.DELETE, When = TabelScriptWhen.BEFORE, Path = "patient/behandelingen/fin_trajecten" }, 
     134    new TabelScriptContext { Command = HubCommand.DELETE, When = TabelScriptWhen.AFTER, Path = "patient/behandelingen/fin_trajecten" }, 
     135    new TabelScriptContext { Command = HubCommand.UPDATE, When = TabelScriptWhen.AFTER, Path = "patient/behandelingen/fin_trajecten" }         
    98136}; 
    99137