Javascript API

Lorsque l'utilisation de formule SPEL s'avère impossible ou peu adaptée, il peut être intéressant de créer des scripts javascripts. Alfresco permet d'exécuter ces scripts sous formes de règles et beCPG permet également de lancer des scripts lors de la formulation de tâches projet ou à la formulation d'une entité. En fonction du contexte de lancement de la règle, plusieurs objets sont disponibles dans le contexte d'exécution du script. Attention la création de règle de type javascript peut impacter fortement les performances ainsi que la multiplication des règles, c'est pourquoi beCPG fourni un certains nombre de helper ainsi qu'un script standard à utiliser en point d'entrée.

Contextes

Règle

Dans le contexte d'une règle alfresco vous avez accés aux objets listés dans la documentation Alfresco:

https://docs.alfresco.com/content-services/latest/develop/reference/repo-root-objects-ref/

Script de formulation

Un script de formulation peut être spécifié sur le modèle d'une entité, il est exécuté en toute fin de la chaîne de formulation. Dans ce context vous avez accès au même contexte que lors de l'exécution d'une règle mais aussi aux objets suivants:

Variable Description
currentUser Le login de l'utilisateur courant
entity L'entité formulé (ProductData ou ProjectData par exemple)

Script de tâche

Un script peut être spécifié sur un livrable projet. Il est exécuté lors de la clôture de la tâche

Variable Description
currentUser Le login de l'utilisateur courant
task L'object TaskListDataItem correspondant à la tâche en cours
project L'object ProjectData
shareUrl L'url de l'application

Point d'entrée

Afin de limiter le nombre de règles, BeCPG préconise de centraliser les règles liées aux entités dans le script classify-entity.js. La fonction rename(product) est donnée à titre d'exemple et doit être implémentée pour par exemple nommer automatiquement les entités de l'entrepôt.

Le script classify-entity.js est également celui qui définit les règles de classement par défaut et peut être modifié.

Helper

beCPG fourni en plus des API javascript Alfresco un certains nombre de fonctions qu'il est conseillé d'utiliser pour avoir un script performant et facile à maintenir.

Pour inclure les helpers beCPG la première ligne du script doit contenir la référence suivante:

Les fonctions à disposition:

Constantes Description
SIMULATION_SITE_ID
VALID_SITE_ID
ARCHIVED_SITE_ID
SUPPLIER_PORTAL_SITE_ID
Méthodes Description
isEmpty(value) alias isNullOrEmpty(value) returns true if value is empty or null
orEmpty(value) returns value or empty if null;
propValue(node, propName) alias getProp(node, propName) returns node property value or empty
mlPropValue(node, propName, locale) alias getMLProp(node, propName, locale) returns node multilingual property value or empty for locale
mlPropConstraint(propValue, propName, locale) alias getMLConstraint(propValue, propName, locale) display value or empty for multilingual constraint value
assocValue(node, assocName) returns assoc nodeRef array
assocValues(node, assocName) assoc nodeRef arrays
assocPropValues(node, assocName, propName) alias getAssoc(product, assocName, propName?) returns association property array of values
assocPropValue(node, assocName, propName) returns association property value
assocAssocValues(node, assocName, assocAssocName) returns association association nodeRef array
assocAssocValue(node, assocName, assocAssocName) returns association association nodeRef
copyAssocPropValue(node, assocName, propName, nodePropName) Copy association property value to node property
copyAssocAssocValue(node, assocName, assocAssocName, nodeAssocName) Copy association association value to node association
updateAssoc(node, assocName, values) param values can be nodeRef, nodeRef array, scriptNode, scriptNode array
setValue(node, propName, value) Set property value checking if property changed returns if property has changed
setExtraValue(entity, propName, value) Set property value on repositoryEntity
updateMLText(node, propQName, locale, value) Update multilingual value
i18n(key, params?) returns i18n message for current locale
cleanName(value) alias removeForbiddenChar(value) returns valid cm:name value
concatName(name, value, separator?) param separator default is " " returns concatenated value of name + separator + value
classifyByHierarchy(productNode, folderNode, propHierarchy?) classify node by hierarchy
classifyByPropAndHierarchy(productNode, folderNode, propHierarchy?, propPathName?, locale?) classify node by prop and hierarchy
isInSite(productNode, siteId) returns true if node is in siteId
isInUserFolder(productNode) returns true if node is in user folder
getDocumentLibraryNodeRef(siteId) returns document library folder for site
createBranch(node, dest, autoMerge?) Create new branch of entity
mergeBranch( node, branchToNode, description, type) branchToNode can be null if autoMerge
moveAndRename(node,dest) Move node and rename if same name exists in destination
generateEAN13Code(prefix) returns generate EAN13 code with autonum corresponding to prefix
setPermissionAsSystem(node, permission, authority) Set permissions as system, node can be node or nodeRef
allowWrite(node, authority) Set write permissions as system bypassing rights
allowRead(node, authority) Set read permissions as system bypassing rights
deleteGroupPermission(node, group) Remove specific group permissions
clearPermissions(node, inherit) Remove permissions as system set on node, node can be node or nodeRef
copyList( sourceNode, destNode , listQname) Copy one list from sourceNode to destNode
listExist( node, listQname) returns true if list exists and non empty
listItems( node, listQname) returns list items
toISO8601(dateObject, options) convert date toISO8601

Example :

 var geo = new Array();
geo.push(search.findNode("workspace://SpacesStore/f61f7026-3457-4468-aa49-28136dce3443"));
geo.push(search.findNode("workspace://SpacesStore/3074da0c-81e8-4f31-923b-05937da09e0a"));
geo.push(search.findNode("workspace://SpacesStore/20a32eb1-3bfa-43df-ac4e-9c640d4de927"));

updateAssoc(product, "bcpg:productGeoOrigin", geo)

results matching ""

    No results matching ""