RE: Como c.. funciona Service Builder

thumbnail
684413, modified 17 Years ago. New Member Posts: 17 Join Date: 4/15/08 Recent Posts
Hola a todos.

Ando un poco desesperado porque necesito crear un portlet relacionandolo con una serie de tablas, he intentado usar Service Builder para crear las tablas necesarias e intentar que fuese todo un poco más rápido, pero no hago más que encontrarme con el mismo problema siempre "NO HAY DOCUMENTACION".

Mi problema es el siguiente, tengo una serie de tablas Demandante, perfil y Empleado. Un demandante tiene un perfil y un empleado es un usuario de Liferay con datos extras.
He conseguido crear el service.xml básico:


<entity name="Demandante" local-service="true" remote-service="false" uuid="true">
		<column name="demandanteId" type="long" primary="true" />
<column name="nombre" type="String" />

</entity>
<entity name="Perfil" local-service="true" remote-service="false" uuid="true">
		<column name="perfilId" type="long" primary="true" />
                <column name="nombre" type="String" /></entity>


Ahora ¿como los relaciono? no consigo hacer que las clases generadas usando el "build-service" me hagan una referencia entre ellas de ningun tipo (he hecho no se cuantos cambios y no consigo nada)

Y luego ¿Como lo uso? el objeto que hace de Model es un interfaz y por lo tanto tengo que usar la implementacion, pero me parece bastante incorrecto. ADemás el ejemplo del SVN de "sample-service-builder" no es el mismo que me genera a mi usando las mismas clases.

En la wiki solo hace una breve mención a que es un service builder y algunas cosillas más, pero nada sobre como relacionar tablas o como "extender" la tabla de usuarios.

¿Se crean relaciones usando este sistema?

Y por terminar ¿Existen formas de aprovechar esto y crear tablas, listados, busquedas y formularios más facilmente? porque esto es desesperante.
527547, modified 17 Years ago. Junior Member Posts: 27 Join Date: 2/29/08 Recent Posts
A mi tambien me gustaria saber mas del service builder.
A ver si reflotandolo alguien hace una pequeña introduccion.
thumbnail
32461, modified 17 Years ago. Regular Member Posts: 193 Join Date: 6/6/07 Recent Posts
Hola
Voy a explicar como utilizar el Service Builder en las últimas versiones de Liferay.

- crear el package: com.ext.liferay.portlet.myPortlet
- crear service.xml en ext-impl/src/com/ext/liferay/portlet.myPortlet
- Escribir Tablas, Columnas, metodo de ordenamiento (order by name), finders (where name = ?) y Excepciones de Negocio

<?xml version="1.0"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 4.4.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_4_4_0.dtd">
<service-builder package-path="com.ext.liferay.portlet.myPortlet">
<namespace>myPortlet</namespace>
<entity name="MyTable" uuid="true" local-service="true" remote-service="true">
<column name="id" type="long" primary="true" />
<column name="name" type="String" />
<order by="desc">
<order-column name="id" />
</order>
<!-- Finder methods -->
<finder name="Name" return-type="Collection">
<finder-column name="name" />
</finder>
</entity>
<exceptions>
<exception>InvalidName</exception>
</exceptions>
</service-builder>

- Agregar TASK en ext-impl/src/build.xml

<target name="build-service-portlet-myPortlet">
<antcall target="build-service">
<param name="service.file" value="src/com/ext/liferay/portlet/myPortlet/service.xml" />
</antcall>
</target>

- Agregar TASK build-service-portlet-myPortlet en build-service-portlets

<target name="build-service-portlets">
<antcall target="build-service-portlet-myPortlet" />
</target>

- Ejecutar build-service-portlets
- Agregar Metodos en MyTableLocalServiceImpl o en MyTableServiceImpl

public MyTable getMyTable(long id) throws .... {
return MyTableUtil.findByPrimaryKey(id); // fijarse en el codigo funte de Liferay porque se dejo de usar de esta manera, aunque
//esto sigue siendo valido
}

- Ejecutar build-service-portlets para actualizar interfaces y tambien MyTableLocalServiceUtil y MyTableServiceUtil
- Refrescar el proyecto en el eclipse para que los metodos esten disponibles.

Diferencias entre XXXLocalServiceUtil y XXXServiceUtil
- XXXServiceUtil hace validación de permisos
- XXXServiceUtil se utiliza en WebService, Json, etc...
- XXXServiceUtil siempre invoca los metodos de XXXLocalServiceUtil.

Espero que les sirve mi pequeño tutorial.

Saludos
thumbnail
32461, modified 17 Years ago. Regular Member Posts: 193 Join Date: 6/6/07 Recent Posts
Me olvidaba de algunas cosas:

- En las últimas versiones hay algunos features nuevos en el service.xml
- Se pueden resolver relaciones de Muchos a Muchos
- Tambien se puden modificar los JAVA que se generan ya que los mismo se crean con Free Maker
- Ver build-wsdd TASK para generar Web Services sobre XXXServiceUtil generado

Saludos,

Jonatan
527547, modified 17 Years ago. Junior Member Posts: 27 Join Date: 2/29/08 Recent Posts
Muy util.
Muchas Gracias.
thumbnail
351224, modified 17 Years ago. Junior Member Posts: 88 Join Date: 12/21/07 Recent Posts
Si quieres un poco mas de potencia puedes usar este programilla.

Puedes hacer Mantenedores sin necesidad de programar java ... y es compatible con Liferay

entra en :

www.openxava.com