Vsebina
Kazalo 🔎︎

# Storitev ScriptForge.Services

Knjižnica ScriptForge je zgrajena nad razširljivo zbirko t.i. storitev, "Services".
Ta zbirka je implementirana kot kategorije knjižnic Basic ali modulov Python:

1. standardna knjižnica ScriptForge, ki je del paketa LibreOffice;

2. številne "povezane" knjižnice, ki so tudi del paketa LibreOffice;

3. poljubna uporabniška razširitev LibreOffice, ki želi ustrezati istemu ogrodju.

Service je zbirka lastnosti ali metod, ki implementirajo storitev.

Za avtorja uporabniškega skripta je storitev lahko modul v knjižnici ali instanca razrednega modula.

Upravitelj dogodkov je skript, vsebovan v knjižnici, ki veže dogodek, ki sproži makro – običajno definiran z menijskim ukazom Orodja – Prilagodi – s tozadevno instanco storitve.

Če npr. več dokumentov ob nalaganju sproži isti makro, je smiselno vedeti, kateri dokument je tokrat sprožil makro. Tukaj svojo vlogo odigra upravitelj dogodkov.

Naslednje metode tvorijo jedro ogrodja ScriptForge:

- RegisterScriptServices

  Interno ga kliče ScriptForge, da za knjižnico registrira seznam storitev, ki jih implementira.
  Vsaka knjižnica, ki je povezana s Scriptforge ali jo razširja, mora implementirati lastno metodo RegisterScriptServices.

- RegisterService

  Klicana – tolikokrat, kolikor je storitev, ki jih je potrebno registrirati v knjižnici – s strani RegisterScriptServices.

- RegisterEventManager

  Klicana za registracijo upravitelja dogodkov knjižnice s strani RegisterScriptServices.

- CreateScriptService

  Klicana s strani uporabniških skriptov za pridobivanje predmeta, ki daje dostop do storitve, podane kot argument.
  Vse storitve je potrebno priklicati prek metode CreateScriptService.

Storitve String, Array in Exception lahko na konvencionalen način prikličete neposredno kot SF_String, SF_Array in SF_Exception.

Seznam metod v storitvi Services
CreateScriptService | RegisterScriptServices RegisterService | RegisterEventManager

## CreateScriptService

Pridobi dostop do ene od storitve knjižnice za potrebe uporabniškega skripta.
Vrnjena vrednost je predmet Basic ali Nothing, če je prišlo do napake.

Storitev lahko razumemo kot:

- nabor metod, zbranih v standardnem modulu Basic ali

- nabor metod in lastnosti, zbranih v razrednem modulu Basic.

### Skladnja:

           CreateScriptService(Service As String, [arg0, ...] As Variant) As Variant

### Parametri:

Service: ime storitve, identificirane kot "library.service".
Knjižnica je knjižnica Basic, ki mora obstajati v GlobalScope. Privzeta vrednost je "ScriptForge".
Storitev je ena od storitev, ki jih registrira knjižnica prek metode RegisterScriptServices().

arg0, ...: seznam argumentov, ki jih zahteva priklicana storitev.
Če se prvi argument sklicuje na upravitelja dogodkov, je arg0 obvezen in mora biti predmet UNO, ki predstavlja dogodek, podan kot argument za uporabniški makro.

### Primer:

            GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
            ' To bo storjeno enkrat
            Dim svc As Object
            Set svc = CreateScriptService("Array")
            ' Sklicuje se na storitev "ScriptForge.Array" ali SF_Array
            Set svc = CreateScriptService("ScriptForge.Dictionary")
            ' Vrne novo prazno instanco razreda slovarjev; niz "ScriptForge." je neobvezen
            Set svc = CreateScriptService("SFDocuments.Calc")
            ' Sklicuje se na storitev Calc, implementirano v povezani knjižnici SFDocuments
            Set svc = CreateScriptService("Timer", True)
            ' Vrne instanco razreda Timer, ki se takoj zažene
            Set svc = CreateScriptService("SFDocuments.DocumentEvent", oEvent)
            ' Sklicuje se na storitev DocumentEvent, implementirano v povezani knjižnici SFDocuments
            ' Vrne instanco razreda Document, ki je sprožila dogodek

## RegisterScriptServices

