Apache OFBiz

6
linux en la empresa Desarrollo de sistemas corporativos 46 Linux+ 3/2008 [email protected] A l hablar de sistemas para corporaciones, apare- cen siglas tales como ERP, CRM, E-Business/ E-commerce, SCM, MRP, CMMS/EAM y más, que básicamente hacen referencia a: ERP: Sistemas de Planificación de Recursos de la Em- presa (Enterprise Resource Planning). CRM: Administración de la relación con los clientes (Customer Relationship Management) E-Bussines / E-Commerce: Negocios Electrónicos o Comercio Electrónico. SCM: Gestión de la Cadena de Suministro MRP: Planificación de Requerimientos de Materiales (MRP - Material requirements planning - Manufacturing Resource Planning) CMMS/EAM: Sistemas de Administración de Manteni- miento Automatizado (CMMS Computerized Mainte- nance Management Systems). Administración de Activos Empresariales (EAM Enterprise Asset Management) Uno se preguntaría, ¿existe un sistema Open Source orien- tado a dar soluciones del tipo ERP, CRM, E-Business/E- commerce, SCM, MRP, CMMS/EAM, etc? Además que sea fácil de instalar, configurar, adaptar y desarrollar. Bueno, sí existe una solución informática que da res- puestas a estas necesidades, es Apache Open for Business Project, también conocido como Apache OFBiz. El mis- mo es un proyecto de automatización de software empre- sarial Open Source, bajo la licencia Apache versión 2.0. Apache OFBiz es un sistema OOTB (Out Of The Box), es decir instala y se lo usa, sin más vueltas. Ofrece una gran cantidad de funcionalidades, incluyendo: Comercio electrónico avanzado Administración de catálogo Gestión de promociones y precios Administración de órdenes de pedido (Compras y Ventas) Gestión de clientes Gestión de almacenes - depósitos Cumplimiento de movimiento automático de stock, agrupación de selecciones, empaque y envío. Gestión Contable (factura, el pago, la facturación de cuentas, activos fijos) Administración de los procesos de fabricación Apache OFBiz Javier Torres Apache OFBiz reduce drásticamente el código requerido para obtener una aplicación, con un alto nivel de abstracción, que nos permite concentrarnos en la implementación del modelo de negocio y no en la programación misma.

Transcript of Apache OFBiz

Page 1: Apache OFBiz

linux en la empresaDesarrollo de sistemas corporativos

46 Linux+ 3/2008

linux en la empresaDesarrollo de sistemas corporativos

47www.lpmagazine.org

linux

@so

ftwar

e.co

m.p

l

Al hablar de sistemas para corporaciones, apare-cen siglas tales como ERP, CRM, E-Business/E-commerce, SCM, MRP, CMMS/EAM y más, que básicamente hacen referencia a:

• ERP: Sistemas de Planifi cación de Recursos de la Em-presa (Enterprise Resource Planning).

• CRM: Administración de la relación con los clientes (Customer Relationship Management)

• E-Bussines / E-Commerce: Negocios Electrónicos o Comercio Electrónico.

• SCM: Gestión de la Cadena de Suministro• MRP: Planifi cación de Requerimientos de Materiales

(MRP - Material requirements planning - Manufacturing Resource Planning)

• CMMS/EAM: Sistemas de Administración de Manteni-miento Automatizado (CMMS Computerized Mainte-nance Management Systems). Administración de Activos Empresariales (EAM Enterprise Asset Management)

Uno se preguntaría, ¿existe un sistema Open Source orien-tado a dar soluciones del tipo ERP, CRM, E-Business/E-

commerce, SCM, MRP, CMMS/EAM, etc? Además que sea fácil de instalar, confi gurar, adaptar y desarrollar.

Bueno, sí existe una solución informática que da res-puestas a estas necesidades, es Apache Open for Business Project, también conocido como Apache OFBiz. El mis-mo es un proyecto de automatización de software empre-sarial Open Source, bajo la licencia Apache versión 2.0.

Apache OFBiz es un sistema OOTB (Out Of The Box), es decir instala y se lo usa, sin más vueltas. Ofrece una gran cantidad de funcionalidades, incluyendo:

• Comercio electrónico avanzado• Administración de catálogo• Gestión de promociones y precios• Administración de órdenes de pedido (Compras y Ventas)• Gestión de clientes• Gestión de almacenes - depósitos• Cumplimiento de movimiento automático de stock,

