Este documento describe los servicios de alto nivel de la plataforma Athento v1.3.3. Estos servicios pueden ser accedidos mediante conectores de entrada y se definen en la capa de servicios de alto nivel. Algunos ejemplos de servicios incluyen el gestor de documentos, workflow, informes, monitoreo y exportación/importación. El documento también explica cómo crear y acceder a servicios así como el uso de puntos de extensión y representaciones.
2. ¿Qué son?
Los high-level services de Athento son
servicios de la plataforma capaces de ser
accedidos mediante un conector de
entrada.
✔ Se definen en la capa de HLS que conecta
la capa de Core Service con los conectores
de entrada mediante el servicio de
interoperabilidad.
✔
Yerbabuena Software ~ 2013
4. Servicio: ¿Cómo crear uno?
Para crear un servicio, siempre un nuevo
componente.
✔
<implementation class="org.yerbabuena.athento.MyServiceImplementation" />
<service>
<provide interface="org.yerbabuena.athento.MyServiceInterface" />
</service>
<extension-point name="anExtensionPoint">
<object class="org.yerbabuena.athento.YourObjectDescriptor" />
</extension-point>
Yerbabuena Software ~ 2013
5. ¿Cómo acceder al servicio?
✔
Sólo necesitamos llamar al método:
Framework.getService(MyServiceInterface.class)
Si el servicio esta correctamente definido, se
devolverá una nueva instancia.
✔ No es necesario hacer ningún casting,
obtendremos el objeto MyServiceInterface.
✔
Yerbabuena Software ~ 2013
6. Servicios y puntos de extensión
La implementación de nuestro componente debe
extender de la clase DefaultComponent e
implementar la interfaz indicada en el XML definido.
✔ DefaultComponent provee de:
✔ Un método registerContribution(...)
✔ Un método activate(...)
✔
Yerbabuena Software ~ 2013
7. Puntos de extensión
Sabemos que para contribuir siempre es
necesario un EP.
✔ Cada contribución será mapeada con
descriptores de objeto.
✔ El mapeo será realizado con XMap.
✔
✔
Herramienta para mapear XML a objeto Java. (by Nuxeo)
El método registerContribution(...) será
llamado con el descriptor del punto de extensión.
✔
Yerbabuena Software ~ 2013
9. Registrando contribuciones
Cada vez que OSGi Runtime encuentra una
contribución de un EP, llama al método
registerContribution del servicio que lo
contiene.
✔ En el método, obtenemos el parámetro que será el
objeto java descriptor del XML que describe el EP.
✔ Podemos gestionarlo a nuestro gusto.
✔
Yerbabuena Software ~ 2013
10. Haciéndolo High-Level Service
Para hacer nuestro servicio high-level service de
Athento Manager debemos anotar nuestra interfaz de
servicio con la anotación @Service.
✔
Como hablamos al principio podemos restringir el
acceso a los servicios de Athento Manager a llamadas
en modo GET y/o POST. Para ello, usaremos las
anotaciones @Get ó @Post a nivel de método de la
implementación del servicio.
✔
Yerbabuena Software ~ 2013
13. Anotando parámetros
Cuando queremos asociar el nombre a un parámetro
de un método de un servicio para poder asociarlo en
una llamada a conector de entrada usaremos la
anotación @ParamName.
✔
@Get
@Post
PlatformFolder createFolder(
@ParamName(“nombre”) String name,
@ParamName(“destino”) String destinyPath)
throws DocumentException;
Yerbabuena Software ~ 2013
14. Seguridad y acceso
Es posible aplicar control de acceso mediante
conectores a los high-level services de Athento
Manager:
✔ Podemos permitir acceso.
✔
<services allowedAll="true">
<allowed>org.yerbabuena.athento.manager.HighLevelServie</allowed>
</services>
✔
Podemos denegar acceso.
<services allowedAll="false">
<denied>org.yerbabuena.athento.manager.HighLevelServie</denied>
</services>
Yerbabuena Software ~ 2013
15. Representaciones
Las representaciones son utilizadas para definir
elementos que puedan usarse como elemento
interoperable en un HLS.
✔ Una representación podrá visualizarse en XML,
JSON, JavaObject, etc. (o cualquier mimetype definid
por el usuario).
✔ Toda representación debe implementar la interfaz
Representable, para visualizarse como elemento
en una operación resultado, o bien,
RepresentationAdapter, para manejarse como
argumento a la entrada de una funcionalidad de un
HLS.
✔
Yerbabuena Software ~ 2013
16. Representaciones (2)
✔
Ejemplos.
✔
Documento
public class PlatformDocument extends PlatformObject implements SingleDocument,
Representable, Serializable
@XmlAccessorType(value = XmlAccessType.PROPERTY)
@XmlType(name = "documentRepresentation")
@XmlRootElement(name = "document")
public class DocumentRepresentation extends CmisObjectRepresentation implements
RepresentationAdapter, Serializable {
Yerbabuena Software ~ 2013