Introducción
Los workflows (flujos de trabajo) pueden utilizarse para definir cómo deben revisarse o editarse los documentos después de ser enviados e/o importados a DSpace. El objetivo principal del marco de trabajo de workflow es proporcionar una solución más flexible para que el administrador pueda configurarla, e incluso permitir que un desarrollador de aplicaciones implemente pasos personalizados, los cuales pueden configurarse en el flujo de trabajo de una colección mediante un simple archivo de configuración. Cada workflow puede compararse con una acción que se realiza sobre un ítem entre el momento en que se envía al repositorio y el momento en que se archiva y publica en él. El concepto detrás de este enfoque se modeló a partir del sistema de envío configurable que ya está presente en DSpace.
Cómo configurar tus flujos de trabajo
Cada envío a DSpace pasa por un flujo de trabajo antes de ser publicado en el repositorio. Un flujo de trabajo consiste en una serie de pasos, cada uno de los cuales representa una oportunidad para que un revisor, editor o administrador de la colección modifique y/o apruebe o rechace el envío. Un paso también puede comenzar ejecutando una {Curation Task} sobre el envío.
Cada colección está asociada a un flujo de trabajo. Si no se realiza una asociación explícita, a la colección se le asigna el flujo de trabajo predeterminado. Estas asociaciones se configuran en config/spring/api/workflow.xml utilizando la propiedad workflowMapping del bean XmlWorkflowFactory. Para realizar una asociación explícita, agrega una entrada a la lista con el Handle de la colección como la 'key' y el 'name' de un bean de tipo Workflow como el 'value-ref'.
Cada paso en un flujo de trabajo está asociado a un "rol", el cual define quién puede ejecutar dicho paso. Los miembros del rol serán notificados cuando un nuevo envío requiera su atención. Los roles se definen mediante grupos de usuarios de DSpace. Si deseas que los revisores interactúen con los envíos entrantes, debes crear y asignar los grupos necesarios. Consulta más abajo para obtener detalles.
FLUJOS DE TRABAJO
Para crear un nuevo flujo de trabajo, agrega otro bean con la clase 'org.dspace.xmlworkflow.state.Workflow' y un 'name' único. Asígnale una propiedad 'steps' que contenga una lista de los pasos que deben ejecutarse en secuencia, y una propiedad 'firstStep' que indique el nombre del paso que debe iniciarse primero. Consulta el flujo de trabajo predeterminado como ejemplo. Un paso existente puede reutilizarse si es apropiado, o bien puedes crear uno nuevo que se adapte a tus necesidades.
PASOS
Además de su nombre, un paso tiene un "método de selección de usuario", un "rol", "acciones" y "resultados" (outcomes).
El campo userSelectionMethod de un paso corresponde al nombre de una "acción" del tipo selección de usuario. Un paso puede, por ejemplo, permitir que un único usuario lo reclame (para una determinada entrega), o bien combinar las acciones de múltiples usuarios. Un paso tiene exactamente un solo userSelectionMethod. Consulta más información sobre las acciones más adelante.
El rol de un paso define el conjunto de usuarios que pueden realizar acciones sobre una entrega que ha ingresado a dicho paso. Consulta más información sobre los roles más adelante.
Las acciones de un paso son los tipos de tareas que se realizan en ese paso. Consulta más información sobre las acciones más adelante. Se puede enumerar más de una acción.
Los resultados (outcomes) de un paso conectan las decisiones de los miembros del rol con el siguiente paso a ejecutar. Por ejemplo, esto permite que un miembro del rol acepte una entrega y omita los pasos posteriores, yendo directamente al paso final del flujo de trabajo.
Para crear un nuevo paso, agrega un bean con la clase org.dspace.xmlworkflow.state.Step y las propiedades necesarias, como se describió anteriormente. Consulta los pasos existentes en workflow.xml para ver ejemplos.
ROLES (ROLES)
Puedes reutilizar roles existentes o agregar los tuyos propios. Un rol tiene un name (nombre), un scope (alcance) y, opcionalmente, una description (descripción). Existen tres tipos de roles:
- Un rol de tipo COLLECTION se refiere a un grupo de usuarios asociado con una colección específica. Su nombre será {collectionID}_{roleName}. Por ejemplo, un rol llamado 'editor' con alcance COLLECTION, aplicado a la colección 123, se referirá al grupo de usuarios llamado 'editor_123', mientras que el mismo rol aplicado a la colección 456 se referirá al grupo 'editor_456'.
- Un rol de tipo REPOSITORY se refiere a un grupo de usuarios fijo, cuyo nombre es el mismo que el del rol. Un rol REPOSITORY llamado 'fred' siempre se referirá al grupo de usuarios 'fred'.
- Un rol de tipo ITEM se asigna mediante una acción previa dentro del flujo de trabajo. [SE REQUIERE MAYOR EXPLICACIÓN]
Para crear un nuevo rol, agrega un bean con la clase org.dspace.xmlworkflow.Role, el scope (alcance) correspondiente y un name (nombre) único. Asegúrate de que los grupos relacionados existan.
ACCIONES (ACTIONS)
Las acciones se definen por separado en 'config/spring/api/workflow-actions.xml'.
Ya existe un conjunto de acciones predefinidas que deberían cubrir la mayoría de las necesidades. Las acciones están implementadas en código Java, por lo que si necesitas una nueva, deberás escribir código Java además de configurarla en este archivo.
Existen dos tipos de acciones: asignación de usuarios y procesamiento. Una acción de asignación de usuarios selecciona uno o más miembros de un rol para ejecutar un paso. Una acción de procesamiento modifica el estado de la entrega.
Para configurar una nueva acción, crea un bean con un 'id' único, la propiedad 'class' igual al nombre completo de la clase Java que implementa la acción y 'scope' con valor "prototype". Agrega propiedades, argumentos del constructor, etc., según lo requiera el código.
CURACIÓN
Para asociar una Tarea de Curación a un paso del flujo de trabajo, consulta el Sistema de Curación. Las tareas se ejecutan al inicio del paso, antes de que los miembros del rol sean notificados.
CÓMO FUNCIONA
Para obtener detalles sobre cómo se implementan estos conceptos (por ejemplo, para crear nuevas acciones), consulta la página de Flujos de Trabajo en la sección de Desarrollo de DSpace.
Migración de Datos
A partir de DSpace 7, el Flujo de Trabajo Configurable es el único sistema de flujo de trabajo disponible en DSpace. Ha reemplazado por completo al antiguo sistema de "flujo de trabajo tradicional/básico". Una diferencia importante es que el Flujo de Trabajo Configurable es dinámico: si se agrega un usuario a una tarea de aprobación del flujo de trabajo después de que este ya haya comenzado, dicho usuario obtendrá acceso inmediato a los ítems que ya están en flujo de trabajo. Esto no era posible anteriormente con el sistema de flujo de trabajo "tradicional".
Scripts de conversión/migración de Workflowitem
Dependiendo del flujo de trabajo utilizado en una instalación de DSpace, pueden emplearse diferentes scripts al migrar al nuevo sistema de flujo de trabajo.
Migración automática
Como parte de la actualización a DSpace 7 o superior, todas tus políticas, roles, tareas y workflowitems antiguos se actualizarán automáticamente desde el flujo de trabajo original al marco del Flujo de Trabajo Configurable. Esto se realiza mediante el siguiente comando:
[dspace]/bin/dspace database migrate ignored
El parámetro "ignored" indicará a DSpace que ejecute cualquier migración previamente ignorada en tu base de datos. Dado que las migraciones al Flujo de Trabajo Configurable han existido en el código de DSpace desde hace tiempo, esta es la única manera de forzar su ejecución.
Para obtener más información sobre el comando "database migrate", consulta la sección Utilidades de Base de Datos.
Migración basada en Java
En caso de que tu instalación de DSpace utilice una versión personalizada del flujo de trabajo, es posible que el script de migración no funcione correctamente y se recomienda un enfoque diferente. Por ello, se ha creado un script adicional basado en Java que reinicia el flujo de trabajo para todos los workflowitems que existen en el marco del flujo de trabajo original. Este script tomará todos los workflowitems existentes y los ubicará en el primer paso del marco de Flujo de Trabajo Configurable, teniendo en cuenta la configuración XML que exista en ese momento para la colección a la cual se envió el ítem. Este script también puede usarse para reiniciar el flujo de trabajo de ítems que se encuentren en el flujo de trabajo original, pero no para reiniciar el flujo de trabajo de ítems ya presentes en el Flujo de Trabajo Configurable.
Para ejecutar el script, ejecuta el siguiente comando en la línea de comandos (CLI):
[dspace]/bin/dspace dsrun org.dspace.xmlworkflow.migration.RestartWorkflow -e admin@myrespository.org
Se pueden especificar los siguientes argumentos al ejecutar el script:
- -e: especifica el nombre de usuario de un usuario administrador
- -n: si se envían envíos a través del flujo de trabajo, enviar correos electrónicos de notificación
- -p: la descripción de procedencia que se agregará al ítem
- -h: ayuda
Configuración
Configuración principal del flujo de trabajo
A partir de DSpace 7, el archivo de configuración workflow.xml ha sido migrado para utilizar la sintaxis de Spring Bean (en lugar de un formato XML personalizado). La estructura de este XML ha cambiado. Si necesitas ayuda para migrar tu antiguo workflow.xml file (que comenzaba con la <wf-config> tag) al nuevo formato (que utiliza <bean> tags), hay disponible un script XSLT: workflow-migration.xsl
La configuración principal del flujo de trabajo se encuentra en el archivo workflow.xml, ubicado en
[dspace]/config/spring/api/workflow.xml
. A continuación se muestra un ejemplo de este archivo de configuración de flujo de trabajo.
<beans>
<bean class="org.dspace.xmlworkflow.XmlWorkflowFactoryImpl">
<property name="workflowMapping">
<util:map>
<entry key="defaultWorkflow" value-ref="defaultWorkflow"/>
<!-- <entry key="123456789/4" value-ref="selectSingleReviewer"/>-->
<!-- <entry key="123456789/5" value-ref="scoreReview"/>-->
</util:map>
</property>
</bean>
<!--Standard DSpace workflow-->
<bean name="defaultWorkflow" class="org.dspace.xmlworkflow.state.Workflow">
<property name="firstStep" ref="reviewstep"/>
<property name="steps">
<util:list>
<ref bean="reviewstep"/>
<ref bean="editstep"/>
<ref bean="finaleditstep"/>
</util:list>
</property>
</bean>
<bean id="{workflow.id}"
class="org.dspace.xmlworkflow.state.Workflow">
<!-- Another workflow configuration-->
</bean>
<!-- Role beans. See below. -->
<!-- Step beans. See below. -->
</beans>
Bean workflowFactory (org.dspace.xmlworkflow.XmlWorkflowFactoryImpl)
El mapa de flujo de trabajo contiene una asignación entre las colecciones en DSpace y una configuración de flujo de trabajo, y se define mediante la propiedad workflowMapping del workflow factory. De manera similar a la configuración del proceso de envío, esta asignación puede realizarse utilizando el handle de la colección. La asignación que use "defaultWorkflow" como valor para la colección se aplicará a todas aquellas colecciones que no estén incluidas en otras etiquetas de asignación. Cada asignación se define mediante un "entry" element con dos atributos:
- key: puede ser un handle de colección o "defaultWorkflow"
- value-ref: el valor de este atributo apunta a una de las configuraciones de flujo de trabajo definidas por los beans "Workflow"
Beans de flujo de trabajo (org.dspace.xmlworkflow.state.Workflow)
El bean de flujo de trabajo es un elemento XML repetible y representa un proceso de flujo de trabajo. Requiere lo siguiente:
- "
name" atributo: un nombre único utilizado para identificar el flujo de trabajo y que se usa en la asignación entre flujo de trabajo y colección. - "
firstStep" propiedad: el identificador del primer paso del flujo de trabajo. Este paso será el punto de entrada del proceso de flujo de trabajo. Cuando se envía un nuevo ítem a una colección que utiliza este flujo, el paso configurado en "firstStep" será el primero por el que pasará el ítem. - "
steps" propiedad: una lista de todos los pasos dentro de este flujo de trabajo (en el orden en que serán procesados).
Beans de rol (org.dspace.xmlworkflow.Role)
Cada paso del flujo de trabajo tiene definida una propiedad "role". Un rol representa a una o más EPersons o Grupos existentes en DSpace, y puede utilizarse para asignarlos a uno o más pasos dentro del proceso de flujo de trabajo. Un rol se representa mediante un bean "role" y cuenta con lo siguiente:
- "
id" atributo: un identificador único (dentro de un proceso de flujo de trabajo) para el rol - "
description" propiedad: atributo opcional para describir el rol - "
scope" propiedad: atributo opcional que se utiliza para localizar el grupo, y debe tener uno de los siguientes valores, definidos como campos constantes enorg.dspace.xmlworkflow.Role.Scope:- COLLECTION: El valor collection indica que el grupo se configurará a nivel de la colección. Este tipo de grupo es igual al que existía en el sistema de flujo de trabajo original. Si no se especifica ningún valor para el atributo scope, el marco de flujo de trabajo asume que el rol es un rol de colección.
- REPOSITORY: El scope repositorio utiliza grupos definidos a nivel del repositorio en DSpace. El atributo name debe coincidir exactamente con el nombre de un grupo existente en DSpace.
- ITEM: El scope ítem asume que una acción distinta dentro del flujo de trabajo asignará un conjunto de EPersons o Grupos a un ítem específico del flujo de trabajo para realizar un paso. Estos asignados pueden variar para cada ítem en flujo de trabajo.
- "
name" propiedad: El nombre especificado en el atributo name de un rol se utilizará para buscar un grupo de eperson en DSpace. La búsqueda dependerá del scope especificado en el atributo "scope":- COLLECTION: El marco de flujo de trabajo buscará un grupo que contenga el nombre especificado en el atributo name y el ID de la colección para la cual se utiliza este rol.
- REPOSITORY: El marco de flujo de trabajo buscará un grupo con el mismo nombre que el especificado en el
nameatributo. - ITEM: en caso de que se seleccione el scope ítem, no se requiere el atributo name del rol.
<bean id="reviewer" class="org.dspace.xmlworkflow.Role">
<property name="scope" value="#{ T(org.dspace.xmlworkflow.Role.Scope).COLLECTION}"/>
<property name="name" value="Reviewer"/>
<property name="description" value="The people responsible for this step are able to edit the metadata of incoming submissions, and then accept or reject them."/>
</bean>
Beans de paso (org.dspace.xmlworkflow.state.Step)
El elemento step representa un paso dentro del proceso de flujo de trabajo. Un paso incluye un conjunto de acciones que deben ser ejecutadas por un rol específico. En caso de que no se especifique el atributo role, el marco de flujo de trabajo asume que el sistema DSpace es responsable de la ejecución del paso y que no habrá una interfaz de usuario disponible para las acciones de ese paso. El elemento step cuenta con las siguientes configuraciones para personalizar su comportamiento:
- "
name" atributo: Especifica un identificador único para el paso. Este identificador se utilizará al configurar otros pasos que hagan referencia a este, y también al definir el paso inicial del flujo de trabajo para un ítem. - "
userSelectionMethod" propiedad: Este atributo define elUserSelectionActionque se usará para determinar cómo se asignan usuarios a este paso para un workflow-item. El valor debe hacer referencia al identificador de un bean de acción definido en workflow-actions.xml. Ejemplos de asignación de usuarios a un paso incluyen el uso del sistema actual de task pool (bandeja de tareas) o, como alternativa, la asignación directa de un usuario a una tarea. - "
role" propiedad: Atributo opcional que debe apuntar alidatributo de un elemento de rol definido para el flujo de trabajo. Este rol se usará para determinar los epersons y grupos utilizados por eluserSelectionMethod. - RequiredUsers: (Este término se refiere a la cantidad de usuarios requeridos para completar el paso, y su uso específico se detalla a continuación en la configuración).
<bean name="reviewstep" class="org.dspace.xmlworkflow.state.Step">
<property name="userSelectionMethod" ref="claimaction"/>
<property name="role" ref="reviewer"/>
<property name="outcomes">
<util:map>
<entry key="#{ T(org.dspace.xmlworkflow.state.actions.ActionResult).OUTCOME_COMPLETE}"
value-ref="editstep"/>
</util:map>
</property>
<property name="actions">
<util:list>
<ref bean="reviewaction"/>
</util:list>
</property>
</bean>
Cada paso contiene una serie de acciones por las que pasará el ítem del flujo de trabajo. En caso de que la acción tenga una interfaz de usuario, los usuarios responsables de ejecutar ese paso deberán completar dichas acciones antes de que el ítem pueda avanzar a la siguiente acción o al final del paso.
También existe una subsección opcional que puede definirse en un paso llamada "outcomes". Esta se puede utilizar para definir resultados del paso que difieran del especificado en el atributo nextStep. Cada acción devuelve un valor entero dependiendo del resultado de dicha acción. El valor predeterminado es "0" y hará que el ítem del flujo de trabajo avance a la siguiente acción o al final del paso.
En caso de que una acción devuelva un resultado diferente del valor predeterminado "0", se utilizarán los resultados alternativos para determinar el siguiente paso. El elemento "outcomes" contiene varios elementos step, cada uno con un atributo status. Este atributo status define el valor de retorno de una acción. El valor del elemento se utilizará para determinar el siguiente paso que seguirá el ítem del flujo de trabajo si una acción devuelve ese estado específico.
Configuración de acciones del flujo de trabajo
Configuración de la API
La configuración de las acciones del flujo de trabajo se encuentra en el directorio [dspace]/config/spring/api/ y se llama "workflow-actions.xml". Este archivo de configuración describe las distintas clases Java de tipo Action que son utilizadas por el marco de flujo de trabajo. Dado que el marco de flujo de trabajo utiliza el framework Spring para cargar estas clases de acción, este archivo contiene una configuración basada en Spring.
Este archivo contiene los beans para las acciones y métodos de selección de usuarios referenciados en el archivo workflow.xml. Para que el marco de flujo de trabajo funcione correctamente, cada una de las acciones requeridas debe formar parte de esta configuración.
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
<!-- At the top are our bean class identifiers --->
<bean id="{action.api.id}" class="{class.path}" scope="prototype"/>
<bean id="{action.api.id.2}" class="{class.path}" scope="prototype"/>
<!-- Below the class identifiers come the declarations for out actions/userSelectionMethods -->
<!-- Use class workflowActionConfig for an action -->
<bean id="{action.id}" class="oorg.dspace.xmlworkflow.state.actions.WorkflowActionConfig" scope="prototype">
<constructor-arg type="java.lang.String" value="{action.id}"/>
<property name="processingAction" ref="{action.api.id}"/>
<property name="requiresUI" value="{true/false}"/>
</bean>
<!-- Use class UserSelectionActionConfig for a user selection method -->
<!--User selection actions-->
<bean id="{action.api.id.2}" class="org.dspace.xmlworkflow.state.actions.UserSelectionActionConfig" scope="prototype">
<constructor-arg type="java.lang.String" value="{action.api.id.2}"/>
<property name="processingAction" ref="{user.selection.bean.id}"/>
<property name="requiresUI" value="{true/false}"/>
</bean>
</beans>
En este archivo de configuración de Spring se configuran dos tipos de acciones:
- Acción de selección de usuario: Este tipo de acción es siempre la primera acción de un paso y se encarga del proceso de selección de usuarios para dicho paso. En caso de que un paso no tenga un rol asignado, no se seleccionará ningún usuario y se utilizará
NoUserSelectionAction. - Acción de procesamiento: Este tipo de acción se utiliza para el procesamiento real de un paso. Las acciones de procesamiento contienen la lógica necesaria para ejecutar las operaciones requeridas en cada paso. Se pueden definir múltiples acciones de procesamiento dentro de un mismo paso. Los usuarios y el ítem del flujo de trabajo pasarán por estas acciones en el orden en que se especifican en la configuración del flujo de trabajo, a menos que una de ellas devuelva un resultado alternativo.
Acción de Selección de Usuario
Cada acción de selección de usuario utilizada en la configuración del flujo de trabajo hace referencia a una definición de bean en el archivo workflow-actions.xml. Para definir una nueva acción de selección de usuario, se utiliza el siguiente código XML:
<bean id="{action.api.id.2}" class="org.dspace.xmlworkflow.state.actions.UserSelectionActionConfig" scope="prototype">
<constructor-arg type="java.lang.String" value="{action.api.id.2}"/>
<property name="processingAction" ref="{user.selection.bean.id}"/>
<property name="requiresUI" value="{true/false}"/>
</bean>
Este bean define una nueva UserSelectionActionConfig y contiene las siguientes etiquetas hijas:
- constructor-arg: Este es un argumento de constructor que contiene el ID de la tarea. Es el mismo valor que el
idatributo del bean y se utiliza en la configuración del flujo de trabajo para hacer referencia a esta acción. - property
processingAction: Esta etiqueta hace referencia al ID del bean de la API responsable de la implementación del lado de la API para esta acción. Este bean también debe estar configurado en este archivo XML. - property
requiresUI: Si esta propiedad está configurada como true, el marco de flujo de trabajo esperará una interfaz de usuario para la acción. De lo contrario, el marco ejecutará automáticamente la acción y continuará con la siguiente.
Acción de Procesamiento
Las acciones de procesamiento se configuran de forma similar a las acciones de selección de usuario. La única diferencia es que estos beans de acción de procesamiento son implementaciones de la clase WorkflowActionConfig en lugar de la clase UserSelectionActionConfig.
Autorizaciones
Actualmente, las autorizaciones se otorgan y revocan siempre en función de las tareas disponibles para determinados usuarios y grupos. Los tipos de políticas de autorización que se otorgan para cada uno de estos casos son siempre los mismos:
- READ (lectura)
- WRITE (escritura)
- ADD (agregar)
- DELETE (eliminar)
Base de Datos
El flujo de trabajo utiliza un esquema de metadatos separado llamado workflow. Los campos que contiene este esquema se pueden encontrar en el directorio [dspace]/config/registries y en el archivo workflow-types.xml. Actualmente, este esquema solo se utiliza cuando se emplea el sistema de revisión por puntuación, pero siempre se puede usar este esquema si se requieren metadatos para pasos personalizados del flujo de trabajo.
Se han agregado las siguientes tablas a la base de datos de DSpace. Todas las tablas están precedidas por el prefijo 'cwf_' para evitar cualquier confusión con las tablas existentes relacionadas con el flujo de trabajo:
cwf_workflowitem
La tabla cwf_workflowitem contiene los diferentes elementos de flujo de trabajo (workflowitems) dentro del flujo de trabajo. Esta tabla incluye las siguientes columnas:
- workflowitem_id: Identificador del elemento de flujo de trabajo (workflowitem) y clave primaria de esta tabla.
- item_id: Identificador del ítem de DSpace al que se refiere este workflowitem.
- collection_id: Colección a la que se ha enviado este workflowitem.
- multiple_titles: Especifica si el envío tiene múltiples títulos (importante para los pasos de envío).
- published_before: Especifica si el envío ha sido publicado anteriormente (importante para los pasos de envío).
- multiple_files: Especifica si el envío tiene múltiples archivos adjuntos (importante para los pasos de envío).
cwf_collectionrole
La tabla cwf_collectionrole representa un rol de flujo de trabajo para una colección. Este tipo de rol es igual a los roles que existían en el flujo de trabajo original, lo que significa que para cada colección se define un grupo separado para describir el rol. La tabla cwf_collectionrole contiene las siguientes columnas:
- collectionrol_id: Identificador del rol de colección (collectionrole) y clave primaria de esta tabla.
- role_id: Identificador o nombre utilizado por la configuración del flujo de trabajo para referirse al collectionrole.
- collection_id: Identificador de la colección para la cual se ha definido este collectionrole.
- group_id: Identificador del grupo que define el rol de colección.
cwf_workflowitemrole
La tabla cwf_workflowitemrole representa roles definidos a nivel de un ítem. Estos roles son temporales y solo existen durante la ejecución del flujo de trabajo para ese ítem específico. Una vez que el ítem es archivado, el workflowitemrole se elimina. Pueden existir múltiples filas para un mismo workflowitem, por ejemplo, una fila que contenga un grupo y otras que contengan personas específicas (epersons). Todas estas filas en conjunto conforman el workflowitemrole. La tabla cwf_workflowitemrole contiene las siguientes columnas:
- workflowitemrole_id: Identificador del workflowitemrole y clave primaria de esta tabla.
- role_id: Identificador o nombre utilizado por la configuración del flujo de trabajo para referirse al workflowitemrole.
- workflowitem_id: Identificador del cwf_workflowitem para el cual se ha definido este workflowitemrole.
- group_id: Identificador del grupo que define el rol del workflowitemrole.
- eperson_id: Identificador de la persona (eperson) que define el rol del workflowitemrole.
cwf_pooltask
La tabla cwf_pooltask representa los diferentes pools de tareas que existen para un workflowitem. Estos pools de tareas pueden estar disponibles al inicio de un paso y contienen todos los usuarios que tienen permiso para reclamar una tarea en dicho paso. Pueden existir múltiples filas para un mismo pool de tareas, conteniendo múltiples grupos y epersons. La tabla cwf_pooltask contiene las siguientes columnas:
- pooltask_id: El identificador del pooltask y la clave primaria de esta tabla
- workflowitem_id: El identificador del workflowitem para el cual existe este pool de tareas
- workflow_id: El identificador de la configuración de flujo de trabajo utilizada para este workflowitem
- step_id: El identificador del paso para el cual se creó este pool de tareas
- action_id: El identificador de la acción que debe mostrarse/ejecutarse cuando el usuario selecciona la tarea del pool
- eperson_id: El identificador de un eperson que forma parte del pool de tareas
- group_id: El identificador de un grupo que forma parte del pool de tareas
cwf_claimtask
La tabla cwf_claimtask representa una tarea que ha sido reclamada por un usuario. Las tareas reclamadas pueden ser asignadas directamente a usuarios o pueden ser el resultado de una reclamación desde el conjunto general de tareas. Dado que un paso del flujo de trabajo puede contener múltiples acciones, la tarea reclamada define la acción específica en la que el usuario se encuentra dentro de ese paso. Esto permite detener el trabajo a mitad de un paso y retomarlo más adelante. La tabla cwf_claimtask contiene las siguientes columnas:
- claimtask_id: El identificador de la tarea reclamada y la clave primaria de esta tabla.
- workflowitem_id: El identificador del elemento de flujo de trabajo al que pertenece esta tarea.
- workflow_id: El identificador de la configuración del flujo de trabajo que se utilizó para este elemento.
- step_id: El paso que actualmente está procesando el elemento del flujo de trabajo.
- action_id: La acción que debe ser ejecutada por el responsable de esta tarea reclamada.
- owner_id: Referencia a la eperson que es responsable de la ejecución de esta tarea.
cwf_in_progress_user
La tabla cwf_in_progress_user lleva el registro de los distintos usuarios que están ejecutando un determinado paso. Esta tabla se utiliza porque algunos pasos pueden requerir que múltiples usuarios los completen antes de que el elemento del flujo de trabajo (workflowitem) pueda continuar. La tabla cwf_in_progress_user contiene las siguientes columnas:
- in_progress_user_id: El identificador del usuario en progreso y la clave primaria de esta tabla.
- workflowitem_id: El identificador del elemento de flujo de trabajo para el cual el usuario está realizando o ha realizado el paso.
- user_id: El identificador de la eperson que está realizando o ha realizado la tarea.
- finished: Registra si el usuario ha finalizado el paso o si aún está en proceso de ejecución.
Pasos/acciones adicionales del flujo de trabajo y características
Estos pasos opcionales solo son compatibles a partir de la versión 7.5.
Estos pasos opcionales del flujo de trabajo están predefinidos en el archivo "workflow.xml", pero no se utilizan por defecto.
Pasos opcionales del flujo de trabajo: Flujo de trabajo con revisor único
Este flujo de trabajo permite asignar a un solo usuario para revisar un ítem. Esta configuración omite el uso del conjunto de tareas (task pool), lo que significa que el revisor asignado ya no necesita reclamar la tarea. La configuración consta de los siguientes 2 pasos:
- selectReviewerStep: Durante este paso, un usuario tiene la posibilidad de seleccionar a otro usuario responsable para revisar el elemento del flujo de trabajo (workflowitem). Esto significa que, para cada elemento, se puede asignar un usuario diferente. Dado que se asigna directamente a un usuario, ya no es necesario utilizar el conjunto de tareas (task pool).
- Los usuarios disponibles para seleccionar se definen en el parámetro "action.selectrevieweraction.group" del archivo workflow.cfg. Este parámetro debe contener el nombre de un grupo de revisores del cual se podrá seleccionar (valor predeterminado = grupo "Reviewers").
- singleUserReviewStep: El inicio de este paso de revisión es diferente al del conjunto de tareas típico. En lugar de utilizar un task pool, el usuario será asignado automáticamente a la tarea. Sin embargo, el usuario aún tiene la opción de rechazar la tarea (en caso de que no sea responsable de la tarea asignada) o de revisar el ítem. Si el usuario rechaza la tarea, el elemento del flujo de trabajo (workflowitem) será enviado a otro paso del flujo de trabajo como alternativa al resultado predeterminado.
- En el archivo workflow.cfg, existe una opción para permitir que estos revisores puedan editar archivos y metadatos. Cuando "workflow.reviewer.file-edit=true", el usuario seleccionado tendrá permiso para editar el elemento del flujo de trabajo. Por defecto, no tienen este permiso.
Pasos opcionales del flujo de trabajo: Flujo de trabajo con revisión por puntuación
El sistema de revisión por puntuación permite a los revisores asignar una calificación al ítem revisado. Dependiendo de los resultados de dicha calificación, el ítem será aprobado para pasar al siguiente paso del flujo de trabajo o será enviado a un paso alternativo. El flujo de trabajo con revisión por puntuación consta de los siguientes 2 pasos:
- scoreReviewStep: El grupo de usuarios responsables de la revisión por puntuación podrá reclamar la tarea desde el task pool. Dependiendo de la configuración, se puede requerir un número diferente de usuarios para ejecutar la tarea (el valor predeterminado es requiredusers=2). Esto significa que la tarea estará disponible en el conjunto de tareas hasta que al menos el número requerido de usuarios la haya reclamado. Una vez que todos hayan completado la tarea, se activa el siguiente paso de procesamiento (automático).
- En el archivo workflow.cfg, existe una opción para permitir que estos revisores puedan editar archivos y metadatos. Cuando "workflow.reviewer.file-edit=true", el usuario seleccionado tendrá permiso para editar el item del flujo de trabajo. Por defecto, no tienen este permiso.
- evaluationStep: Durante el paso de evaluación, no se requiere una interfaz de usuario. El sistema de flujo de trabajo ejecutará automáticamente el paso que evalúa las diferentes puntuaciones (que corresponden a una calificación de 1 a 5). Si el puntaje promedio es mayor que el valor promedio definido por
minimumAcceptanceScore, el ítem es aprobado; de lo contrario, es rechazado. (El puntaje promedio mínimo se establece ajustando la propiedadminimumAcceptanceScoreque se pasa aevaluationactionAPIen el archivoconfig/spring/api/workflow-actions.xml.)
Funcionalidades generales del flujo de trabajo
La interfaz de usuario de DSpace también ofrece una funcionalidad que permite a los administradores ver y gestionar todos los flujos de trabajo activos (workitems). Esta funcionalidad se encuentra disponible en la opción de menú "Administrar flujo de trabajo". Actualmente, el administrador tiene la capacidad de eliminar permanentemente el elemento del flujo de trabajo (workflowitem) o devolverlo al remitente original.