Contents
¿Que es workflow?
Los workflows son una serie de interacciones que deben suceder para que se realice una tarea. Las organizaciones de negocios tienen muchas clases de workflows. por ejemplo, demandas a las compañas de seguros, las compañias de entregas siguen los envios. todas estas tareas involucran muchas personas, algunas veces toma un largo tiempo, y varian significativamente de organizacion en organizacion.
La finalidad del software de workflows es simplificar y seguir las actividades del workflow.
las organizaciones tienen diferentes procesos de workflow por lo cual el software de workflow debe ser flexible y facil de modificar para los requisitos particuares de la organizacion.
Concepto de workflow
DCWORKFLOW hace unas simples asunciones definiendo variables
A menudo un simple flujo no puede modelar todos los detalles de un proceso. Por ejemplo, si para la aprobacion de un documento es necesario que sea votado mas de una ves, nesecitara la informacion de quienes han votado anteriormente ese documento.
- Es un simple objeto en el sistema, este representa los procesos que deben ser ejectuados para que una tarea sea completada.
- Cada objeto de un tipo tiene el mismo workflow en este caso para DCWorkflow por que hay mas tipos de workflows.
- Las tareas son asignadas a roles de usuario, no individualmente a los usuarios.
DCWORKFLOW hace facil implemetar los workflows que hay en esta descripcion. Teniendo en cuenta que DCWorkflow es un sistema de workflow orientado al documento a diferencia de otros sistemas que son orientados a las tares como puede er Alphaflow. OpenFlow, tambien para Zope, es mas flexible pero mas complejo de instalar.
Definiendo los estados de workflows
Usando estados de workflows usted puede añadir estados a sus contenidos, estos se pueden especificar para sus procesos de negocios.
CMF trae por defecto un workflow con tres estados: privado, pendiente y publicado. En la configuracion por defecto, todo el contenido en el CMF se fija para funcionar en ese workflow. cuando un objeto esta en el estado privado, solamente el usuario quien lo creo y el administrador del sitio pueden verlo y modificarlo. al usuario se le provee un link "enviar" el la seccion de estados del documento, este queda en el estado pendiente. A los usuarios cuyo rol es revisores se le es dada la oportunidad de de publicar o rechazar el contenido, segun esto el contenido pasa al estado publicado o regresa al estado privado.
(img1)
Los procesos de su negocion requerirá muy probablemente un sistema diferente de estados.Por ejemplo, un workflow podria naturalmete modelar el proceso de ratificacion de una cuenta en un estado (legislatura). usted podria comenzar creando un estado privado para ser usado cuando el autor este creando una nueva cuenta, un estado publico usado antes de las votaciones, un estado votando durante el cual les sera permitido votar, un estado votacion final cuya sera la aprovacion final de la cuenta y un estado pasado al final de todo el proceso.
un buen camino para determinar que estado nesecita en su proceso de negocio es dibujar un diagrama. Este vendria encabezado por los roles mas relevantes en el proceso formando columnas en cuyas columnas estaran los diferentes estados, dependiendo a que roles les es dado control sobre el, y lineas que conecten los diferentes estados las cuales definiran las transiciones que parten de estado y a que estado pasaria el documento.
nota: cambiando el estado de un objeto este no es movido a una diferente localizacion o añadido atributos de Python al objeto.en lugar, pregunta a la herramienta del workflow para fijar el estado de los workflows del objeto y la herramienta del workflow puede elegir cómo el estado será almacenado. la implementacion por defecto,de la almecenacion de los estados de los workflows se encuentran en el atributo workflow_history en el contenedor de objetos CMF
Definiendo transiciones
Las transiciones vienen siendo las flechas que usted dibujo en su diagrama. Generalmente para todas las flechas que usted dibujo en su diagrama de estados, debera crear una transicion. Solo los diagramas de estado, sin embargo, las flechas deben apuntar a un solo estado.
cada transicion requiere de un estado destino. puede seleccionar este, en la lista desplegable. (vea ilustracion 5)
configurando una transiocion
Las transiciones son usualmete protegidas por una condicion. Si usted dibujo una flecha la cual pasaba de una columna a otra usted debera definir una condicion.una condicion de proteccion puede ser un permiso, un rol, o una expresion(descrita mas adelante). las condiciones de protecion se asegura que solamente usuarios con los permisos requeridos, roles,o otros criterios, puedan mover el objeto a el nuevo estado.
La mayoria de transiciones son inicializadas por una accion de un usuario. Para cada transicion inicializada por una accion de un usuario, ingrese la informacion para el correspondiente link que se mostrara en la caja de acciones. el link solo sera mostrado a es usuario.
Algunas veces usted nesecitara estados especiales y transiciones en su workflow. algunas se ejecutaran en backgrown en este caso nesecitaras que la transicion se ejecuten automaticamente, siempre y cuando que la condicion de proteccion se cumpla.
Una ves definidas las transiciones, debe regresar a las transiciones que permitan dejar estos estados.
Definiendo variables
A menudo un simple flujo no puede modelar todos los detalles de un proceso. Por ejemplo, si para la aprobacion de un documento es necesario que sea votado mas de una ves, nesecitara la informacion de quienes han votado anteriormente ese documento, para luego que ese numero de votos se cumplan sea aprobado ese documento y su estado sea modificado.
Una variable es un piesa de informacion que traciende el estado.La mayoria de variables son persistentes. Una variable puede ser un contador, un flag, el nombre de el ultimo usuario que realizo una accion, o de cualquier simple objeto.
Las variables pueden servir para exponer metadatos del catalogo o del usuario. Estas son cinco variables en el workflow por defecto del CMF actor, action, comments, time,review_history. Las cuatro primeras guardan un expediente de quien ejecuto la transicion pasada, que hicieron, por que y cuando. La ultima variable hace posible que el usuario vea la historia del workflow de un objeto.
El estandar de las variables de workflow en CMF
Usted puede cambiar el valor de una variable cuando ejecuta una transicion o cuando entra a un estado. visita un estado que usted creo previamente y entonces cambia la solpa de la variable. Aca usted puede realjustar la variable a un valor especifico.
Definiendo Worklist (listas de trabajo)
algunos usuarios deben ser notificados que un trabajo nesecita ser completado. Por ejemplo en el Workflow por defecto en el CMF, los usuarios con el rol Revisores nesecitan ser informados cuando tengan trabajos pendientes para revisar, de esta manera puede visitar estos,aprobarlos o rechazarlos.
Una forma de lograr esto es con los worklist. los worklist añade links a las cajas de accion cuando se encuentra en sierto estado. El Workflow por defecto de CMF da un worklist el cual muestra un link de pendiente en los documentos que no han sido revisados por los revisores.
despues de crear un worklist ingrese el nombre del estado que (empareja).Use una condision de proteccion para que solamente usuarios certificados lo vean. luego ingrese el nombre y la URL del link que sera mostrado.
Definiendo scripts
Usted necesitara realizar acciones como enviar un email o la invocación de otro workflow cuando los usuarios ejecutan transiciones específicas. Usted puede hacer esto escribiendo scripts. Los scripts pueden ser cualquier objeto de Zope, pero los scripts hechos en(Python) son provablemente la mejor opción.
A los Scripts se pasan un parametro del objeto state_change del workflow. Recuerde que su script se ejecuta con los permisos de quien invoca la transicion, almenos que usted le de el poder de escritura a los roles.
Una vez que el script este contenido en un workflow usted se podra dirigir a una transicion y seleccionar el script a ser ejecutado. El script sera ejecutado antes del cambio del estado y antes que las variables sean actualizadas. Pede hacer excepciones al accion o una exepcion de Objectmove o ObjectDeleted para decir al workflow que el objeto se haya movido o haya sido eliminado.
Definiendo Permisos
En un proceso de negocios, los estados de un workflow de un objeto usualmente afectan quienes tienen permiso para (non-workflow) acciones sobre el objeto. Por ejemplo, en el workflow por defecto del CMF, el propietario de una piesa de contenido le es permitido editarla cuando esta en el estado Privado pero no cuando esta en el estado publicado. Los usuarios anonimos(Anonymous) les es permitido ver el contenido solo cuando el estado es Publico.
CMF logra esto actualizando los permisos de los roles (mapping) para este objeto basados en su estado de workflow. Para hacer esto es su workflow, primero determine que permisos deben manejar su workflow de la pestaña de permsos de su workflow.
Entonces dirigase a la pestaña de permisos de cada estado y seleccione que roles tendran que permisos. Esta pantalla es muy similar a la pestaña de seguridad. (vea ilustracion 7) Recuerde des-seleccionar la casilla de Adquirir permisos esto es necesario.
El (mapping) de los permisos del rol son almacenados en los mismos objetos por que Zope siempre los a almacenado alli. desafortunadamente estos significa que cuando usted cambia el rol a los (mapping) de permisos en el workflow usted nesecita cerciorarse que los cambios esten aplicados a los objetos contenidos atraves del sistema. Pero el trabajo al rededor de esto es facil. La herramienta portal_workflow por defecto tiene un boton que usted puede oprimir para poner al dia el rol (mapping) del permiso en todos los objetos contenidos.
Expresiones Workflow
Una expresion workflow es una (tales) expresion. las (Tales) expresiones son completamente descritas en la URL: Tales
Algunos de los contextos tienen significados levemente distintos del que se proporciona para las expresiones de las paginas de plantilla.
here : El contenido del objeto.
container : El contenedor del contenido del objeto.
Otros contextos son proporcionados
state_change: Un objeto especial que contiene la informacon sobre el cambio del estado.
transition: La transicion que de un objeto a sido ejecutado.
status: El estatus anterio.
workflow: La definicion del objeto workflow.
scripts:Los scripts definidos en el objeto workflow.
Los objetos state_change: provee los siguientes atributos.
status: Es un (mapping) que contiene el estado del workflow.
object: Es el objeto que es afectado por los workflows.
workflow: Es el objeto de la definicion del workflow.
transition: Es la transicion del objeto que se a ejecutado.
old_state: Es el estado anterior de objeto.
new_state: Es el estado destino del objeto.
kwargs: Son las palabras claves pasadas como argumentos al metodo doActionFor()
getHistory(): Un metodo que retorna una copia de el historial del objeto del workflow.
getProtal(): Este retorna el root del portal.
objectDeleted y ObjectMoved: Excepciones que se pueden cargar en el script para para indicarle al workflow que se a movido o eliminado de un objeto.
getDateTime(): Es un metodo que retorna la fecha y hora dela ejecucion de una transicion.