agrupación de selecciones, empaque y envío.• Gestión Contable (factura, el pago, la facturación de

cuentas, activos fi jos)• Administración de los procesos de fabricación

Apache OFBizJavier Torres

Apache OFBiz reduce drásticamente el código requerido para obtener una aplicación, con un alto nivel de abstracción, que nos permite concentrarnos en la implementación del modelo de negocio y no en la programación misma.

Page 2: Apache OFBiz

linux en la empresaDesarrollo de sistemas corporativos

46 Linux+ 3/2008

linux en la empresaDesarrollo de sistemas corporativos

47www.lpmagazine.org

• Administración general de trabajo requeri-do y empleado – esfuerzo de trabajo (even-tos, tareas, proyectos, solicitudes, etc.)

• Gestión de contenidos para el producto contenido, páginas web, de contenido ge-neral, blogs, foros, etc.

• Un módulo maduro de punto de venta (POS) usando XUI como una interfaz de cliente enriquecida

• Y mucho más, ¡todo un proyecto Open Source!

TecnologíasNos basaremos en las tecnologías ampliamente conocidas y usadas como Php/Perl y Java para explicar lo que sería Apache OFBiz. Como todos sabemos Php/Perl se concentra en el desarrollo rápido y en obtener resultados, es un lenguaje interpretado, y que carece de una estructura bien definida, mientras Java hace hincapié en la sepa-ración de código, es un lenguaje que tiene una estructura bien definida, generalmente separa la presentación, de la lógica y la de acceso a la base de datos, típicamente incluye muchas librerías, clases, propiedades de archivos, definición de archivos, y demás. Apache OFBiz combina la velocidad de Php/Perl, con la estructura Java, obteniendo algo bastante interesante. Logrando reducir drásticamente el código requerido para obtener nuestra aplicación, creando un alto nivel de abstracción, que nos permite concentrarnos en la implementación del modelo de negocio y no en la programación misma.

OFBiz se construye utilizando el modelo MVC (Model-View-Controller), esto quiere decir que un controlador analiza las peticio-nes primero, y después determina qué hacer.

La lógica de negocio de OFBiz no se rige a las páginas particulares (como en PHP), objetos particulares (como en Java), o las peticiones par-ticulares del servidor (como en servlets de Perl o de Java del cgi), se crean generalmente servi-cios, que son pedazos pequeños, reutilizables del código que se pueden escribir en una variedad de lenguajes, incluyendo Java, Jython (una im-plementación de alto nivel, dinámico, orientado a objeto del lenguaje Python, escrito en Java), beanshell, o el mini lenguaje de OFBiz. Los

servicios pueden entonces llamarse directamente desde la aplicación web, de forma automática, dentro de otros servicios, de workflows declara-dos, o remotamente vía el SOAP o el RMI.

Instalar Apache OFBizLa instalación consiste en tan solo bajar la aplica-ción desde el proyecto Apache OFBiz y de luego instalar Java. Se ejecuta un script de instalación, se configura, se lo hace correr y nada más, queda lis-to para que la empresa mejore su productividad.

Las siguientes instrucciones de instalación son en particular para una distro Debian GNU/Linux llamada Etch, con una base de datos PostgreSQL, sin embargo los pasos a seguir son similares en las demás distribuciones. Para ins-talar Java SDK se comienza agregando non-free en los repositorios de Debian Etch (en /etc/apt/sources.list), y luego se ejecuta en consola:

apt-get update

apt-get install sun-java5-jdk

sun-java5-jre sun-java5-

bin sun-java5-plugin

export JAVA_HOME="/usr

/lib/jvm/java-1.5.0

-sun-1.5.0.10/"

Para finalizar esta parte, se debe agregar una línea en el archivo /etc/profile, para se cargue desde el arranque, como sigue:

export JAVA_HOME="/usr

/lib/jvm/java-1.5.0-sun-1.5.0.10/"

La instalación de Apache OFBiz consiste en descargar directamente desde el desarrollo del proyecto, utilizando un cliente SVN (subver-sión, un sistema controlador de versionado), por consiguiente instalamos el soporte SVN (subversión):

apt-get install subversion

subversion-tools

