|
| 1 | +# 🔌 pServicePlugin |
| 2 | + |
| 3 | +## Účel pluginu |
| 4 | + |
| 5 | +Tento plugin je určen k definici rozhraní pro rozšiřující služby. |
| 6 | + |
| 7 | +Základem jsou obsluhy napojené na události pluginu 🔌 [pPluginManagement][pPluginManagement]. |
| 8 | + |
| 9 | +## Implementace |
| 10 | + |
| 11 | +1. Nový plugin vždy bude mít [pServicePlugin][pServicePlugin] jako svou bázovou třídu. |
| 12 | + |
| 13 | +```javascript |
| 14 | +class pNewServicePlugin extends pServicePlugin { |
| 15 | + init() { |
| 16 | + super.init(); |
| 17 | + } |
| 18 | + |
| 19 | + _pluginActivated(pluginName, instanceName, instance, storageName) { |
| 20 | + if (instance) { |
| 21 | + // pokud instance splňuje nějakou podmínku, provést zavedení do seznamu pluginů a další akce |
| 22 | + this.addPlugin(pluginName, instanceName); |
| 23 | + } |
| 24 | + } |
| 25 | + |
| 26 | + _pluginDeactivated(pluginName, instanceName, instance, storageName) { |
| 27 | + } |
| 28 | + |
| 29 | + onET...(evt) { |
| 30 | + this._doForAllInstances(this._pluginActivated.bind(this)); |
| 31 | + } |
| 32 | +} |
| 33 | + |
| 34 | +Plugins.catalogize(pNewServicePlugin); |
| 35 | +``` |
| 36 | + |
| 37 | +2. Základní plugin musí definovat vhodné události (včetně jejich obsahu), aby se na jeho procesy bylo možné efektivně napojit. |
| 38 | + |
| 39 | +- _pluginActivated - zajišťuje zpracování pro aktivaci nové instance pluginu |
| 40 | +- addPlugin - přidání pluginu a jeho instance do seznamu pluginů, které služba bude spravovat. Musí se volat ručně. |
| 41 | +- _pluginDeactivated - zajišťuje zpracování pro odebrání instance pluginu, automaticky provede odebrání instance pluginu ze seznamu pluginů ve službě |
| 42 | +- onET...(evt) - služba možná bude potřebovat obsluhu nějaké události, kterou zajišťuje zbytek systému nebo jiný plugin, pro který bude tato služba rozšířením. |
| 43 | +- **evt** - bude představovat konkrétní objekt události v závislosti na procesu, který budete vyvíjet |
| 44 | +- this._doForAllInstances(this._pluginActivated.bind(this)); - volá metodu _pluginActivated pro všechny evidované instance pluginu. Použití **bind(this)** je nutné, aby se při předání metody **zachoval kontext this**. |
| 45 | + |
| 46 | +## Popis funkčnosti |
| 47 | + |
| 48 | +- Plugin naslouchá událostem ⚡ [PluginActivated][PluginActivated] (volá funkci **\_pluginActivated**) a ⚡ [PluginDeactivated][PluginDeactivated] (volá funkci **\_pluginDeactivated**) |
| 49 | +- Plugin naslouchá dalším událostem podle deklarovaných obsluh |
| 50 | +- V případě ověření, že instance pluginu splňuje požadavky služby ji zaveďte do seznamu voláním funkce **addPlugin**. |
| 51 | +- Odebrání instance se provede automaticky s přijetím ⚡ [PluginDeactivated][PluginDeactivated] |
| 52 | + |
| 53 | +## Příklady implementací |
| 54 | + |
| 55 | +- ⚙️ [pServiceLocalization][pServiceLocalization] a další potomci třídy 🔌 [pServicePlugin][pServicePlugin] |
| 56 | + |
| 57 | +[pPluginManagement]: :_inst:pPluginManagement:.md "pPluginManagement" |
| 58 | +[pServiceLocalization]: :_plg:pServiceLocalization.md "pServiceLocalization" |
| 59 | +[PluginActivated]: :_evt:PluginActivated.md "PluginActivated" |
| 60 | +[PluginDeactivated]: :_evt:PluginDeactivated.md "PluginDeactivated" |
| 61 | +[pServicePlugin]: :_plg:pServicePlugin.md "pServicePlugin" |
0 commit comments