Indhold
Indholdsfortegnelse 🔎︎

# Tjenesten ScriptForge.Services

Biblioteket ScriptForge er bygget på en udvidelig samling af såkaldte "Services".
Denne samling er implementeret som kategorier i Basic.biblioteker eller Python-moduler:

1. standard-biblioteket ScriptForge leveret med LibreOffice

2. et antal "tilknyttede" biblioteker også leveret med LibreOffice

3. enhver brugers/bidragsyders LibreOffice-udvidelse, der ønsker at passe ind i de samme rammer

En service (tjeneste) er en samling af egenskaber eller metoder, som implementerer tjenesten.

For forfatteren til et brugerskript kan en tjeneste enten være et module (modul) i et bibliotek eller en instance (forekomst) af et klassemodul.

En hændelseshåndtering er et skript, der er indeholdt i en bibliotek, som binder en hændelse, der udløser en makro – sædvanligvis defineret med menuen Funktioner ▸ Tilpas – til den berørte tjeneste.

Hvis flere dokumenter eksempelvis udløser den samme makro, når de hentes, kan det være nyttigt at vide, hvilket dokument, der denne gang udløste makroen. Det er her, hændelseshåndteringen gør nytte.

De følgende metoder udgør kernen i konstruktionen ScriptForge:

- RegisterScriptServices

  Kaldet internt af ScriptForge for at registrere en liste over tjenester, et bibliotek implementerer.
  Hvert bibliotek, der er knyttet til Scriptforge eller udvider det, skal selvstændigt implementere metoden RegisterScriptServices (Registrer scripttjenester).

- RegisterService

  Kaldt – så mange gange, som der er tjenester at registrere i biblioteket – af RegisterScriptServices (Registrer scripttjenester).

- RegisterEventManager

  Kaldt for at registrere et biblioteks hændelseshåndtering af RegisterScriptServices (Registrer scripttjenester).

- CreateScriptService

  Kaldet af brugerscripts for at få et objekt til at give adgang til den tjeneste, der er givet som argument.
  Alle tjenester bør kaldes gennem metoden CreateScriptService (Opret sctipttjeneste).

Konventionelt kan tjenesterne String (streng), Array (matrix) og Exception (undtagelse) kaldes direkte som henholdsvis SF_String, SF_Array and SF_Exception.

Tjenesten List of Methods in the Services (Liste over metoder i tjenesterne)
CreateScriptService | RegisterScriptServices RegisterService | RegisterEventManager

## CreateScriptService

Få adgang til en af tjenesterne i et bibliotek for at benytte et brugerskript.
Den returnerede værdi er et basic-objekt eller Nothing (ingenting), hvis der skete en fejl.

En tjeneste kan forstås som enten:

- som et sæt af metoder, der er samlet i et Basic-standardmodul

- eller som et sæt metoder og egenskaber, der er samlet i et Basic-klassemodul.

### Syntaks:

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

### Parametre:

Service (tjeneste): Navnet på den tjeneste, der er defineret som "library.service" (bibliotek.tjeneste).
Biblioteket er et Basic-bibliotek, der må findes i GlobalScope (global rækkevide). Standardværdien er "ScriptForge".
Tjenesten er en af de tjenester, der er registreret af biblioteket ved hjælp af metoden RegisterScriptServices() (Registrer scripttjenester()).

arg0, ...: En liste over argumenter, der kræves af den kaldte tjeneste.
Hvis det første argument henviser til en hændelseshåndtering, er arg0 obligatorisk og skal være det UNO-objekt, der repræsenterer den hændelse, der blev givet som argument til brugermakroen.

### Eksempel:

            GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
            ' Skal gøres en gang
            Dim svc As Object
            Set svc = CreateScriptService("Array")
            ' Henviser til tjenesten "ScriptForge.Array" eller SF_Array
            Set svc = CreateScriptService("ScriptForge.Dictionary")
            ' Returnerer en ny tom klasseforekomst af en ordbog; "ScriptForge."er valgfri
            Set svc = CreateScriptService("SFDocuments.Calc")
            ' Refererer til den Calc-tjeneste, der er implementeret i det tilknyttede SFDocuments-bibliotek
            Set svc = CreateScriptService("Timer", True)
            ' Returnerer en klasseforekomst Timer, der starter øjeblikkelig
            Set svc = CreateScriptService("SFDocuments.DocumentEvent", oEvent)
            ' Refererer til tjenesten DocumentEvent (dokumenthændelse), der er implementeret i det tilknyttede SFDocuments-bibliotek
            ' Returnerer den forekomst af klassen Document, der udløste hændelsen

