
Á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.
Max Input Vars en PHP
El extraño caso de un POST que sólo enviaba en la petición a servidor una parte de la información que debía enviar. ¿El problema? Os lo contamos.
Autoescalado de cluster con Kubernetes
¿Qué pasa con nuestra plataforma si tenemos un día de mucha carga? Para ello podemos usar HPA (Horizontal Pod Autoscaler) o VPA (Vertical Pod Autoscaler) junto con CA (Cluster Autoscaler) bajo Kubernetes.
Personalizar claims JWT en Laravel Passport
Laravel Passport es el módulo oficial de Laravel que nos ayuda a la implementación de servicios de autenticación haciendo uso del protocolo OAuth2.