Creamos la carpeta donde se trabajará y descar-gar allí el proyecto:

mkdir workspace

cd workspace

svn co http://svn.apache.org/repos

/asf/ofbiz/trunk ofbiz

Instalar PostgreSQLPor defecto el sistema Apache OFBiz tiene configurado e integrado una base de datos Java embebida llamada Derby. La misma es buena para demostrar, probar, y desarrollar pequeñas implementaciones. Pero se recomienda no uti-lizar Derby, ya que no es fácil de administrar, ni optimizar, y no posee una buena performance. OFBiz soporta una gran cantidad de base de da-tos, tanto comerciales como Open Source, entre las comerciales tenemos a Oracle, MS SQLSer-ver, y dentro de las Open Source Postgre o MyS-QL, generalmente se recomiendan estas últimas.

En esta instalación elegimos PostgreSQL, por ninguna razón en particular, simplemente por mayor afinidad. Escribir en la consola de nuestro Debian: apt-get install postgres-8.1 luego hay que configurar el mismo míni-mamente como sigue:

• En /etc/postgresql/8.1/main/post-

gresql.conf descomentar la línea que dice listen_addresses = 'localhost'

• En /etc/postgresql/8.1/main/pg_hba.conf modificar la línea que dice host all all 127.0.0.1/32 md5” por “host all

all 127.0.0.1/32 trust

• Reiniciar postgresql de la siguiente manera: /etc/init.d/postgresql-8.1 restart

• Crear usuario ofbiz en GNU/Linux: useradd ofbiz

passwd ofbiz

• Crear el usuario ofbiz en PostgreSQL: su postgres

createuser ofbiz

exit

• Crear base de datos con el usuario ofbiz: su ofbiz

createdb ofbiz

exit

• Instalar el controlador jdbc para postgres-8.1 de Java, para ello hay que ubicarse en una carpeta en particular dentro del OFBiz que instalamos, y descargar un paquete:

cd ..ofbiz/framework

/entity/lib/jdbc/

Figura 2. Confirmación de Certificado de OFBizFigura 1. Certificado de OFBiz Figura 3. Logueo en OFBiz

Page 3: Apache OFBiz

48

linux en la empresaDesarrollo de sistemas corporativos

Linux+ 3/2008 49

linux en la empresaDesarrollo de sistemas corporativos

www.lpmagazine.org

wget http://jdbc.postgresql.org

/download/postgresql

-8.1-409.jdbc3.jar

• Editar ...workspace/ofbiz/framework/entity/config/entityengine.xml

cambiar donde dice: datasource-name=”

localderby” por datasource-name=”

localpostgres” y agregar 5432 en:

.........

..........

<inline-jdbc

jdbc-driver="org.postgresql.Driver"

jdbc-uri="jdbc:postgresql://127.0.0.1:

5432/ofbiz"

jdbc-username="ofbiz"

jdbc-password="ofbiz"

..........

.....

Para finalizar hay que realizar la carga inicial de datos usando las rutinas de instalación de OFBiz a través de Ant o directamente con Java y ejecutando el archivo ofbiz.jar. Por defecto la instalación carga los Seed Data (datos que una aplicación requiere para que la misma corra, estos son creados y mantenidos dentro de la base de datos) y un conjunto de datos de una empresa Demo, que son definidos en los archi-vos entityengine.xml y ofbiz-componet.xml. Para correr la instalación tenemos dos opciones desde la línea de comando, dentro del directo-rio donde está el OFBiz: ant run-install, o bien: java -jar ofbiz.jar -install

Se puede elegir únicamente cargar los Seed Data y no cargar el conjunto de datos de la la empresa Demo. Para esto habría que

escribir lo siguiente: java -jar ofbiz.jar -install -readers=seed

Una recomendación para las implementa-ciones pequeñas, es la de instalar los datos de la empresa Demo, y luego modificar a través de las aplicaciones de OFBiz. Para una instalación en grande, se aconseja crear los archivos de datos y su configuración personalizada, copiando desde la Demo, o simplemente creando todo desde cero. Esto se detalla en la documentación de OFBiz, de manera reducida consiste en unos pocos cambios en los archivos como ofbiz-component.xml y luego solamente bastaría hacer algo como lo siguiente (donde ext, es la parte que uno personaliza):

java -jar ofbiz.jar -install -

readers=seed,ext

