Interface ScriptService
- All Known Implementing Classes:
ScriptServiceImpl
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 Summary
Modifier and TypeMethodDescriptionvoidbuildCoreModel(Map<String, Object> inputMap) Add core data-model to provided MapbuildDefaultModel(NodeRef person, NodeRef companyHome, NodeRef userHome, NodeRef script, NodeRef document, NodeRef space) Create the default data-model available to scripts as global scope level objects:Process a script against the supplied data model.executeScript(String scriptClasspath, Map<String, Object> model) Process a script against the supplied data model.Process a script against the supplied data model.executeScript(String engine, ScriptLocation scriptLocation, Map<String, Object> model) Process a script against the supplied data model.Process a script against the supplied data model.executeScript(ScriptLocation scriptLocation, Map<String, Object> model) Process a script against the supplied data model Uses the most approparite script engine or the default if none found.Process a script against the supplied data model.Process a script against the supplied data model.executeScriptString(String script, Map<String, Object> model) Process a script against the supplied data model.executeScriptString(String script, Map<String, Object> model, boolean secure) Process a script against the supplied data model.voidregisterScriptProcessor(ScriptProcessor scriptProcessor) Registers a script processor with the script servicevoidReset all registered script processors
-
Method Details
-
executeScript
@Auditable(parameters={"scriptClasspath","model"}) Object executeScript(String scriptClasspath, Map<String, Object> model) throws org.alfresco.scripts.ScriptExceptionProcess 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 namemodel- 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.ScriptExceptionProcess a script against the supplied data model. Use the- Parameters:
engine- the script engine to usescriptClasspath- Script location as qualified classpath namemodel- 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(NodeRef scriptRef, QName contentProp, Map<String, Object> model) throws org.alfresco.scripts.ScriptExceptionProcess a script against the supplied data model. Uses the most approparite script engine or the default if none found.- Parameters:
scriptRef- Script NodeRef locationcontentProp- 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, NodeRef scriptRef, QName contentProp, Map<String, Object> model) throws org.alfresco.scripts.ScriptExceptionProcess a script against the supplied data model.- Parameters:
engine- the script engine to usescriptRef- Script NodeRef locationcontentProp- 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.ScriptExceptionProcess 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 locationmodel- 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.ScriptExceptionProcess a script against the supplied data model.- Parameters:
engine- the script engine to usescriptLocation- object representing the script locationmodel- 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.ScriptExceptionProcess 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={"script","model","secure"}) Object executeScriptString(String script, Map<String, Object> model, boolean secure) throws org.alfresco.scripts.ScriptExceptionProcess 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 againstsecure- A flag indicating if string script is considered secure (e.g., if it comes from the classpath) If true it will have access to the full execution context, if false the script will be executed in a sandbox context (more restricted)- 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.ScriptExceptionProcess a script against the supplied data model.- Parameters:
engine- the script engine to usescript- 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","secure"}) Object executeScriptString(String engine, String script, Map<String, Object> model, boolean secure) throws org.alfresco.scripts.ScriptExceptionProcess a script against the supplied data model.- Parameters:
engine- the script engine to usescript- Script content as a String.model- Object model to process script againstsecure- A flag indicating if string script is considered secure- 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
Reset all registered script processors -
buildCoreModel
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(NodeRef person, NodeRef companyHome, NodeRef userHome, NodeRef script, NodeRef document, 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 NodecompanyHome- The CompanyHome refuserHome- The User home space refscript- Optional ref to the script itselfdocument- Optional ref to a document Nodespace- Optional ref to a space Node- Returns:
- A Map of global scope scriptable Node objects
-