la solucion esta en ser libres

espacio producto

Archive for junio, 2012

Gobernanza SOA con WSO2 G-REG

Por José Ignacio Yarza
Arquitecto de Software de OpenSistemas

SOA -Service-Oriented Architecture- es un tipo de arquitectura de software. Su característica esencial es que su componente básico son los servicios. Pero una SOA es más que una colección de servicios.

En este artículo vamos a tratar uno de sus aspectos: la gobernanza SOA. Describiremos brevemente en qué consiste e introduciremos Governance Registry de la compañía WSO2 como ejemplo de herramienta para la gobernanza. Por último haremos un ejemplo básico de extensión utilizando el plugin Developer Studio en el IDE Eclipse.

¿Qué es la Gobernanza SOA?

Cuando una organización decide implantar una SOA en su infraestructura, necesita establecer una Arquitectura de Referencia (AR) y articular los medios necesarios para controlar la evolución de esa arquitectura. Y al mismo tiempo necesita en todo momento identificar las necesidades de negocio que esa AR debe satisfacer.

Una SOA es un entorno dinámico donde intervienen actores a diferentes niveles (ejecutivos, técnicos, profesionales TI y de negocio), y por eso es necesario asegurarse de que la SOA crece y cambia en el tiempo respetando unas normas.

En definitiva, hay que establecer procedimientos, roles y políticas, para arbitrar la gestión de los componentes de la arquitectura, el ciclo de vida de los servicios, de forma que en todo momento estén alineados con los objetivos de la organización y también con la AR establecida.

El concepto de gobernanza SOA consiste en eso: es un espacio donde conviven arquitectos de servicios y expertos de negocio y donde se toman decisiones sobre la SOA que afectarán a la organización. Entre las responsabilidades de la gobernanza se encuentra:

→ Establecer roles.
→ Establecer políticas.
→ Definir la hoja de ruta de la SOA.
→ Mantener la arquitectura de referencia.
→ Definir ciclos de vida de los servicios.
→ Servir de centro de transferencia de conocimiento.
→ Servir como guía durante el desarrollo de servicios.
→ Supervisión de los SLAs -Service Level Agreement- durante la vida de los servicios.

¿Qué servicio de negocio necesitamos implantar ahora? ¿Cómo encaja en nuestra AR? ¿Qué sinergias podemos encontrar con otros servicios existentes? ¿Quién debe utilizar este servicio y quién no? ¿Qué actores participan? ¿Cuál va a ser su ciclo de vida? ¿Qué relaciones tiene? ¿Cuál es el impacto operativo? Éstas y otras cuestiones se plantean en la gobernanza, y su resolución tendrá impacto en la organización, con la mejora de sus procedimientos operativos.

‘Governance Registry’ de WSO2

Existen herramientas que facilitan la gobernanza SOA, una de ellas es Governance Registry (G-REG) de WSO2. Además, WSO2 ha desarrollado toda una familia de componentes middleware que satisfacen  requisitos comunes a cualquier SOA, más allá de la gobernanza.

Arquitectura

La arquitectura software de la plataforma SOA de WSO2 se inspira en la especificación OSGi (Open Services Gateway initiative). Se trata de una plataforma completamente modular, extensible y, por tanto, personalizable. De entrada proporciona un gran número de componentes combinables que cubren diferentes necesidades de una SOA actual.

Una gran ventaja de esta plataforma es que todos sus componentes son ciudadanos de primera clase, siguen una misma arquitectura y se pueden combinar fácilmente. En cambio en otras SOA se integran productos de diferentes fabricantes que están concebidos con arquitecturas diferentes y, por tanto, presentan un aspecto más heterogéneo, su crecimiento es más irregular y se hace necesario el conocimiento de los diferentes productos. Así que elegir la plataforma WSO2 es una cuestión estética pero también práctica.

Funcionalidades

G-REG es, concretamente, un conjunto de componentes seleccionados y empaquetados en un producto que facilita la gobernanza SOA. En cuanto funcionalidades, cubre todo lo necesario como:

→ Repositorio de contenidos o recursos.
→ Registro de servicios.

Ejemplo de pantalla de G-REG v4.1.1.

Ejemplo de pantalla de G-REG v4.1.1.

