[[TOC(heading=Scriptfuncties)]] [[TOC(heading=OpenAC3, sectionindex, compact, depth=3, allactive, Documentatie/Ontwikkelaar/OpenAC3/)]] [[TOC(heading=Ontwikkelaar, sectionindex, compact, depth=2, allactive, Documentatie/Ontwikkelaar/)]] [[TOC(heading=Documentatie, sectionindex, compact, depth=1, allactive, Documentatie/)]] = Scriptfuncties = [[NoteBox(tip, Deze pagina moet tzt een andere plek krijgen.)]] OpenAC 2 kent zogenaamde scriptfuncties. Dit zijn geregistreerde functies die o.a. worden uitgevoerd bij het opslaan van een entry. Scriptfuncties kunnen controles uitvoeren voordat een actie is uitgevoerd of een nabewerking doen nadat een actie is uitgevoerd. == Hoe en wanneer == Scriptfuncties worden aangeroepen door controllers. Ze kunnen zowel voor als na een actie worden uitgevoerd. Voorbeeld: {{{ #!csharp var result = await tabelscripts.ExecuteAsync(pe, HubCommand.UPDATE, TabelScriptWhen.AFTER, new TabelScriptResult(formulierPost.Data)); }}} Bovenstaande aanroep zorgt ervoor dat alle scriptfuncties worden uitgevoerd die zijn geregistreerd voor argumenten pad, actie en moment. == Registratie == Om scriptfuncties uit te kunnen voeren moet je eerst klasse {{{ TabelScripts }}} instantiëren: {{{ #!csharp var tabelscripts = new TabelScripts(); }}} Alle klassen die interface {{{ ITabelScript }}} implementeren worden automatisch geregistreerd als de static constructor van {{{ TabelScripts }}} wordt uitgevoerd. Een static constructor wordt gegarandeerd maar één keer uitgevoerd, de eerste keer dat een reguliere constructor van die klasse wordt uitgevoerd. === Interface ITabelScript === Interface {{{ ITabelScript }}} bevat twee functiedefinities: {{{ #!csharp public interface ITabelScript { IEnumerable RegisterFor { get; } Task ExecuteAsync(IServiceProvider serviceProvider, PathElement path, HubCommand command, TabelScriptWhen when, TabelScriptResult scriptResult); } }}}