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.
[xml]
<bean id="xxx.xxxxxx.xxxxxx.SixphereRootObject"
class="xxx.xxxxxx.xxxxxx.SixphereRootObject"
parent="baseJavaScriptExtension">
</bean>
[/xml]
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:
[php]
var contextLoader=Packages.org.springframework.web.context.ContextLoader.getCurrentWebApplicationContext();
[/php]
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.
[php]
var policyBehaviourFilter = context.getBean(‘policyBehaviourFilter’, Packages.org.alfresco.repo.policy.BehaviourFilter);
policyBehaviourFilter.disableBehaviour();
//Your code.
policyBehaviourFilter.enableBehaviour();
[/php]
• Gestionar reglas sobre nodos.
[php]
var ruleService = context.getBean(‘RuleService’, Packages.org.alfresco.service.cmr.rule.RuleService);
ruleService.disableRules();
//Your code.
ruleService.enableRules();
[/php]
• Invocar a un bean que hayas implementado y desplegado anteriormente.
[php]
var sixphereService = context.getBean(‘SixphereCmisService’, Packages.xxx.xxxxxx.xxxxxx.SixphereCmisService);
sixphereService.doSomething();
//Your code.
[/php]
CONOCIMIENTO / Descargables
EBook gratuito
eficiencia OEE
Descubre las particularidades del indicador OEE, cómo automatizar su cálculo y que requisitos deben cumplir tus procesos de producción para implementarlo.