Para más detalles sobre las características del producto, se puede consultar en su sitio oficial, http://wso2.com/products/governance-registry.

Extender G-REG

Para desarrollar sobre la plataforma SOA de WSO2 se puede utilizar cualquier IDE. No obstante WSO2 ha desarrollado un plugin para Eclipse llamado Developer Studio, que da soporte a los artefactos y componentes de su plataforma SOA.

Puedes descargar Developer Studio en su sitio oficial http://wso2.com/products/developer-studio.

Para este ejemplo se ha utilizado Eclipse junto con Developer Studio (hasta hace poco llamado Carbon Studio).

En http://wso2.org/project/developer-studio/docs/install_guide.html encontrarás las instrucciones para instalar Developer Studio.

Es posible que sea necesario registrarse en la web de WSO2 para descargar software o documentación.

Extensión de ejemplo

G-REG se puede extender de varias formas, una de ellas es mediante Handlers. Los handlers permiten insertar lógica en los componentes de la herramienta de forma transparente.

Supongamos que tenemos un tipo de contenido “businessService”, representado por un XML como éste:

<businessService>
   <id>221</id>
   <name>BIZ123</name>
   <description>Servicio ejemplo</description>
   <version>1.0</version>
</businessService>

Debido a una regla de negocio, el repositorio requiere validar que el nombre de cualquier servicio de negocio siga la nomenclatura de la organización, antes de introducirlo en el registro. En este ejemplo vamos a hacer un handler que procese el tipo de recurso “businessService” antes de su inserción en el registro, para validar su elemento <name>. Si no es válido se lanzará una excepción y el contenido no se introducirá en el registro.

Ya en Eclipse, primero creamos un nuevo proyecto “New->Others” y seleccionamos “New Carbon Application Project”.

Ahora disponemos de un proyecto en Eclipse con todas las dependencias y ficheros de configuración necesarios para que no haya problemas de compilación.

A continuación creamos el paquete que contendrá el handler, y creamos la clase con “New->Other” y seleccionando el artefacto Registry Handler:

A continuación indicamos el nombre BusinessServiceHandler y los métodos que se van a implementar. Hay que tener en cuenta que Handler es una clase abstracta pero implementa todos sus métodos por defecto, por lo que es necesario indicar expresamente qué métodos se quiere sobreescribir para que el asistente los incluya. Para nuestro ejemplo basta con el método PUT:

Pulsamos en siguiente y el asistente nos pregunta por el filtro asociado a este handler. Podríamos implementar nuestro propio filtro pero en este caso nos sirve uno disponible en la herramienta MediaTypeMatcher, que permite filtrar los contenidos por su tipología y por tanto permite enganchar un handler a un tipo de contenido concreto para que procese sólo ese tipo. Se indica mediante la property “mediaType”, y en nuestro caso toma el valor “businessService”.

Una vez creado el handler el workspace queda así:

Si abrimos el fichero artifact.xml, vemos la definición del handler para un servidor con rol GovernanceRegistry:

Y este es el código que valida que el nombre del servicio de negocio cumpla con la nomenclatura:

package org.example.handler;

import java.io.ByteArrayInputStream;

import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;

import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.wso2.carbon.registry.core.Resource;
import org.wso2.carbon.registry.core.exceptions.RegistryException;
import org.wso2.carbon.registry.core.jdbc.handlers.Handler;
import org.wso2.carbon.registry.core.jdbc.handlers.RequestContext;