Z izvajanjem niza pozivov RegisterService() in RegisterEventManager(), metoda RegisterScriptServices() vključuje knjižnico v ogrodje ScriptForge.
Vsaka knjižnica, ki se nanaša na ogrodje, mora implementirati lastno različico te metode.

Metoda mora biti shranjena v standardnem modulu Basic in ne v razrednem modulu.

Storitev je lahko:

- standardni modul Basic, podan kot predmet Basic ali

- niz, ki opredeljuje funkcijo, ki jo je potrebno izvesti, da pridobite instanco te storitve. Dejansko je to funkcija, ki vsebuje ključno besedo New ukaza Set, ki ustvari instanco.

              GlobalScope.ImeKnjižnice.ImeModula ' Predmet
              "ImeKnjižnice.ImeModula.ImeFunkcije" ' Niz

### Primer:

          Public Sub RegisterScriptServices()
          ' To be stored in library = myLibrary
              With GlobalScope.ScriptForge.SF_Services
                  .RegisterService("myService1", GlobalScope.myLibrary.myModule)
                  ' Glejte standardni modul Basic glede implementacije storitve kot nabora metod
                  .RegisterService("myService2", "myLibrary.someModule.someFunction")
                  ' Funkcija mora vrniti instanco razreda predmetov Basic, ki implementira storitev
                  ' ...
              End With
          End Sub

Če uporabniški skript vsebuje ukaz kot npr.:

    Set myServ = CreateScriptService("myLibrary.myService1")

ScriptForge izvede naslednja opravila:

1. po potrebi naloži knjižnico myLibrary;

2. prikliče metodo RegisterScriptServices za nalaganje seznama storitev myLibrary v pomnilnik;

3. inicializira spremenljivko myServ z dano storitvijo.

## RegisterService

Metoda vrne True, če je kot argument podani par ime-vrednost uspešno registriran.

### Skladnja:

          GlobalScope.ScriptForge.SF_Services.RegisterService(ServiceName As String, ServiceReference As Variant) As Boolean

### Parametri:

ServiceName: ime storitve, razlikuje med velikimi in malimi črkami. Ime mora biti enkratno.

ServiceReference: sklic storitve je lahko:

- standardni modul Basic, podan kot predmet Basic ali

- niz, ki opredeljuje funkcijo, ki jo je potrebno izvesti, da pridobite instanco te storitve. Dejansko je to funkcija, ki vsebuje ključno besedo New ukaza Set, ki ustvari instanco.

              GlobalScope.ImeKnjižnice.ImeModula ' Predmet
              "ImeKnjižnice.ImeModula.ImeFunkcije" ' Niz

### Primer:

              With GlobalScope.ScriptForge.SF_Services
                  .RegisterService("myService1", GlobalScope.myLibrary.myModule)
                  ' Glejte standardni modul Basic glede implementacije storitve kot nabora metod
                  .RegisterService("myService2", "myLibrary.someModule.someFunction")
                  ' Funkcija mora vrniti instanco razreda predmetov Basic, ki implementira storitev
                  ' ...
              End With

## RegisterEventManager

Metoda vrne True, če je kot argument podani par ime-vrednost uspešno registriran.

### Skladnja:

          GlobalScope.ScriptForge.SF_Services.RegisterEventManager(ServiceName As String, ServiceReference As String) As Boolean

### Parametri:

ServiceName: ime storitve, razlikuje med velikimi in malimi črkami. Ime mora biti enkratno.

ServiceReference: niz, ki opredeljuje funkcijo, ki jo je potrebno izvesti, da pridobite instanco te storitve. Dejansko je to funkcija, ki vsebuje ključno besedo New ukaza Set, ki ustvari instanco:

        "LibraryName.ModuleName.FunctionName" ' String

### Primer:

              With GlobalScope.ScriptForge.SF_Services
                  .RegisterEventManager("myEventMgr", "myLibrary.someModule.someFunction")
                  ' Funkcija mora vrniti instanco razreda predmetov Basic, ki implementira storitev
                  ' ...
              End With

Vsi podprogrami ali identifikatorji ScriptForge Basic s predpono podčrtaja (»_«) so rezervirani za interno uporabo. Uporabi v makrih Basic niso namenjeni.

Podobne teme

Ukaz Set

Določilnik GlobalScope