Los datos de la Demo de OFBiz incluyen a un admin, que por defecto, su contraseña es

ofbiz. La cual se sugiere cambiar luego por razones de seguridad obviamente.

Ahora solamente falta poner el Apache OF-Biz en funcionamiento: ./startofbiz.sh & o bien bash startofbiz.sh &

Si deseamos pararlo bastaría con escribir: ./stopofbiz.sh o bien bash stopofbiz.sh

Apache OFBiz por defecto utiliza los siguientes puertos, una vez puesto en funcio-namiento:

• HTTP - 8080

Configurado en: Containers XML FileReferenciado en: Service Engine XML File, Navegadores Web (Browser, si corre directamente), Propiedades de archivos URL

• HTTPS - 8443

Figura 5. E-Commerce de Apache OFBiz

Listado 1. Contenido de entitymodel.xml<entitymodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/entitymodel.xsd">

<title>Entity of an Open For Business Project Component</title>

<entity entity-name="HelloPerson"

package-name="org.ofbiz.hello3"

title="Entity for storing data about persons">

<field name="helloPersonId" type="id-ne"></field>

<field name="firstName" type="id"></field>

<field name="middleName" type="id"></field>

<field name="lastName" type="id"></field>

<field name="comments" type="comment"></field>

<prim-key field="helloPersonId"/>

</entity><entity entity-name="HelloHobby"

package-name="org.ofbiz.hello3"

title="Hobbies available">

<field name="helloHobbyId" type="id-ne"></field>

<field name="description" type="description"></field>

<prim-key field="helloHobbyId"/>

</entity><entity entity-name="HelloPersonHobby"

package-name="org.ofbiz.hello3"

title="Entity and ttribute Entity">

<field name="helloPersonId" type="id-ne"></field>

<field name="helloHobbyId" type="id-ne"></field>

<prim-key field="helloPersonId"/>

<prim-key field="helloHobbyId"/>

<relation type="one" fk-name="HPRSN_PRSN"

rel-entity-name="HelloPerson">

<key-map field-name="helloPersonId"/>

</relation>

<relation type="one" fk-name="HPRSN_HBBY"

rel-entity-name="HelloHobby">

<key-map field-name="helloHobbyId"/>

</relation>

</entity>

</entitymodel>

Figura 4. Primera impresión de Apache OFBiz

Page 4: Apache OFBiz

48

linux en la empresaDesarrollo de sistemas corporativos

Linux+ 3/2008 49

linux en la empresaDesarrollo de sistemas corporativos

www.lpmagazine.org

Configurado en: Containers XML File Referenciado en: Navegadores Web (Browser, si corre directamente)

• AJP13 - 8009

Configurado en: Containers XML File Referenciado en: Configuración por medio Apache mod_jk plugin

• JRMP (JNDI, RMI, etc) - 1099

Configurado en: Carol Properties (carol.jrmp.url)

Referenciado en: Containers XML File, JNDI Properties File, Service Engine XML File

• IIOP (Shark, etc) - 2000

Configurado en: Carol Properties (carol.iiop.url) Referenciado en: Containers XML File

• BSH Client - 9989, 9990 (estas deberían estar generalmente deshabilitadas o al me-nos protegidas por un firewall)

Configurado en: Containers XML File

Primeros pasos Una vez que tenemos corriendo nuestro Apache OFBiz, hay que escribir la siguiente dirección web desde un navegador de Internet como Firefox, o bien cualquier otro browser: http://localhost:8080/example

Lo primero que nos aparecerá es el certifi-cado (ya que es una página segura). Por defecto no está configurado el certificado, y no aparece-rán datos del mismo. Le damos Aceptar. Si se desea configurar el certificado se deberá utilizar herramientas de gestión de certificados digitales como Keytool, que es la herramienta sugerida en la documentación del proyecto OFBiz, y por último modificar la configuración general del OFBiz. En este instante nos encontramos con una ventana de solicitud de usuario y contrase-ña, el usuario y contraseña por defecto son:

• usuario: admin• passwd: ofbiz

Una vez logueados vemos la Figura 4. Y pode-mos apreciar que todo se encuentra organizado en solapas (pestañas), donde encontramos las diferentes aplicaciones a personalizar como ser la parte contable, de marketing, de usua-

Figura 6. Capas de OFBiz