/**
* Este handler valida la nomenclatura de un tipo de recurso llamado businessService,
* antes de ser insertado en el repositorio.
*
* @author jiyarza
*
*/
public class BusinessServiceHandler extends Handler {

/**
* Una vez registrado el handler, el método put será invocado desde el filtro correspondiente.
*/
public void put(RequestContext requestContext) throws RegistryException {
// Obtenemos el recurso
Resource resource = requestContext.getResource();

// Obtenemos el contenido asociado al recurso (en este caso un xml almacenado en un byte[])
byte[] content = (byte[]) resource.getContent();

// Parseamos el xml
ByteArrayInputStream input = new ByteArrayInputStream(content);
OMElement docElement;
try {
StAXOMBuilder builder = new StAXOMBuilder(input);
docElement = builder.getDocumentElement();
} catch (XMLStreamException e) {
throw new RegistryException("Error parseando el documento xml de un businessService.", e);
}

// Buscamos el elemento que contiene el nombre del servicio de negocio: &lt;name&gt;
OMElement nameElement = docElement.getFirstChildWithName(new QName("name"));

// Lo validamos, debe ser distinto de null y coincidir con la expresión regular
if (nameElement == null) {
throw new RegistryException("Nombre no puede ser nulo.");
} else if (!nameElement.getText().matches("BIZ[0-9]{3}")) {
throw new RegistryException("Nomenclatura inválida.");
}

// Indicamos que se ha terminado correctamente y no se continúe con la ejecución de la cadena de handlers
requestContext.setProcessingComplete(true);
}
}

El asistente habrá modificado el fichero registry-handler-info.xml con la información necesaria para importar el handler en el servidor:

<handlerartifact>
    <handler class="org.example.handler.BusinessServiceHandler" methods="PUT">
        <filter class="org.wso2.carbon.registry.core.jdbc.handlers.filters.MediaTypeMatcher">
        	<property name="mediaType">businessService</property>
        </filter>
    </handler>
</handlerartifact></code>

Por último hay que generar un JAR a partir del proyecto, y después se podrá importar desde G-REG, haciendo uso de su interfaz de administración.

E-learning, m-learning, Moodle… el pan nuestro de cada día en el sector educativo

por Álvaro García Hernández de Alba
Account Manager en OpenSistemas

En 2012 grandes empresas de muy diferentes sectores se están interesando y apostando por herramientas y tecnologías libres, bien por su versatilidad, bien por la fuerza de las comunidades que rodean estas plataformas, que las hacen crecer y se fomenta mucho más que las aplicaciones privativas, o bien, y mucho más, por que puede ser una fuente de ahorro de costes muy importante en las cuentas de resultados de todas las empresas.

Esta evolución en las tecnologías libres se hace especialmente relevante en el mundo de la enseñanza, que se adentra en las TIC normalizando palabras que antaño resultaban extrañas (e-Learning, m-Learning, etc.) y que ahora no son solo habituales sino también indispensables. Desde OpenSistemas ya llevamos cerca de una década apostando por estas tecnologías y sobre todo trabajando con ellas. Son muchos los proyectos en los que hemos estado y estamos involucrados con plataformas libres educativas, como Dokeos, Moodle, Sakai y .LRN, y generando cursos formativos SCORM (del inglés Sharable Content Object Reference Model). Con estas nuevas tecnologías y novedades vemos crecer una era llena de oportunidades para todas las plataformas abiertas de e-Learning.

Son muchos los proyectos en los que hemos estado y estamos involucrados con plataformas libres educativas, como Dokeos, Moodle, Sakai y .LRN, y generando cursos formativos SCORM

En este año de crisis es muy gratificante ver cómo los proyectos desarrollados por OpenSistemas en este área (para clientes como UNED, UOC, UPV, ICEA, Telefónica, Orange, etc.) van sumando poco a poco. Vamos adquiriendo, así, más y más experiencia, haciéndonos un gran hueco como expertos en este nicho de mercado. Yo llevo ya 15 años viendo el sector del Software Libre dar pasos hacia adelante, haciéndose más y más fuerte. Esto ya es imparable, por ellos quiero dar las gracias a toda esa gente que nos apoyo desde el principio.

OpenSistemas se convierte en el primer partner de WSO2 en España

Javier Sotomayor, responsable de desarrollo de negocio internacional para Europa de OpenSistemas, ha cerrado un acuerdo por el cual la empresa pasa a ser partner de WSO2, un programa de socios diseñado para fomentar la creación de un ecosistema de servicios y soluciones bajo un modelo open source y cuyo principal valor proviene de la colaboración efectiva de la comunidad. Con esta iniciativa la consultora se convierte en el primer socio español de esta empresa de Sri Lanka, con sede en EE. UU. y Reino Unido.

WSO2 Governance Registry les permitirá desarrollar mercado en el sector de banca y seguros.

WSO2 Governance Registry les permitirá desarrollar mercado en el sector de banca y seguros.

(más…)