{"id":824,"date":"2012-10-25T21:35:37","date_gmt":"2012-10-25T21:35:37","guid":{"rendered":"http:\/\/www.arvo.es\/dspace\/?p=824"},"modified":"2013-01-09T23:57:51","modified_gmt":"2013-01-09T22:57:51","slug":"activar-tareas-de-curation","status":"publish","type":"post","link":"https:\/\/www.arvo.es\/dspace\/activar-tareas-de-curation\/","title":{"rendered":"Activar tareas de Curation. Parte 1"},"content":{"rendered":"<p>Las tareas de Curaci\u00f3n (Curation tasks) son b\u00e1sicamente programas desarrollados en Java para a\u00f1adir una funcionalidad adicional, relacionada con la gesti\u00f3n de los objetos del repositorio, de ah\u00ed el t\u00e9rmino Curaci\u00f3n o Preservaci\u00f3n, a la que nos da la instalaci\u00f3n base repositorio.<\/p>\n<blockquote><p>Manual Dspace 1.8: <em>The goal of the curation system (&#8216;CS&#8217;) is to provide a simple, extensible way to manage routine content operations on a repository. &#8230;The DSpace core distribution will provide a number of useful tasks, but the system is designed to encourage local extension &#8211; tasks can be written for any purpose, and placed in any java package. This gives DSpace sites the ability to customize the behavior of their repository without having to alter &#8211; and therefore manage synchronization with &#8211; the DSpace source code.<\/em><\/p><\/blockquote>\n<p>El soporte a las tareas de curaci\u00f3n aparece en la versi\u00f3n 1.7 y se mejora sustancialmente en la versi\u00f3n 1.8, principalmente con la adici\u00f3n de un marco bastante completo de creaci\u00f3n de nuevas tareas.<\/p>\n<p>Las tareas de curaci\u00f3n son programas java con detecci\u00f3n del contexto de invocaci\u00f3n, es decir se aplican al nivel de colecci\u00f3n, subcolecci\u00f3n o \u00edtem,\u00a0 en el contexto en el que se est\u00e9. Adem\u00e1s pueden ser invocadas desde el Command line interface, CLI, con lo que pueden ser programadas mediante rutinas nocturnas,\u00a0 y tambi\u00e9n desde la UI del administrador (s\u00f3lo interface XMLUI).<br \/>\nLas tareas que pueden ser apropiadas ser\u00edan, p.ej :<\/p>\n<ul>\n<li>Escaneado antivirus de los ficheros, asegurar la legibilidad de los ficheros&#8230;<\/li>\n<li>Mejora de los ficheros, p.ej aplicaci\u00f3n de marcas de agua o p\u00e1ginas iniciales a los pdfs&#8230;<\/li>\n<li>Comprobaci\u00f3n de la completitud de metadatos, valores l\u00edmite de los metadatos, adherencia a determinados perfiles de uso de los mismos..<\/li>\n<li>Conexi\u00f3n con servicios externos a Dspace para mejorar los metadatos, como authority controlled&#8230;<\/li>\n<\/ul>\n<p>Las tareas de curaci\u00f3n nos permiten complementar Dspace e incorporar funciones adicionales, pero debemos considerar las implicaciones ante una migraci\u00f3n de versiones. El poder implementar cualquier funci\u00f3n tiene la desventaja de que esa libertad puede hacer que a la hora de desarrollar una tarea estemos usando versiones de la API de DSpace que en un momento dado se abandone o entren en desuso. Por ejemplo,\u00a0 programamos una tarea de curation en la cual modificamos un metadato de DSpace usando la API del DSpace 1.7.2, luego al\u00a0 migrar esta tarea de curaci\u00f3n a una versi\u00f3n superior,\u00a0 descubrimos que la API DSpace 1.8.2 no soporta lo que hemos programado.<\/p>\n<p>No obstante esta precauci\u00f3n, he de decir que a partir de la versi\u00f3n 1.6.0 y futuras API&#8217;s no parece haber muchos cambios importantes a la hora de programar, por lo que una tarea de curaci\u00f3n programada para la API 1.6.0 seguramente funcione para la 1.8.2.<\/p>\n<p>Una vez hecha esta introducci\u00f3n ahora vuestra pregunta ser\u00e1, <strong>\u00bfc\u00f3mo programo y c\u00f3mo activo una tarea de curaci\u00f3n?<\/strong><\/p>\n<p>La respuesta a la primera pregunta mejor lo dejamos para otro futuro post\u00a0 (nos quedar\u00eda este muy pesado) y nos centramos es la segunda cuesti\u00f3n.<\/p>\n<p>Como aspecto curioso de se\u00f1alar,\u00a0 DSpace tiene de por s\u00ed mas tareas de curaci\u00f3n programadas de las que aparecen en el UI, lo que pasa es que no las tiene instaladas. Por ello nos centraremos en este caso\u00a0 para aclarar c\u00f3mo se instala una tarea de curaci\u00f3n.<\/p>\n<p>Para que el Curation System pueda ejecutar una tarea, se deben dar dos condiciones, que el c\u00f3digo de la tarea se incluya con el resto del c\u00f3digo,\u00a0 p.ej. en [dspace]\/lib, WAR, etc, y que adem\u00e1s se le declare y asigne un nombre en el fichero de configuraci\u00f3n <em>[dspace]\/config\/modules\/curate.cfg.<\/em>\u00a0 Notar que este fichero se localiza en el subdirectorio <em>config\/modules<\/em>\/. La intenci\u00f3n es que las tareas sean add-ons de la configuraci\u00f3n base del sistema, sin que a\u00f1adir o retirar tareas impacte en dspace.cfg (esto cambi\u00f3n en la v1.8 respecto la v1.7)<\/p>\n<p>En este fichero hemos de introducir las tareas de curaci\u00f3n para que el interfaz gr\u00e1fico de DSpace las detecte. Para cada tarea se debe a\u00f1adir un par key-value. La <em>Key<\/em> es el nombre completo cualificado de la clase java y el Value es el nombre de la tarea usado en el resto del CS para referirse a la tarea,\u00a0 de tal forma que luego el usuario las pueda seleccionar.<\/p>\n<p>Por ejemplo, si queremos activar el antivirus ClamScan debemos de a\u00f1adir en el par\u00e1metro <em>plugin.named.org.dspace.curate.CurationTask<\/em>, el nombre de la clase Java correspondiente a la tarea de curation y luego un nombre que le queramos dar a la tarea de curaci\u00f3n.\u00a0Nuestra clase java se llama ClamScan y queremos darle el nombre vscan, y entonces la l\u00ednea quedar\u00eda as\u00ed:<\/p>\n<pre>plugin.named.org.dspace.curate.CurationTask =\r\norg.dspace.ctask.general.ClamScan = vscan<\/pre>\n<p>Como tendremos mas tareas activas, este par\u00e1metro tendr\u00e1 m\u00e1s bien este aspecto:<\/p>\n<pre>plugin.named.org.dspace.curate.CurationTask = \\\r\norg.dspace.ctask.general.ProfileFormats = profileformats, \\\r\norg.dspace.ctask.general..RequiredMetadata = requiredmetadata, \\\r\norg.dspace.ctask.general.ClamScan = vscan<\/pre>\n<p>y obviamente si quisi\u00e9semos insertar otra tarea de curaci\u00f3n, por ejemplo un fichero java llamado MiJava y de nombre mitarea ser\u00eda as\u00ed<\/p>\n<pre>plugin.named.org.dspace.curate.CurationTask = \\\r\norg.dspace.ctask.general.ProfileFormats = profileformats, \\ \r\norg.dspace.ctask.general..RequiredMetadata = requiredmetadata, \\ \r\norg.dspace.ctask.general.ClamScan = vscan \\\r\norg.dspace.ctask.general.MiJava = mitarea<\/pre>\n<p>Ahora solo queda reiniciar el tomcat y ya tenemos disponible nuestra tarea de curaci\u00f3n en la UI. Con los privilegios de administrador (en la 1.8 tambi\u00e9n pueden ejecutar tareas de curaci\u00f3n los administradores de comunidad, en su contexto de administraci\u00f3n, claro) en los paneles de edici\u00f3n de comunidad o colecci\u00f3n o item, deberemos seleccionar la pesta\u00f1a de curar. En el desplegable que aparece seleccionamos la tarea que queremos ejecutar, y una vez seleccionada le damos al bot\u00f3n de realizar.<\/p>\n<p>Bueno espero que os haya abierto el gusanillo de la curiosidad, y os de por experimentar un poco con tareas de curaci\u00f3n. En siguientes entregas explicaremos como codificar nuevas tareas de curaci\u00f3n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Las tareas de Curaci\u00f3n (Curation tasks) son b\u00e1sicamente programas desarrollados en Java para a\u00f1adir una funcionalidad adicional, relacionada con la gesti\u00f3n de los objetos del repositorio, de ah\u00ed el t\u00e9rmino Curaci\u00f3n o Preservaci\u00f3n, a la que nos da la instalaci\u00f3n &hellip;<\/p>\n<p class=\"read-more\"><a href=\"https:\/\/www.arvo.es\/dspace\/activar-tareas-de-curation\/\">Leer m\u00e1s &raquo;<\/a><\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[55,62,30,60],"class_list":["post-824","post","type-post","status-publish","format-standard","hentry","category-documentacion_tecnica","tag-cli","tag-curation","tag-gui","tag-javaapi"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/posts\/824","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/comments?post=824"}],"version-history":[{"count":29,"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/posts\/824\/revisions"}],"predecessor-version":[{"id":853,"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/posts\/824\/revisions\/853"}],"wp:attachment":[{"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/media?parent=824"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/categories?post=824"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/tags?post=824"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}