������������

�����������������

�����

������������������������������

����������������������

���������������������

�������������������

�������������

���������������

�������������

������������

���������

���������������������������������

������������������������

����������������������

�����������������

����

���

���������

�������������������

������������

���������������������������

�����������������

����

������

�������

�����

����

Listado 2. Contenido de entitygroup.xml<entitygroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/entitygroup.xsd">

<entity-group group="org.ofbiz" entity="HelloPerson" />

<entity-group group="org.ofbiz" entity="HelloHobby" />

<entity-group group="org.ofbiz" entity="HelloPersonHobby" />

</entitygroup>

Listado 3. Contenido de services.xml<services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/services.xsd">

<description>Hello 3 Services</description>

<!-- Esta definición será implementada en Java -->

<service name="createHelloPerson" engine="java"

location="org.ofbiz.hello3.Hello3Services" invoke="createHelloPerson">

<description>Create a HelloPerson</description>

<auto-attributes mode="IN" entity-name="HelloPerson" include="nonpk"

optional="true"/>

<attribute name="helloPersonId" mode="OUT" type="String" optional="false"/

>

</service>

<!-- Esto se implementará en XML – mini lenguaje de OFBiz-->

<service name="createHelloPersonHobby" engine="simple"

location="org/ofbiz/hello3/Hello3Services.xml"

invoke="createHelloPersonHobby">

<description>Create a HelloPersonHobby which links a person and a hobby

</description>

<auto-attributes mode="IN" entity-name="HelloPersonHobby" include="pk"

optional="false"/>

</service></services>

Listado 4. Contenido de Hello3Services.xml<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:noNamespaceSchemaLocation=

"http://www.ofbiz.org/dtds/simple-methods.xsd">

<simple-method method-name="createHelloPersonHobby" short-

description="Create a Hobby-Person relationship"

login-required="false">

<make-value entity-name="HelloPersonHobby" value-name="newEntity"/>

<set-nonpk-fields map-name="parameters" value-name="newEntity"/>

<set-pk-fields map-name="parameters" value-name="newEntity"/>

<create-value value-name="newEntity"/>

</simple-method></simple-methods>

Page 5: Apache OFBiz

50

linux en la empresaDesarrollo de sistemas corporativos

Linux+ 3/2008 51

linux en la empresaDesarrollo de sistemas corporativos

www.lpmagazine.org

rios, almacén, manufactura, entre otras. A esta altura, ya tenemos todo un sistema robusto a nuestra disposición, para hacer y deshacer a nuestro gusto, con todas la ventajas que tiene una aplicación Open Source. Si colocamos la dirección http://localhost:8080/ecommerce, en el browser, obtendremos un completo comercio electrónico (con los datos cargados), como se aprecia en la figura 5. Éste no está totalmente traducido al español, por más que cambiemos el idioma, ya que por defecto se muestra en inglés. Pero no hay problema, fácilmente se adapta a las necesidades de uno, ya que estamos frente a una aplicación Open Source, bien documentada.

ConfiguracionesGenerales de OFBizA continuación veremos algunas configuracio-nes generales básicas.

Configuraciones RegionalesLas configuraciones regionales pueden ser configuradas en el siguiente archivo de confi-guración:

.../framework/common

/config/general.properties

y donde encontramos los diferentes parámetros a configurar:

• Código de Moneda (utilizado para expresar el precio, se puede consultar la tabla Uom, son códigos de 3 le-

tras, que se encuentran en el archivo CurrencyData.xml) por defecto se en-cuentra en dólares americanos (USD): currency.uom.id.default=USD para poner en pesos argentinos (ARS, según el archivo CurrencyData.xml):

currency.uom.id.default=ARS

Código de País (los existentes se pueden ver en la tabla Geo, son 3 letras de países según ISO, los mismos los encontramos en el archi-vo GeoData.xml): por defecto se encuentra en Estados Unidos (USA): country.geo.id.default=USA para pasarlo a argentina (ARG) bastaría con country.geo.id.default=ARG

Configuración de Servidor de CorreoLa configuración de correo electrónico se la realiza en el archivo antes mencionado:

.../framework/common

/config/general.properties

y tiene los parámetros a tocar son: Servidor SMTP: es el que nos permitirá enviar co-rreo, y se realiza de la siguiente manera: mail.smtp.relay.host =mi_servidor_