## RegisterScriptServices

Ved at udføre en serie af kald på RegisterService() (Registrer tjenester) og RegisterEventManager() (Registrer hændelseshåndtering), metoden RegisterScriptServices() (Registrer scripttjenester()) inddrager et bibliotek i konstruktionen ScriptForge.
Hver bibliotek, der vedrører konstruktionen skal implementere sin egen version af denne metode.

Metoden skal lagres i et Basic-standardmodul – som modsætning til et klassemodul.

En tjeneste er enten:

- et Basic-standardmodul, videregivet som et Basic-objekt.

- eller en streng, der betegner den funktion, der skal udføres for at få en forekomst af tjenesten. Det er faktisk den funktion, der indeholder nøgleordet New (Ny), i udtrykket Set (Sæt), der oprettede forekomsten.

              GlobalScope.LibraryName.ModuleName ' Objekt
              "LibraryName.ModuleName.FunctionName" ' Streng

### Eksempel:

          Public Sub RegisterScriptServices()
          ' To be stored in library = myLibrary
              With GlobalScope.ScriptForge.SF_Services
                  .RegisterService("myService1", GlobalScope.myLibrary.myModule)
                  ' Henvis til et Basic-standardmodul, der implementerer tjenesten som et sæt metoder
                  .RegisterService("myService2", "myLibrary.someModule.someFunction")
                  ' Funktionen bør returnere en forekomst af et Basic-objektklasse, der implementerer tjenesten
                  ' ...
              End With
          End Sub

Når et brugerskript indeholder et udtryk som for eksempel:

    Set myServ = CreateScriptService("myLibrary.myService1")

ScriptForge udfører disse opgaver:

1. hent biblioteket myLibrary, når det er nødvendigt

2. kald metoden RegisterScriptServices (Registrer scripttjenester) for at hente listen over tjenester i myLibrary (mit bibliotek) ind i hukommelsen

3. initialiser variablen myServ (min server) med den givne tjeneste

## RegisterService

Metoden returnerer True (sand), hvis parret navn-værdi, der blevet givet som argument, kunne registreres med succes.

### Syntaks:

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

### Parametre:

ServiceName (tjenestens navn): Tjenestens navn som en streng med Store og små bogstaver. Navnet skal være unikt.

ServiceReference (tjeneste-reference): En tjeneste-reference er enten:

- et Basic-standardmodul, videregivet som et Basic-objekt.

- eller en streng, der betegner den funktion, der skal udføres for at få en forekomst af tjenesten. Det er faktisk den funktion, der indeholder nøgleordet New (Ny), i udtrykket Set (Sæt), der oprettede forekomsten.

              GlobalScope.LibraryName.ModuleName ' Objekt
              "LibraryName.ModuleName.FunctionName" ' Streng

### Eksempel:

              With GlobalScope.ScriptForge.SF_Services
                  .RegisterService("myService1", GlobalScope.myLibrary.myModule)
                  ' Henvis til et Basic-standardmodul, der implementerer tjenesten som et sæt metoder
                  .RegisterService("myService2", "myLibrary.someModule.someFunction")
                  ' Funktionen bør returnerere en forekomst af en Basic objektklasse, der implementerer tjenesten
                  ' ...
              End With

## RegisterEventManager

Metoden returnerer True (sand), hvis parret navn-værdi givet som argument kunne registreres med succes.

### Syntaks:

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

### Parametre:

ServiceName (tjenestenavn): Tjenestens navn som en streng med både Stort og småt. Navnet skal være unikt.

ServiceReference :(tjeneste-reference) En streng, der betegner den funktion, der skal udføres for at hente en forekomst af tjenesten. Det er faktisk den funktion, der indeholder nøgleordet New (Ny) i udtrykket Set (sæt), der opretter forekomsten:

        "LibraryName.ModuleName.FunctionName" ' String

### Eksempel:

              With GlobalScope.ScriptForge.SF_Services
                  .RegisterEventManager("myEventMgr", "myLibrary.someModule.someFunction")
                  ' Funktionen bør returnerer en forekomst af en Basic-objektklasse, der implementierer tjenesten
                  ' ...
              End With

Alle ScriptForge Basic-rutiner eller identifikatorer, som indledes med et understregningstegn "_" er reserveret til internt brug. De er ikke beregnet til brug i Basic-makroer.

Relaterede emner

Udtrykket Sæt

GlobalScope-specifikator