Alfresco y el punto de unión entre JavaScriptAPI y Spring
Alfresco ofrece una diversidad de APIs para el acceso a toda la funcionalidad que atesora. Cada una la solemos elegir para según que tarea y en base diferentes factores.
Álvaro

Álvaro

Co-founder | CCO Software Engineer

Muy de Agile & DevOps, de El Agujetas, del choco fresco y del Avanti con la Guaracha

Alfresco ofrece una diversidad de APIs para el acceso a toda la funcionalidad que atesora. Cada una la solemos elegir para según que tarea y en base a diferentes factores.

Una de las Apis útiles de cara a un Administrador, es el API Javascript que ofrece. Este API ofrece un mecanismo muy ágil y rico, útil para la ejecución de tareas por parte de un usuario Administrador.

Pero la funcionalidad que ofrece este API no es suficiente y entendemos que la única solución es desarrollar un servicio con Spring.

Afortunadamente, existe otra solución, si conocemos la arquitectura y el código fuente de Alfresco en profundidad. En este punto, debemos tener en cuenta root object del Api de Javascript es, en esencia, una clase Java con las siguientes características: hereda de la clase BaseProcesorExtension y debe ser declarada como un bean de Spring siguiendo la siguiente sintaxis.


<bean id="xxx.xxxxxx.xxxxxx.SixphereRootObject" 
         class="xxx.xxxxxx.xxxxxx.SixphereRootObject" 
         parent="baseJavaScriptExtension">
</bean>

Esto lleva a la conclusión que, desde un script JavaScript, tengo acceso al contexto de Spring y, por consiguiente, a la clase que me da acceso a las instancias de los beans instanciados, es decir, a la clase ContextLoader. Pero ¿cómo? Pues mediante el objeto Packages, usando la sintaxis que se muestra a continuación:


var contextLoader=Packages.org.springframework.web.context.ContextLoader.getCurrentWebApplicationContext();

Una vez tenemos acceso al contextLoader actual, tenemos acceso a todos los objetos instanciados en él y, ahora sí, poder acceder a toda la funcionalidad de Alfresco y de un modo seguro.

Algunas acciones interesantes pueden ser las siguientes:

• Desactivar y activar políticas sobre nodos.


var policyBehaviourFilter = context.getBean('policyBehaviourFilter', Packages.org.alfresco.repo.policy.BehaviourFilter);
policyBehaviourFilter.disableBehaviour();
//Your code.
policyBehaviourFilter.enableBehaviour();

• Gestionar reglas sobre nodos.


var ruleService = context.getBean('RuleService', Packages.org.alfresco.service.cmr.rule.RuleService);
ruleService.disableRules();
//Your code.
ruleService.enableRules();

• Invocar a un bean que hayas implementado y desplegado anteriormente.


var sixphereService = context.getBean('SixphereCmisService', Packages.xxx.xxxxxx.xxxxxx.SixphereCmisService);
sixphereService.doSomething();
//Your code.

Dónde Estamos

Espacio RES

Avda. República Argentina 25 Planta 9, 41011 Sevilla

Cómo Contactar

Envíanos un Email

Conocenos más

Contacta con nosotros

Visita nuestra sección de contacto y pídenos lo que necesites

Share This