smtp Si el servidor smtp necesita autentica-ción habría que descomentar y completar las siguiente líneas:

mail.smtp.auth.user = usuario

mail.smtp.auth.password = contraseña

Si desea que OFBiz envíe e-mail de notificacio-nes habría que configurar: mail.notifications.enabled=Y

Estructura de desarrolloApache OFBiz funcionalmente es construi-do sobre un framework común, que puede ser dividido en las siguientes capas (y como se aprecia en la Figura 6):

Capa de PresentaciónApache OFBiz usa el concepto de screens (pantallas) para representar las páginas de presentación de Apache OFBiz. Cada pági-na es, normalmente, representada como un screen. Una página en Apache OFBiz con-siste en un conjunto de componentes, y los mismos pueden ser un header (encabezado), un footer (pie de página), etc.. Las páginas son mostradas combinando todos los com-ponentes como lo especifica la definición del screen. Los componentes pueden ser Java Server Pages (JSP), páginas FTL cons-truidas por plantillas FreeMarker, Forms, Menus y Tree Widgets (especificaciones propias de OFBiz).

Figura 8. Estructura de Directorio de una aplicación - OFBizFigura 7. Diagrama de Desarrollo - OFBiz

��������������������

���������������������������������

���������������

�������������

����������������������

��������������������

���������������������������

�������������

�������������������

����������������������

�������������

������������������������������

������������������

��������������

��������������

������������

������

�����������������

������������������

������������

����������

�����������

����������

�����������

����������

Page 6: Apache OFBiz

50

linux en la empresaDesarrollo de sistemas corporativos

Linux+ 3/2008 51

linux en la empresaDesarrollo de sistemas corporativos

www.lpmagazine.org

Capa de Lógica de NegocioLa capa de aplicación o lógica defi ne los servicios provistos por el usuario. Los servicios pueden ser de varios tipos: java methods, SOAP, simple ser-vices, workfl ow, etc. Un servicio es responsable por aspectos como una invocación, transacción, seguridad, etc. Apache Ofbiz usa un conjunto bien defi nido de tecnologías Open Source y stan-dards como Java, J2EE, XML, SOAP, etc.

Capa de DatosLas capas de datos son responsables de los acce-sos y almacenamiento de la base de datos, y de además proveer una interfaz a la capa lógica. Los datos son accedidos como objetos pero por un camino relacional. Cada entidad (representa una fi la de la base de datos) es provista por la capa de lógica como un valor genérico. El valor genérico no es especifi cado, así los campos son accedidos por el nombre de la columna.

El Desarrollo en Apache OFBizA continuación haremos un recorrido superfi cial, de los pasos generales a seguir, para el desarrollo de las aplicaciones en Apache OFBiz, para ello nos basaremos en la Figura 7 (diagrama de de-sarrollo). Antes seguir hay que tener presente que Apache OFBiz, tiene muy bien defi nida la estructura de directorios y archivos, a la que tenemos que ajustarnos. En la Figura 8, apre-ciamos a la estructura de directorio, incluyendo los archivos mencionados en el diagrama de desarrollo. La estructura de directorios fue sa-cada de un ejemplo, el mundialmente conocido como Hola Mundo!!! (Hello World), que es el primer programa que uno escribe, en cualquier entorno de desarrollo, en este caso lo podemos encontrar en 3 versiones (que va de un ejemplo básico a uno bastante avanzado), en el sitio www.opensourcestrategies.com/ofbiz. Lo pri-mero a llevar a cabo en una aplicación como lo muestra el diagrama (fi gura 7), es la defi nición de la base de datos, que se la realiza escribiendo un archivo llamado entitymodel.xml, (ubicar el mismo en la Figura 8 – estructura de directorio). En el ejemplo a estudiar defi ne una base de datos con 3 tablas, una para datos de una persona (He-lloPerson), una para los hobbys (HelloHobby)

y una última que relaciona las tablas anteriores (HelloPersonHobby), como se muestra en el Listado 1. Observamos que tiene sintaxis totalmente legible, no hace falta mayores explicaciones. Luego se coloca en el archi-vo entitygroup.xml el nombre de las tablas creadas, como se muestra en el Listado 2.

