Ask Questions and Find Answers
Important:
Ask is now read-only. You can review any existing questions and answers, but not add anything new.
But - don't panic! While ask is no more, we've replaced it with discuss - the new Liferay Discussion Forum! Read more here here or just visit the site here:
discuss.liferay.com
RE: Como c.. funciona Service Builder
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:
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.
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.
A mi tambien me gustaria saber mas del service builder.
A ver si reflotandolo alguien hace una pequeña introduccion.
A ver si reflotandolo alguien hace una pequeña introduccion.
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
- Agregar TASK en ext-impl/src/build.xml
- Agregar TASK build-service-portlet-myPortlet en build-service-portlets
- Ejecutar build-service-portlets
- Agregar Metodos en MyTableLocalServiceImpl o en MyTableServiceImpl
- 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
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
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
- 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
Muy util.
Muchas Gracias.
Muchas Gracias.
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
Puedes hacer Mantenedores sin necesidad de programar java ... y es compatible con Liferay
entra en :
www.openxava.com
Community
Company
Feedback