Interface ScriptService

  • All Known Implementing Classes:
    ScriptServiceImpl

    public interface ScriptService
    Script Service.

    Provides an interface to services for executing a JavaScript engine script file against a Java object based scripting data-model.

    The script file can either be in the repository (passed as NodeRef string) or on the classpath. Also a script String can be passed directly to the service via the executeScriptString() methods. Java objects are passed into the scripting engine and methods can be accessed directly from the script.

    A script is executed within a single transaction, any modifications to nodes or properties that fail and cause a rollback which will rollback all repository modifications made by the script.

    Author:
    Kevin Roast
    • Method Detail

      • executeScript

        @Auditable(parameters={"scriptClasspath","model"})
        Object executeScript​(String scriptClasspath,
                             Map<String,​Object> model)
                      throws org.alfresco.scripts.ScriptException
        Process a script against the supplied data model. Uses the most approparite script engine or the default if none found.
        Parameters:
        scriptClasspath - Script location as qualified classpath name
        model - Object model to process script against
        Returns:
        output of the script (may be null or any valid wrapped JavaScript object)
        Throws:
        org.alfresco.scripts.ScriptException
      • executeScript

        @Auditable(parameters={"engine","scriptClasspath","model"})
        Object executeScript​(String engine,
                             String scriptClasspath,
                             Map<String,​Object> model)
                      throws org.alfresco.scripts.ScriptException
        Process a script against the supplied data model. Use the
        Parameters:
        engine - the script engine to use
        scriptClasspath - Script location as qualified classpath name
        model - Object model to process script against
        Returns:
        output of the script (may be null or any valid wrapped JavaScript object)
        Throws:
        org.alfresco.scripts.ScriptException
      • executeScript

        @Auditable(parameters={"scriptRef","contentProp","model"})
        Object executeScript​(org.alfresco.service.cmr.repository.NodeRef scriptRef,
                             org.alfresco.service.namespace.QName contentProp,
                             Map<String,​Object> model)
                      throws org.alfresco.scripts.ScriptException
        Process a script against the supplied data model. Uses the most approparite script engine or the default if none found.
        Parameters:
        scriptRef - Script NodeRef location
        contentProp - QName of the property on the node that contains the content, null can be passed to indicate the default property of 'cm:content'
        model - Object model to process script against
        Returns:
        output of the script (may be null or any valid wrapped JavaScript object)
        Throws:
        org.alfresco.scripts.ScriptException
      • executeScript

        @Auditable(parameters={"engine","scriptRef","contentProp","model"})
        Object executeScript​(String engine,
                             org.alfresco.service.cmr.repository.NodeRef scriptRef,
                             org.alfresco.service.namespace.QName contentProp,
                             Map<String,​Object> model)
                      throws org.alfresco.scripts.ScriptException
        Process a script against the supplied data model.
        Parameters:
        engine - the script engine to use
        scriptRef - Script NodeRef location
        contentProp - QName of the property on the node that contains the content, null can be passed to indicate the default property of 'cm:content'
        model - Object model to process script against
        Returns:
        output of the script (may be null or any valid wrapped JavaScript object)
        Throws:
        org.alfresco.scripts.ScriptException
      • executeScript

        @Auditable(parameters={"scriptLocation","model"})
        Object executeScript​(ScriptLocation scriptLocation,
                             Map<String,​Object> model)
                      throws org.alfresco.scripts.ScriptException
        Process a script against the supplied data model Uses the most approparite script engine or the default if none found.
        Parameters:
        scriptLocation - object representing the script location
        model - Object model to process script against
        Returns:
        output of the script (may be null or any other valid wrapped JavaScript object)
        Throws:
        org.alfresco.scripts.ScriptException
      • executeScript

        @Auditable(parameters={"engine","scriptLocation","model"})
        Object executeScript​(String engine,
                             ScriptLocation scriptLocation,
                             Map<String,​Object> model)
                      throws org.alfresco.scripts.ScriptException
        Process a script against the supplied data model.
        Parameters:
        engine - the script engine to use
        scriptLocation - object representing the script location
        model - Object model to process script against
        Returns:
        output of the script (may be null or any other valid wrapped JavaScript object)
        Throws:
        org.alfresco.scripts.ScriptException
      • executeScriptString

        @Auditable(parameters={"script","model"})
        Object executeScriptString​(String script,
                                   Map<String,​Object> model)
                            throws org.alfresco.scripts.ScriptException
        Process a script against the supplied data model. Uses the default script engine.
        Parameters:
        script - Script content as a String.
        model - Object model to process script against
        Returns:
        output of the script (may be null or any valid wrapped JavaScript object)
        Throws:
        org.alfresco.scripts.ScriptException
      • executeScriptString

        @Auditable(parameters={"engine","script","model"})
        Object executeScriptString​(String engine,
                                   String script,
                                   Map<String,​Object> model)
                            throws org.alfresco.scripts.ScriptException
        Process a script against the supplied data model.
        Parameters:
        engine - the script engine to use
        script - Script content as a String.
        model - Object model to process script against
        Returns:
        output of the script (may be null or any valid wrapped JavaScript object)
        Throws:
        org.alfresco.scripts.ScriptException
      • registerScriptProcessor

        @Auditable(parameters="scriptProcessor")
        void registerScriptProcessor​(ScriptProcessor scriptProcessor)
        Registers a script processor with the script service
        Parameters:
        scriptProcessor - ScriptProcessor
      • resetScriptProcessors

        @Auditable
        void resetScriptProcessors()
        Reset all registered script processors
      • buildCoreModel

        @Auditable(parameters="inputMap")
        void buildCoreModel​(Map<String,​Object> inputMap)
        Add core data-model to provided Map
        Parameters:
        inputMap - initial Map of global scope scriptable Node objects
      • buildDefaultModel

        @Auditable(parameters={"person","companyHome","userHome","script","document","document"})
        Map<String,​Object> buildDefaultModel​(org.alfresco.service.cmr.repository.NodeRef person,
                                                   org.alfresco.service.cmr.repository.NodeRef companyHome,
                                                   org.alfresco.service.cmr.repository.NodeRef userHome,
                                                   org.alfresco.service.cmr.repository.NodeRef script,
                                                   org.alfresco.service.cmr.repository.NodeRef document,
                                                   org.alfresco.service.cmr.repository.NodeRef space)
        Create the default data-model available to scripts as global scope level objects:

        'companyhome' - the Company Home node
        'userhome' - the current user home space node
        'person' - the node representing the current user Person
        'script' - the node representing the script itself (may not be available)
        'document' - document context node (may not be available)
        'space' - space context node (may not be available)

        Parameters:
        person - The current user Person Node
        companyHome - The CompanyHome ref
        userHome - The User home space ref
        script - Optional ref to the script itself
        document - Optional ref to a document Node
        space - Optional ref to a space Node
        Returns:
        A Map of global scope scriptable Node objects