Siguiendo el diagrama (Figura 7), pasamos a otra capa donde se defi ne el servicio en el archivo services.xml (ver Listado 3). Aprecia-mos que defi ne dos servicios, uno en Java y otro en XML (el minilang de OFBiz). La im-plementación del servicio en XML (el archivo Hello3Services.xml) sería como se muestra en el Listado 4. Con esto simplemente quería poner en manifi esto la simpleza y las pocas líneas ne-cesarias, y el alto nivel de abstracción que posee, la posibilidad de trabajar con Java, entre otras cosas. Este artículo no tiene la fi nalidad de un curso de Apache OBFiz, simplemente un panta-llazo y una primera impresión del mismo. Como vimos no hace falta para desarrollar en OFBiz, ni siquiera un gran conocimiento en Java, html, PostgreSQL, o XML, teniendo una base mínima, ya es sufi ciente. Con respecto a la Base de datos, una vez instalada, nos olvidamos to-talmente que usamos por ejemplo un motor Oracle o PostgreSQL, como se observó an-teriormente. OFBiz presenta además unas herramientas web, para manipular la base de datos, bastante interesante (Figura 9).

Plataformas de desarrollo La mayoría o la totalidad de la implementación se la puede realizar simplemente trabajando con los archivos XML, y para ello cualquier editor de texto que trabaje con la sintaxis de estos formatos es bueno, podríamos decir que VIM es un buen candidato para los amantes de las consolas. Por otra parte podemos usar entornos de desarrollos como Eclipse (con algunos plugins) y NetBeans, ya que con los mismos puedo hacer un segui-miento de la aplicación, parar y hacer correr la aplicación, editarla, encontrar archivos, etc. Se encuentra bastante documentación disponible en Internet de cómo desarrollar en OFBiz utilizando estos entornos de desarrollos.

¿Quiénes usan Apache OFBiz?Es difícil decir quienes usan y cómo usan Apa-che OFBiz debido a que no muchos te dicen si

lo usan, sin embargo bastantes sitios públicos y unos pocos sitios comerciales que declaran usar OFBiz como son: 1-800-Flowers.com, Action Envelope, American Heart Association, Gro-cery List Builder , Ameniti Luxury Travel Club, CellularOne (fl ash front-end), Chocolate Secrets, City Deals, Compliance Online Store, DKNY, Gracious Style, ImagINwood, Juniper Music + Soundesign, La Belle Ecole, Messer Group (German, French), Old Glory, Parago, Partner Homes, Peacock Alley, Salton, Shirt Painter (German), Silver Wings Plus Club, Steiner Sports, totes >>ISOTONER, Ulta, Undersun Consulting, Xinit Systems, World Franchise Council, entre otros.

Para una lista más detallada de los mismos podemos dirigirnos a: http://docs.ofbiz.org/display/OFBIZ/Apache+OFBiz+User+List. También podemos encontrar productos basados en Apache OFBiz como:

• Codesquare Helix Mvelopes (FREE TRIAL!) (Comercial-Service)

• Atlassian JIRA (Comercial)• Opentaps Open Source ERP + CRM

(GPL/Comercial)• Neogia (GPL)• SourceTap CRM (GPL/Commercial)• NeuLion SAVANNA XtraMind Mietta 2.

ConclusionesSi uno quiere implementar un sistema informá-tico de gran envergadura, robusto, totalmente orientado a las corporaciones, que de entrada cuente con un 80% de la solución informática, y que además con pocas líneas de programación se llegue a la solución deseada, sin dudarlo usaría una solución como la propuesta por el proyecto Apache OFBiz. Si bien presenta una curva de aprendizaje bastante elevada, una vez superada, es todo un juego de niños. Espero que este mate-rial sea de utilidad, como cultura general o bien para comenzar a desarrollar con esta fabulosa creación de Apache, en la actualidad conside-rado ofi cialmente un proyecto de alto nivel, o TLP (top level project), para la Apache Software Foundation.

http://ofbiz.apache.org/http://www.opensourcestrategies.com/ofbiz/tutorials.php

En la Red

Figura 9. Herramientas Web - OFBiz

Ing. Javier Torres - Alias Javix - Coordi-nador y Co-fundador de la comunidad de software libre de Salta Argentina (Salta-LUG). Un gran admirador y seguidor de Debian y Ubuntu, en estaciones de traba-jo y en servidores.

Sobre el autor