SlideShare una empresa de Scribd logo
Administración de procesos en Plone. Eduardo Espinosa Avila. Febrero 2009.
Los  workflows  son mapas de procesos de negocio. Se componen de tareas y sus relaciones, criterios para indicar inicio y término de los procesos y la información sobre la tarea individual. Un  workflow  es un conjunto de interacciones que deben realizarse para completar una actividad o tarea. Por ejemplo, solicitudes de admisión en una escuela, o solicitudes de viaje de alguna institución. Estas tareas involucran a varias personas, y son diferentes dependiendo de la institución.   Gráficamente se puede representar como una máquina de estados con transiciones etiquetadas. Workflows
Un ejemplo de un  workflow  sencillo, representado como máquina de estados. Workflows
El mismo  workflow , especificando  los permisos sobre las transiciones. En general, para diseñar un  workflow , se realizan tres actividades:   Definir los estados del  workflow . Definir las transiciones. Definir permisos (especificar quién puede realizar las transiciones). Workflows
En  http://www.wfmc.org/  y  http://www.e-workflow.org/  se definen los estándares puede verse que actualmente hay gran auge por realizar investigación y desarrollo relacionado con  workflows , también se muestran diversos casos de éxito, agrupados en los siguientes rubros:   Académico. Financiero. Gubernamental. Salud. Industrias. Tecnología. Transporte. Otros . Workflows
Una de las fortalezas de Plone es su componente de  workflows . El manejo de  workflows  es uno de los temas base de  content management , que es la separación de la lógica, el contenido y la presentación. El producto para  workflows  más usado en Plone es  DCWorkflow  el cual es un producto  opensource  lanzado por la Zope Corporation.  DCWorkflow  provee ciertas características y limitaciones claves que deben tomarse en cuenta para comprender su uso.  Existen otros sistemas de  workflows , orientados a diferentes conceptos como son tareas, algunos de ellos están disponibles para Plone, p.ej.  OpenFlow  y  AlphaFlow . Sin embargo  DCWorkflow  es bastante simple, de gran alcance y proporciona la funcionalidad que la mayoría de usuarios necesitan. Workflows  en Plone
El concepto  DCWorkflow . DCWorkflow  asume ciertas cosas sobre el proceso ( workflow ): Existe un objeto en el sistema que representa la tarea que debe completarse. Todos los objetos de un mismo tipo tienen asociado el mismo  workflow . Las tareas son asignadas a roles, no a usuarios. DCWorkflow  facilita implementar  workflows  que se adaptan a esta descripción; de no ser así, existen otras alternativas como  AlphaFlow , un motor de  workflows  para Plone más complejo y potente. Workflows  en Plone
Creando  Workflows  en Plone. Para crear definiciones de  workflows  en Plone con el producto  DCWorkflow , se debe hacer los siguiente: Definir los estados del  workflow . Definir las transiciones. Definir los permisos. (Especificar quién puede hacer qué sobre el contenido). Definir  worklists  y  scripts . Se pueden utilizar expresiones  TALES  ( Template Attribute Language Expression Syntax ) para acceder a atributos de objetos. Workflows  en Plone
Creando  Workflows  en Plone 2.1. Plone 2.x tiene incluidos dos  workflows :  Default workflow  ( plone_workflow ) y  Folder workflow  ( folder_workflow ); si se desean añadir otros  workflows  al sitio, existen tres métodos principales: Utilizando la interfaz de administración de Zope ( ZMI ). Usando el producto  ArchGenXML . Es una herramienta que genera productos para Zope basados en  Archetypes , a partir de modelos UML basados en XMI ( XML Metadata Interchange , .xmi, .zargo, .zuml). Vía código de Python (puede ser generado con  ArchGenXML ). Se mostrarán algunos puntos de la creación con Python. Workflows  en Plone 2.1
Creando  Workflows  en Plone 2.1 con código de Python. Comenzamos importando algunas definiciones útiles: from Products.CMFCore.utils import getToolByName from Products.CMFCore.WorkflowTool import addWorkflowFactory from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition from Products.ExternalMethod.ExternalMethod import ExternalMethod El nombre del producto: from Products.MiProducto.config import PROJECTNAME as productname Workflows  en Plone 2.1
Creando  Workflows  en Plone 2.1 con código de Python. Creamos una función de definición del  workflow : def setup_mi_workflow(self, workflow): """ Definición de mi_workflow """ workflow.setProperties(title='mi_workflow') # Estados for s in [‘estado_1’, ‘estado_2’]: workflow.states.addState(s) # Transiciones for t in [‘pasar_a_2’, ‘regresar_a_1’]: workflow.transitions.addTransition(t) # Variables útiles for v in ['action', 'review_history', 'actor', 'comments', 'time', 'wf_title']: workflow.variables.addVariable(v) # Permisos administrados for p in ('Access contents information', 'Modify portal content', 'View'): workflow.addManagedPermission(p) Workflows  en Plone 2.1
Creando  Workflows  en Plone 2.1 con código de Python. Definimos las propiedades de los estados: ## Estado inicial workflow.states.setInitialState(‘estado_1') ## Propiedades del estado stateDef = workflow.states[‘estado_1'] stateDef.setProperties(title=""" Estado 1""", transitions=(‘pasar_a_2',)) stateDef.setPermission('Access contents information', 1, ['Owner']) stateDef.setPermission('Modify portal content', 1, ['Owner']) stateDef.setPermission('View', 1, ['Manager', 'Owner']) Workflows  en Plone 2.1
Creando  Workflows  en Plone 2.1 con código de Python. Definimos las propiedades de las transiciones: ## Propiedades de la transición transitionDef = workflow.transitions[‘pasar_a_2'] transitionDef.setProperties(title=""“Pasar al estado 2""", new_state_id=""“estado_2""", trigger_type=1, script_name="""""", after_script_name="""""", actbox_name=""“Pasar a 2""", actbox_url="""%(content_url)s/content_show_form""", actbox_category="""workflow""", props={'guard_roles': 'Owner'}, ) Workflows  en Plone 2.1
Creando  Workflows  en Plone 2.1 con código de Python. Definimos las propiedades de las variables: ## Variable de estado workflow.variables.setStateVar('review_state') ## Propiedades de la variable variableDef = workflow.variables['review_history'] variableDef.setProperties(description=""“Historial del workflow""", default_value="""""", default_expr="""state_change/getHistory""", for_catalog=0, for_status=0, update_always=0, props={'guard_permissions': 'Request review; Review portal content'}) Workflows  en Plone 2.1
Creando  Workflows  en Plone 2.1 con código de Python. Creamos una función para instalar el  workflow : def create_mi_workflow(self, id): """Crea mi_solicitud""" ob = DCWorkflowDefinition(id) setup_mi_workflow(self, ob) return ob # Llamamos al  Workflow Factory  para crear el objeto dentro del sitio addWorkflowFactory(create_mi_workflow, id=‘mi_workflow', title=‘Mi workflow') Finalmente, dentro del  script  de  instalación del producto, se debe llamar a la función de creación del  workflow . Workflows  en Plone 2.1
Creando  Workflows  en Plone 3. Plone 3 tiene incluidos un conjunto de nuevos  workflows : Simple Publication Workflow. Intranet/Extranet workflow . Community workflow . One state workflow. Community Workflow for Folders Intranet Workflow for Folders Cada uno orientado a cumplir requerimientos específicos. Workflows  en Plone 3
Creando  Workflows  en Plone 3. Si se desean añadir otros  workflows  al sitio, existen cuatro métodos principales : Utilizando la interfaz de administración de Zope ( ZMI ). Con el producto  collective.workflowed . Usando el producto  ArchGenXML . Si se cuenta con un  workflow  definido en alguna versión de Plone 2.x, lo más conveniente, es realizar la exportación de este a un archivo  .zexp  desde el ZMI de esa versión de Plone, después importar ese archivo al sitio existente en Plone 3. Posteriormente, se  exporta el paso de  workflow tool  de la configuración del sitio, para obtener la definición en formato XML y se coloca dentro de la carpeta  profiles/default . Workflows  en Plone 3
Creando  Workflows  en Plone 3. Ahora se muestra el contenido de   profiles/default/workflows.xml ,  el cual se utiliza para definir nuevos  workflows  dentro del sitio y de asociarlos a tipos de contenido específicos: <?xml version=&quot;1.0&quot;?> <object name=&quot;portal_workflow&quot; meta_type=&quot;Plone Workflow Tool&quot;> <property name=&quot;title&quot;>Contains workflow definitions for your portal</property> <object name=“mi_workflow&quot; meta_type=&quot;Workflow&quot;/> <bindings> <type type_id=“mi_contenido&quot;> <bound-workflow workflow_id=“mi_workflow&quot;/> </type> </bindings> </object> Workflows  en Plone 3
Creando  Workflows  en Plone 3. Ahora se muestra el contenido de   profiles/default/workflows.xml ,  el cual se utiliza para definir nuevos  workflows  dentro del sitio y de asociarlos a tipos de contenido específicos: <?xml version=&quot;1.0&quot;?> <object name=&quot;portal_workflow&quot; meta_type=&quot;Plone Workflow Tool&quot;> <property name=&quot;title&quot;>Contains workflow definitions for your portal</property> <object name=“mi_workflow&quot; meta_type=&quot;Workflow&quot;/> <bindings> <type type_id=“mi_contenido&quot;> <bound-workflow workflow_id=“mi_workflow&quot;/> </type> </bindings> </object> Workflows  en Plone 3 Trabajamos con objetos tipo  Workflow
Creando  Workflows  en Plone 3. Ahora se muestra el contenido de   profiles/default/workflows.xml ,  el cual se utiliza para definir nuevos  workflows  dentro del sitio y de asociarlos a tipos de contenido específicos: <?xml version=&quot;1.0&quot;?> <object name=&quot;portal_workflow&quot; meta_type=&quot;Plone Workflow Tool&quot;> <property name=&quot;title&quot;>Contains workflow definitions for your portal</property> <object name=“mi_workflow&quot; meta_type=&quot;Workflow&quot;/> <bindings> <type type_id=“mi_contenido&quot;> <bound-workflow workflow_id=“mi_workflow&quot;/> </type> </bindings> </object> Workflows  en Plone 3 Trabajamos con objetos tipo  Workflow Declaramos un nuevo  Workflow  en el sitio
Creando  Workflows  en Plone 3. Ahora se muestra el contenido de   profiles/default/workflows.xml ,  el cual se utiliza para definir nuevos  workflows  dentro del sitio y de asociarlos a tipos de contenido específicos: <?xml version=&quot;1.0&quot;?> <object name=&quot;portal_workflow&quot; meta_type=&quot;Plone Workflow Tool&quot;> <property name=&quot;title&quot;>Contains workflow definitions for your portal</property> <object name=“mi_workflow&quot; meta_type=&quot;Workflow&quot;/> <bindings> <type type_id=“mi_contenido&quot;> <bound-workflow workflow_id=“mi_workflow&quot;/> </type> </bindings> </object> Workflows  en Plone 3 Trabajamos con objetos tipo  Workflow Declaramos un nuevo  Workflow  en el sitio Asociamos el  Workflow  a  un tipo de contenido
Creando  Workflows  en Plone 3. A continuación dentro de  profiles/default/workflows/mi_workflow , creamos el archivo de definición  definition.xml , se muestran algunas partes de este archivo : <?xml version=&quot;1.0&quot;?> <dc-workflow workflow_id=“mi_workflow&quot; title=“Mi Workflow&quot; description=&quot; - Descripción de mi workflow. &quot; state_variable=&quot;review_state&quot; initial_state=“estado_1&quot;> <!-- Permisos utilizados por el workflow --> <permission>Access contents information</permission> <permission>Modify portal content</permission> <permission>View</permission> Workflows  en Plone 3
Creando  Workflows  en Plone 3. A continuación dentro de  profiles/default/workflows/mi_workflow , creamos el archivo de definición  definition.xml , se muestran algunas partes de este archivo : <?xml version=&quot;1.0&quot;?> <dc-workflow workflow_id=“mi_workflow&quot; title=“Mi Workflow&quot; description=&quot; - Descripción de mi workflow. &quot; state_variable=&quot;review_state&quot; initial_state=“estado_1&quot;> <!-- Permisos utilizados por el workflow --> <permission>Access contents information</permission> <permission>Modify portal content</permission> <permission>View</permission> Workflows  en Plone 3 Atributos del  Workflow , tipo  DCWorkflow , Id, título, descripción, variable que almacena el estado actual y estado inicial
Creando  Workflows  en Plone 3. A continuación dentro de  profiles/default/workflows/mi_workflow , creamos el archivo de definición  definition.xml , se muestran algunas partes de este archivo : <?xml version=&quot;1.0&quot;?> <dc-workflow workflow_id=“mi_workflow&quot; title=“Mi Workflow&quot; description=&quot; - Descripción de mi workflow. &quot; state_variable=&quot;review_state&quot; initial_state=“estado_1&quot;> <!-- Permisos utilizados por el workflow --> <permission>Access contents information</permission> <permission>Modify portal content</permission> <permission>View</permission> Workflows  en Plone 3 Atributos del  Workflow : tipo  DCWorkflow , Id, título, descripción, variable que almacena el estado actual y estado inicial Permisos utilizados por el  Workflow
Creando  Workflows  en Plone 3. <!-- Los diversos estados con su respectivo mapeo de permisos --> <state state_id=“estado_1&quot; title=“Estado 1”> <description> Estado inicial. </description> <exit-transition transition_id=“pasar_a_2”/> <permission-map name=“Access contents information” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“Modify portal content” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“View” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> <permission-role>Editor</permission-role> <permission-role>Reader</permission-role> </permission-map> </state> Workflows  en Plone 3
Creando  Workflows  en Plone 3. <!-- Los diversos estados con su respectivo mapeo de permisos --> <state state_id=“estado_1&quot; title=“Estado 1”> <description> Estado inicial. </description> <exit-transition transition_id=“pasar_a_2”/> <permission-map name=“Access contents information” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“Modify portal content” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“View” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> <permission-role>Editor</permission-role> <permission-role>Reader</permission-role> </permission-map> </state> Workflows  en Plone 3 Título y descripción del estado
Creando  Workflows  en Plone 3. <!-- Los diversos estados con su respectivo mapeo de permisos --> <state state_id=“estado_1&quot; title=“Estado 1”> <description> Estado inicial. </description> <exit-transition transition_id=“pasar_a_2”/> <permission-map name=“Access contents information” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“Modify portal content” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“View” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> <permission-role>Editor</permission-role> <permission-role>Reader</permission-role> </permission-map> </state> Workflows  en Plone 3 Título y descripción del estado Transiciones posibles
Creando  Workflows  en Plone 3. <!-- Los diversos estados con su respectivo mapeo de permisos --> <state state_id=“estado_1&quot; title=“Estado 1”> <description> Estado inicial. </description> <exit-transition transition_id=“pasar_a_2”/> <permission-map name=“Access contents information” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“Modify portal content” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“View” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> <permission-role>Editor</permission-role> <permission-role>Reader</permission-role> </permission-map> </state> Workflows  en Plone 3 Título y descripción del estado Transiciones posibles Roles asociados al permiso actual
Creando  Workflows  en Plone 3. <!-- Transiciones entre estados, incluyendo condiciones de seguridad --> <transition transition_id=“pasar_a_2&quot; title=“Pasar a estado 2&quot; new_state=“estado_2&quot; trigger=&quot;USER&quot; before_script=&quot;&quot; after_script=&quot;&quot;> <description>Pasar del estado 1 al estado 2. </description> <action url=&quot;%(content_url)s/content_status_modify?workflow_action=publish&quot; category=&quot;workflow&quot;>Pasar a 2</action> <guard> <guard-permission>Modify portal content</guard-permission> <guard-role>Owner</guard-role> </guard> </transition> Workflows  en Plone 3
Creando  Workflows  en Plone 3. <!-- Transiciones entre estados, incluyendo condiciones de seguridad --> <transition transition_id=“pasar_a_2&quot; title=“Pasar a estado 2&quot; new_state=“estado_2&quot; trigger=&quot;USER&quot; before_script=&quot;&quot; after_script=&quot;&quot;> <description>Pasar del estado 1 al estado 2. </description> <action url=&quot;%(content_url)s/content_status_modify?workflow_action=publish&quot; category=&quot;workflow&quot;>Pasar a 2</action> <guard> <guard-permission>Modify portal content</guard-permission> <guard-role>Owner</guard-role> </guard> </transition> Workflows  en Plone 3 Atributos de la transición: Id, título, estado nuevo, tipo de disparo, scripts que puede ejecutar y descripción
Creando  Workflows  en Plone 3. <!-- Transiciones entre estados, incluyendo condiciones de seguridad --> <transition transition_id=“pasar_a_2&quot; title=“Pasar a estado 2&quot; new_state=“estado_2&quot; trigger=&quot;USER&quot; before_script=&quot;&quot; after_script=&quot;&quot;> <description>Pasar del estado 1 al estado 2. </description> <action url=&quot;%(content_url)s/content_status_modify?workflow_action=publish&quot; category=&quot;workflow&quot;>Pasar a 2</action> <guard> <guard-permission>Modify portal content</guard-permission> <guard-role>Owner</guard-role> </guard> </transition> Workflows  en Plone 3 Atributos de la transición: Id, título, estado nuevo, tipo de disparo, scripts que puede ejecutar y descripción Texto que aparece en el menú “ estado ” y la URL que se mostrará
Creando  Workflows  en Plone 3. <!-- Transiciones entre estados, incluyendo condiciones de seguridad --> <transition transition_id=“pasar_a_2&quot; title=“Pasar a estado 2&quot; new_state=“estado_2&quot; trigger=&quot;USER&quot; before_script=&quot;&quot; after_script=&quot;&quot;> <description>Pasar del estado 1 al estado 2. </description> <action url=&quot;%(content_url)s/content_status_modify?workflow_action=publish&quot; category=&quot;workflow&quot;>Pasar a 2</action> <guard> <guard-permission>Modify portal content</guard-permission> <guard-role>Owner</guard-role> </guard> </transition> Workflows  en Plone 3 Atributos de la transición: Id, título, estado nuevo, tipo de disparo, scripts que puede llamar y descripción Texto que aparece en el menú “ estado ” y la URL que se mostrará Permisos necesarios para ejecutar la transición
Creando  Workflows  en Plone 3. <!--  Propiedades de la variable  --> <variable variable_id=&quot;review_history&quot; for_catalog=&quot;False&quot; for_status=&quot;False&quot; update_always=&quot;False&quot;>  <description>Provides access to workflow history </description>  <default>  <expression>state_change/getHistory</expression>  </default>  <guard>  <guard-permission>Request review</guard-permission>  <guard-permission>Review portal content</guard-permission>  </guard>  </variable> Workflows  en Plone 3
Creando  Workflows  en Plone 3. <!--  Propiedades de la variable  --> <variable variable_id=&quot;review_history&quot; for_catalog=&quot;False&quot; for_status=&quot;False&quot; update_always=&quot;False&quot;>  <description>Provides access to workflow history </description>  <default>  <expression>state_change/getHistory</expression>  </default>  <guard>  <guard-permission>Request review</guard-permission>  <guard-permission>Review portal content</guard-permission>  </guard>  </variable> Workflows  en Plone 3 Atributos de la variable: Id, se actualiza siempre  y descripción
Creando  Workflows  en Plone 3. <!--  Propiedades de la variable  --> <variable variable_id=&quot;review_history&quot; for_catalog=&quot;False&quot; for_status=&quot;False&quot; update_always=&quot;False&quot;>  <description>Provides access to workflow history </description>  <default>  <expression>state_change/getHistory</expression>  </default>  <guard>  <guard-permission>Request review</guard-permission>  <guard-permission>Review portal content</guard-permission>  </guard>  </variable> Workflows  en Plone 3 Atributos de la variable: Id, se actualiza siempre  y descripción Expresión  TALES  con la que obtiene su valor
Creando  Workflows  en Plone 3. <!--  Propiedades de la variable  --> <variable variable_id=&quot;review_history&quot; for_catalog=&quot;False&quot; for_status=&quot;False&quot; update_always=&quot;False&quot;>  <description>Provides access to workflow history </description>  <default>  <expression>state_change/getHistory</expression>  </default>  <guard>  <guard-permission>Request review</guard-permission>  <guard-permission>Review portal content</guard-permission>  </guard>  </variable> Workflows  en Plone 3 Atributos de la variable: Id, se actualiza siempre  y descripción Expresión  TALES  con la que obtiene su valor Permisos necesarios para acceder al valor
Creando  Workflows  en Plone 3. Primero, definimos algunas propiedades del  workflow , ID, nombre del estado inicial y nombre de la variable que almacena el estado actual (debe ser siempre  review_state ). A continuación, enumeramos los permisos que se usarán. Posteriormente, definimos los diversos estados y transiciones. Para cada estado, establecemos un conjunto de posibles transiciones de salida ( exit transitions ) que estarán disponibles en el menú  Estado , al igual que el mapeo de permisos en el estado particular. Las transiciones tienen un ID, un título ( title ), el estado al cual llega ( new_state ) y un tipo de disparo ( trigger ), ya sea levantado por el usuario ( USER ) o automático ( AUTOMATIC ). La etiqueta  <action /> , contiene el nombre que se mostrará en el menú  Estado , y la URL que se llamará si el usuario elige esta transición. Finalmente, establecemos los permisos “guardia”, si el usuario actual no tiene alguno de ellos, la transición no estará disponible. El código omitido define otros estados, transiciones y mapeos de permisos, además de algunas variables de  workflow  estándar (utilizadas para el historial del mismo). Workflows  en Plone 3
E jemplo: Workflow de solicitud del Instituto de Matemáticas. Workflows
E jemplo: Workflow de solicitud del Instituto de Matemáticas, mostrando los permisos. Workflows
Andy McKay.  The Definitive Guide to Plone . Apress, 2004. http://plone.org/documentation/manual/definitive-guide Martin Aspeli.  Professional Plone Development , Packt Publishing, Birmingham UK, September 2007. Carlos de la Guardia.  Editor grafico de workflows .  http://plone.org/products/collective-workflowed Documentación de  DCWorkflow . www.zope.org/Members/hathawsh/DCWorkflow_docs/default/DCWorkflow_doc.pdf DCWorkflow Dump . Herramienta que devuelve el código Python de un  workflow . http://plone.org/products/dcworkflowdump DCWorkflow Graph . Visor gráfico de  workflows . http://plone.org/products/products-dcworkflowgraph Especificación de  TALES expressions . http://wiki.zope.org/ZPT/TALES Róman Joost. Diploma thesis.  Feasibility Study on a Graphical Workflow Editor based on the Workflow Management System “AlphaFlow” , 2006. http://thesis.romanofski.de/index.html Referencias

Más contenido relacionado

PPTX
PDF
Tutorial de cakePHP itst
DOCX
PDF
Tutorial consumir DLL C++ en C#
PPTX
MVC en CakePHP 2.0
PDF
Curso de delphi
PPTX
Tutorial de CodeBlocks
PDF
Intro a cakephp
Tutorial de cakePHP itst
Tutorial consumir DLL C++ en C#
MVC en CakePHP 2.0
Curso de delphi
Tutorial de CodeBlocks
Intro a cakephp

La actualidad más candente (20)

PPT
Introducción al Delphi
PDF
Unidad i programacion visual elementos basicos
PDF
56874982 curso-de-delphi-7
PDF
Conociendo el Patron Modelo Vista Controlador
PPT
Google apps engine
PPTX
Tutorial de codeblocks
DOCX
CREACION DE DLL Y USO (Ejemplo desarrollado)
PPTX
Mi tutorial-eclipse
PDF
Laravel vc
PPTX
Manual del uso de codeblocks
PPTX
Oracle Forms
PDF
Guia programacionwebdesarrollositiosweb
PPT
My sql en delphi 7
PPTX
TUTORIAL DE ECLIPSE
PPTX
Tutorial Eclipse
PDF
Guia herramientas de bd
DOCX
Guía herramientas de BD PHP
PPTX
visual basic
Introducción al Delphi
Unidad i programacion visual elementos basicos
56874982 curso-de-delphi-7
Conociendo el Patron Modelo Vista Controlador
Google apps engine
Tutorial de codeblocks
CREACION DE DLL Y USO (Ejemplo desarrollado)
Mi tutorial-eclipse
Laravel vc
Manual del uso de codeblocks
Oracle Forms
Guia programacionwebdesarrollositiosweb
My sql en delphi 7
TUTORIAL DE ECLIPSE
Tutorial Eclipse
Guia herramientas de bd
Guía herramientas de BD PHP
visual basic
Publicidad

Destacado (20)

DOCX
Ejercicios de oraciones
DOCX
Practica 29 ciencias i
DOCX
Internet
PDF
Guides definitivo
DOCX
DOCX
PDF
TIC PRIMERA EVIDENCIA
DOCX
Hola brissa y daniela
DOC
Ficha adjunta
PDF
Consultaerikacamelo
PPT
Presentación2
PDF
DOCX
Actividad 6 en cuestionario archivo en word silvia murillo
DOCX
Corrección parcial 1er corte
DOC
Sistemas de produccion
PDF
Ingreso de Turistas a Patrimonios Culturales
DOCX
Ggggghhhhh
DOCX
Clase de computadores
PDF
Technical Aptitude Questions E-Book Jithu Jain Mibs
Ejercicios de oraciones
Practica 29 ciencias i
Internet
Guides definitivo
TIC PRIMERA EVIDENCIA
Hola brissa y daniela
Ficha adjunta
Consultaerikacamelo
Presentación2
Actividad 6 en cuestionario archivo en word silvia murillo
Corrección parcial 1er corte
Sistemas de produccion
Ingreso de Turistas a Patrimonios Culturales
Ggggghhhhh
Clase de computadores
Technical Aptitude Questions E-Book Jithu Jain Mibs
Publicidad

Similar a Workflows en Plone (20)

PDF
Plone Gobierno Quinta SesióN
ODP
Curso Mu
PDF
Workflow
PDF
Curso Plone Secundo Sesion
PDF
Plone - Introducción y instalación
PPT
02 webinar gestion_expedientes_v0.6.1-intix
PDF
Guía del administrador del portal sobre Plone
PPT
Plone Gubierno Cuarto SesióN1
PDF
Curso Liferay 6.2: Unidad Didáctica 05 Workflow
ODP
Desarrollo Aplicaciones Plone
PDF
Plone CMS en el Proyecto CANAIMA GNU/Linux
PDF
Plone Gobierno Tercera SesióN
PDF
Workflows On Rails
PDF
BPMN 2.0 en el Proceso de Desarrollo de Software
PDF
Plonegov - Vínculos de cooperación entre gobiernos que acercan a sus ciudadan...
PDF
ITI Presentacion Eclipse Day
PPTX
PG- Workflows
ODP
Desarrollo Aplicaciones Plone
PPTX
CMS - Metodología de trabajo EMEPE
PPT
Modelado de Sistemas Interactivos con FlowiXMLGonzalez mini curso-flowixml
Plone Gobierno Quinta SesióN
Curso Mu
Workflow
Curso Plone Secundo Sesion
Plone - Introducción y instalación
02 webinar gestion_expedientes_v0.6.1-intix
Guía del administrador del portal sobre Plone
Plone Gubierno Cuarto SesióN1
Curso Liferay 6.2: Unidad Didáctica 05 Workflow
Desarrollo Aplicaciones Plone
Plone CMS en el Proyecto CANAIMA GNU/Linux
Plone Gobierno Tercera SesióN
Workflows On Rails
BPMN 2.0 en el Proceso de Desarrollo de Software
Plonegov - Vínculos de cooperación entre gobiernos que acercan a sus ciudadan...
ITI Presentacion Eclipse Day
PG- Workflows
Desarrollo Aplicaciones Plone
CMS - Metodología de trabajo EMEPE
Modelado de Sistemas Interactivos con FlowiXMLGonzalez mini curso-flowixml

Último (20)

PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
Mecanismos-de-Propagacion de ondas electromagneticas
PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
PDF
Teoría de estadística descriptiva y aplicaciones .pdf
PPTX
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
DOCX
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
PDF
Distribucion de frecuencia exel (1).pdf
PDF
Taller tecnológico Michelle lobo Velasquez
PPTX
Curso de generación de energía mediante sistemas solares
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
PPTX
modulo seguimiento 1 para iniciantes del
PDF
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
PDF
Estrategia de Apoyo de Daylin Castaño (5).pdf
PPTX
El uso de las TIC en la vida cotidiana..
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
la-historia-de-la-medicina Edna Silva.pptx
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
PDF
MANUAL de recursos humanos para ODOO.pdf
Propuesta BKP servidores con Acronis1.pptx
Mecanismos-de-Propagacion de ondas electromagneticas
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
Teoría de estadística descriptiva y aplicaciones .pdf
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
Distribucion de frecuencia exel (1).pdf
Taller tecnológico Michelle lobo Velasquez
Curso de generación de energía mediante sistemas solares
Presentacion de Alba Curso Auditores Internos ISO 19011
modulo seguimiento 1 para iniciantes del
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
Estrategia de Apoyo de Daylin Castaño (5).pdf
El uso de las TIC en la vida cotidiana..
Diapositiva proyecto de vida, materia catedra
la-historia-de-la-medicina Edna Silva.pptx
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
informe_fichas1y2_corregido.docx (2) (1).pdf
MANUAL de recursos humanos para ODOO.pdf

Workflows en Plone

  • 1. Administración de procesos en Plone. Eduardo Espinosa Avila. Febrero 2009.
  • 2. Los workflows son mapas de procesos de negocio. Se componen de tareas y sus relaciones, criterios para indicar inicio y término de los procesos y la información sobre la tarea individual. Un workflow es un conjunto de interacciones que deben realizarse para completar una actividad o tarea. Por ejemplo, solicitudes de admisión en una escuela, o solicitudes de viaje de alguna institución. Estas tareas involucran a varias personas, y son diferentes dependiendo de la institución.   Gráficamente se puede representar como una máquina de estados con transiciones etiquetadas. Workflows
  • 3. Un ejemplo de un workflow sencillo, representado como máquina de estados. Workflows
  • 4. El mismo workflow , especificando los permisos sobre las transiciones. En general, para diseñar un workflow , se realizan tres actividades:   Definir los estados del workflow . Definir las transiciones. Definir permisos (especificar quién puede realizar las transiciones). Workflows
  • 5. En http://www.wfmc.org/ y http://www.e-workflow.org/ se definen los estándares puede verse que actualmente hay gran auge por realizar investigación y desarrollo relacionado con workflows , también se muestran diversos casos de éxito, agrupados en los siguientes rubros:   Académico. Financiero. Gubernamental. Salud. Industrias. Tecnología. Transporte. Otros . Workflows
  • 6. Una de las fortalezas de Plone es su componente de workflows . El manejo de workflows es uno de los temas base de content management , que es la separación de la lógica, el contenido y la presentación. El producto para workflows más usado en Plone es DCWorkflow el cual es un producto opensource lanzado por la Zope Corporation. DCWorkflow provee ciertas características y limitaciones claves que deben tomarse en cuenta para comprender su uso. Existen otros sistemas de workflows , orientados a diferentes conceptos como son tareas, algunos de ellos están disponibles para Plone, p.ej. OpenFlow y AlphaFlow . Sin embargo DCWorkflow es bastante simple, de gran alcance y proporciona la funcionalidad que la mayoría de usuarios necesitan. Workflows en Plone
  • 7. El concepto DCWorkflow . DCWorkflow asume ciertas cosas sobre el proceso ( workflow ): Existe un objeto en el sistema que representa la tarea que debe completarse. Todos los objetos de un mismo tipo tienen asociado el mismo workflow . Las tareas son asignadas a roles, no a usuarios. DCWorkflow facilita implementar workflows que se adaptan a esta descripción; de no ser así, existen otras alternativas como AlphaFlow , un motor de workflows para Plone más complejo y potente. Workflows en Plone
  • 8. Creando Workflows en Plone. Para crear definiciones de workflows en Plone con el producto DCWorkflow , se debe hacer los siguiente: Definir los estados del workflow . Definir las transiciones. Definir los permisos. (Especificar quién puede hacer qué sobre el contenido). Definir worklists y scripts . Se pueden utilizar expresiones TALES ( Template Attribute Language Expression Syntax ) para acceder a atributos de objetos. Workflows en Plone
  • 9. Creando Workflows en Plone 2.1. Plone 2.x tiene incluidos dos workflows : Default workflow ( plone_workflow ) y Folder workflow ( folder_workflow ); si se desean añadir otros workflows al sitio, existen tres métodos principales: Utilizando la interfaz de administración de Zope ( ZMI ). Usando el producto ArchGenXML . Es una herramienta que genera productos para Zope basados en Archetypes , a partir de modelos UML basados en XMI ( XML Metadata Interchange , .xmi, .zargo, .zuml). Vía código de Python (puede ser generado con ArchGenXML ). Se mostrarán algunos puntos de la creación con Python. Workflows en Plone 2.1
  • 10. Creando Workflows en Plone 2.1 con código de Python. Comenzamos importando algunas definiciones útiles: from Products.CMFCore.utils import getToolByName from Products.CMFCore.WorkflowTool import addWorkflowFactory from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition from Products.ExternalMethod.ExternalMethod import ExternalMethod El nombre del producto: from Products.MiProducto.config import PROJECTNAME as productname Workflows en Plone 2.1
  • 11. Creando Workflows en Plone 2.1 con código de Python. Creamos una función de definición del workflow : def setup_mi_workflow(self, workflow): &quot;&quot;&quot; Definición de mi_workflow &quot;&quot;&quot; workflow.setProperties(title='mi_workflow') # Estados for s in [‘estado_1’, ‘estado_2’]: workflow.states.addState(s) # Transiciones for t in [‘pasar_a_2’, ‘regresar_a_1’]: workflow.transitions.addTransition(t) # Variables útiles for v in ['action', 'review_history', 'actor', 'comments', 'time', 'wf_title']: workflow.variables.addVariable(v) # Permisos administrados for p in ('Access contents information', 'Modify portal content', 'View'): workflow.addManagedPermission(p) Workflows en Plone 2.1
  • 12. Creando Workflows en Plone 2.1 con código de Python. Definimos las propiedades de los estados: ## Estado inicial workflow.states.setInitialState(‘estado_1') ## Propiedades del estado stateDef = workflow.states[‘estado_1'] stateDef.setProperties(title=&quot;&quot;&quot; Estado 1&quot;&quot;&quot;, transitions=(‘pasar_a_2',)) stateDef.setPermission('Access contents information', 1, ['Owner']) stateDef.setPermission('Modify portal content', 1, ['Owner']) stateDef.setPermission('View', 1, ['Manager', 'Owner']) Workflows en Plone 2.1
  • 13. Creando Workflows en Plone 2.1 con código de Python. Definimos las propiedades de las transiciones: ## Propiedades de la transición transitionDef = workflow.transitions[‘pasar_a_2'] transitionDef.setProperties(title=&quot;&quot;“Pasar al estado 2&quot;&quot;&quot;, new_state_id=&quot;&quot;“estado_2&quot;&quot;&quot;, trigger_type=1, script_name=&quot;&quot;&quot;&quot;&quot;&quot;, after_script_name=&quot;&quot;&quot;&quot;&quot;&quot;, actbox_name=&quot;&quot;“Pasar a 2&quot;&quot;&quot;, actbox_url=&quot;&quot;&quot;%(content_url)s/content_show_form&quot;&quot;&quot;, actbox_category=&quot;&quot;&quot;workflow&quot;&quot;&quot;, props={'guard_roles': 'Owner'}, ) Workflows en Plone 2.1
  • 14. Creando Workflows en Plone 2.1 con código de Python. Definimos las propiedades de las variables: ## Variable de estado workflow.variables.setStateVar('review_state') ## Propiedades de la variable variableDef = workflow.variables['review_history'] variableDef.setProperties(description=&quot;&quot;“Historial del workflow&quot;&quot;&quot;, default_value=&quot;&quot;&quot;&quot;&quot;&quot;, default_expr=&quot;&quot;&quot;state_change/getHistory&quot;&quot;&quot;, for_catalog=0, for_status=0, update_always=0, props={'guard_permissions': 'Request review; Review portal content'}) Workflows en Plone 2.1
  • 15. Creando Workflows en Plone 2.1 con código de Python. Creamos una función para instalar el workflow : def create_mi_workflow(self, id): &quot;&quot;&quot;Crea mi_solicitud&quot;&quot;&quot; ob = DCWorkflowDefinition(id) setup_mi_workflow(self, ob) return ob # Llamamos al Workflow Factory para crear el objeto dentro del sitio addWorkflowFactory(create_mi_workflow, id=‘mi_workflow', title=‘Mi workflow') Finalmente, dentro del script de instalación del producto, se debe llamar a la función de creación del workflow . Workflows en Plone 2.1
  • 16. Creando Workflows en Plone 3. Plone 3 tiene incluidos un conjunto de nuevos workflows : Simple Publication Workflow. Intranet/Extranet workflow . Community workflow . One state workflow. Community Workflow for Folders Intranet Workflow for Folders Cada uno orientado a cumplir requerimientos específicos. Workflows en Plone 3
  • 17. Creando Workflows en Plone 3. Si se desean añadir otros workflows al sitio, existen cuatro métodos principales : Utilizando la interfaz de administración de Zope ( ZMI ). Con el producto collective.workflowed . Usando el producto ArchGenXML . Si se cuenta con un workflow definido en alguna versión de Plone 2.x, lo más conveniente, es realizar la exportación de este a un archivo .zexp desde el ZMI de esa versión de Plone, después importar ese archivo al sitio existente en Plone 3. Posteriormente, se exporta el paso de workflow tool de la configuración del sitio, para obtener la definición en formato XML y se coloca dentro de la carpeta profiles/default . Workflows en Plone 3
  • 18. Creando Workflows en Plone 3. Ahora se muestra el contenido de profiles/default/workflows.xml , el cual se utiliza para definir nuevos workflows dentro del sitio y de asociarlos a tipos de contenido específicos: <?xml version=&quot;1.0&quot;?> <object name=&quot;portal_workflow&quot; meta_type=&quot;Plone Workflow Tool&quot;> <property name=&quot;title&quot;>Contains workflow definitions for your portal</property> <object name=“mi_workflow&quot; meta_type=&quot;Workflow&quot;/> <bindings> <type type_id=“mi_contenido&quot;> <bound-workflow workflow_id=“mi_workflow&quot;/> </type> </bindings> </object> Workflows en Plone 3
  • 19. Creando Workflows en Plone 3. Ahora se muestra el contenido de profiles/default/workflows.xml , el cual se utiliza para definir nuevos workflows dentro del sitio y de asociarlos a tipos de contenido específicos: <?xml version=&quot;1.0&quot;?> <object name=&quot;portal_workflow&quot; meta_type=&quot;Plone Workflow Tool&quot;> <property name=&quot;title&quot;>Contains workflow definitions for your portal</property> <object name=“mi_workflow&quot; meta_type=&quot;Workflow&quot;/> <bindings> <type type_id=“mi_contenido&quot;> <bound-workflow workflow_id=“mi_workflow&quot;/> </type> </bindings> </object> Workflows en Plone 3 Trabajamos con objetos tipo Workflow
  • 20. Creando Workflows en Plone 3. Ahora se muestra el contenido de profiles/default/workflows.xml , el cual se utiliza para definir nuevos workflows dentro del sitio y de asociarlos a tipos de contenido específicos: <?xml version=&quot;1.0&quot;?> <object name=&quot;portal_workflow&quot; meta_type=&quot;Plone Workflow Tool&quot;> <property name=&quot;title&quot;>Contains workflow definitions for your portal</property> <object name=“mi_workflow&quot; meta_type=&quot;Workflow&quot;/> <bindings> <type type_id=“mi_contenido&quot;> <bound-workflow workflow_id=“mi_workflow&quot;/> </type> </bindings> </object> Workflows en Plone 3 Trabajamos con objetos tipo Workflow Declaramos un nuevo Workflow en el sitio
  • 21. Creando Workflows en Plone 3. Ahora se muestra el contenido de profiles/default/workflows.xml , el cual se utiliza para definir nuevos workflows dentro del sitio y de asociarlos a tipos de contenido específicos: <?xml version=&quot;1.0&quot;?> <object name=&quot;portal_workflow&quot; meta_type=&quot;Plone Workflow Tool&quot;> <property name=&quot;title&quot;>Contains workflow definitions for your portal</property> <object name=“mi_workflow&quot; meta_type=&quot;Workflow&quot;/> <bindings> <type type_id=“mi_contenido&quot;> <bound-workflow workflow_id=“mi_workflow&quot;/> </type> </bindings> </object> Workflows en Plone 3 Trabajamos con objetos tipo Workflow Declaramos un nuevo Workflow en el sitio Asociamos el Workflow a un tipo de contenido
  • 22. Creando Workflows en Plone 3. A continuación dentro de profiles/default/workflows/mi_workflow , creamos el archivo de definición definition.xml , se muestran algunas partes de este archivo : <?xml version=&quot;1.0&quot;?> <dc-workflow workflow_id=“mi_workflow&quot; title=“Mi Workflow&quot; description=&quot; - Descripción de mi workflow. &quot; state_variable=&quot;review_state&quot; initial_state=“estado_1&quot;> <!-- Permisos utilizados por el workflow --> <permission>Access contents information</permission> <permission>Modify portal content</permission> <permission>View</permission> Workflows en Plone 3
  • 23. Creando Workflows en Plone 3. A continuación dentro de profiles/default/workflows/mi_workflow , creamos el archivo de definición definition.xml , se muestran algunas partes de este archivo : <?xml version=&quot;1.0&quot;?> <dc-workflow workflow_id=“mi_workflow&quot; title=“Mi Workflow&quot; description=&quot; - Descripción de mi workflow. &quot; state_variable=&quot;review_state&quot; initial_state=“estado_1&quot;> <!-- Permisos utilizados por el workflow --> <permission>Access contents information</permission> <permission>Modify portal content</permission> <permission>View</permission> Workflows en Plone 3 Atributos del Workflow , tipo DCWorkflow , Id, título, descripción, variable que almacena el estado actual y estado inicial
  • 24. Creando Workflows en Plone 3. A continuación dentro de profiles/default/workflows/mi_workflow , creamos el archivo de definición definition.xml , se muestran algunas partes de este archivo : <?xml version=&quot;1.0&quot;?> <dc-workflow workflow_id=“mi_workflow&quot; title=“Mi Workflow&quot; description=&quot; - Descripción de mi workflow. &quot; state_variable=&quot;review_state&quot; initial_state=“estado_1&quot;> <!-- Permisos utilizados por el workflow --> <permission>Access contents information</permission> <permission>Modify portal content</permission> <permission>View</permission> Workflows en Plone 3 Atributos del Workflow : tipo DCWorkflow , Id, título, descripción, variable que almacena el estado actual y estado inicial Permisos utilizados por el Workflow
  • 25. Creando Workflows en Plone 3. <!-- Los diversos estados con su respectivo mapeo de permisos --> <state state_id=“estado_1&quot; title=“Estado 1”> <description> Estado inicial. </description> <exit-transition transition_id=“pasar_a_2”/> <permission-map name=“Access contents information” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“Modify portal content” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“View” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> <permission-role>Editor</permission-role> <permission-role>Reader</permission-role> </permission-map> </state> Workflows en Plone 3
  • 26. Creando Workflows en Plone 3. <!-- Los diversos estados con su respectivo mapeo de permisos --> <state state_id=“estado_1&quot; title=“Estado 1”> <description> Estado inicial. </description> <exit-transition transition_id=“pasar_a_2”/> <permission-map name=“Access contents information” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“Modify portal content” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“View” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> <permission-role>Editor</permission-role> <permission-role>Reader</permission-role> </permission-map> </state> Workflows en Plone 3 Título y descripción del estado
  • 27. Creando Workflows en Plone 3. <!-- Los diversos estados con su respectivo mapeo de permisos --> <state state_id=“estado_1&quot; title=“Estado 1”> <description> Estado inicial. </description> <exit-transition transition_id=“pasar_a_2”/> <permission-map name=“Access contents information” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“Modify portal content” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“View” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> <permission-role>Editor</permission-role> <permission-role>Reader</permission-role> </permission-map> </state> Workflows en Plone 3 Título y descripción del estado Transiciones posibles
  • 28. Creando Workflows en Plone 3. <!-- Los diversos estados con su respectivo mapeo de permisos --> <state state_id=“estado_1&quot; title=“Estado 1”> <description> Estado inicial. </description> <exit-transition transition_id=“pasar_a_2”/> <permission-map name=“Access contents information” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“Modify portal content” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> </permission-map> <permission-map name=“View” acquired=“False”> <permission-role>Manager</permission-role> <permission-role>Owner</permission-role> <permission-role>Editor</permission-role> <permission-role>Reader</permission-role> </permission-map> </state> Workflows en Plone 3 Título y descripción del estado Transiciones posibles Roles asociados al permiso actual
  • 29. Creando Workflows en Plone 3. <!-- Transiciones entre estados, incluyendo condiciones de seguridad --> <transition transition_id=“pasar_a_2&quot; title=“Pasar a estado 2&quot; new_state=“estado_2&quot; trigger=&quot;USER&quot; before_script=&quot;&quot; after_script=&quot;&quot;> <description>Pasar del estado 1 al estado 2. </description> <action url=&quot;%(content_url)s/content_status_modify?workflow_action=publish&quot; category=&quot;workflow&quot;>Pasar a 2</action> <guard> <guard-permission>Modify portal content</guard-permission> <guard-role>Owner</guard-role> </guard> </transition> Workflows en Plone 3
  • 30. Creando Workflows en Plone 3. <!-- Transiciones entre estados, incluyendo condiciones de seguridad --> <transition transition_id=“pasar_a_2&quot; title=“Pasar a estado 2&quot; new_state=“estado_2&quot; trigger=&quot;USER&quot; before_script=&quot;&quot; after_script=&quot;&quot;> <description>Pasar del estado 1 al estado 2. </description> <action url=&quot;%(content_url)s/content_status_modify?workflow_action=publish&quot; category=&quot;workflow&quot;>Pasar a 2</action> <guard> <guard-permission>Modify portal content</guard-permission> <guard-role>Owner</guard-role> </guard> </transition> Workflows en Plone 3 Atributos de la transición: Id, título, estado nuevo, tipo de disparo, scripts que puede ejecutar y descripción
  • 31. Creando Workflows en Plone 3. <!-- Transiciones entre estados, incluyendo condiciones de seguridad --> <transition transition_id=“pasar_a_2&quot; title=“Pasar a estado 2&quot; new_state=“estado_2&quot; trigger=&quot;USER&quot; before_script=&quot;&quot; after_script=&quot;&quot;> <description>Pasar del estado 1 al estado 2. </description> <action url=&quot;%(content_url)s/content_status_modify?workflow_action=publish&quot; category=&quot;workflow&quot;>Pasar a 2</action> <guard> <guard-permission>Modify portal content</guard-permission> <guard-role>Owner</guard-role> </guard> </transition> Workflows en Plone 3 Atributos de la transición: Id, título, estado nuevo, tipo de disparo, scripts que puede ejecutar y descripción Texto que aparece en el menú “ estado ” y la URL que se mostrará
  • 32. Creando Workflows en Plone 3. <!-- Transiciones entre estados, incluyendo condiciones de seguridad --> <transition transition_id=“pasar_a_2&quot; title=“Pasar a estado 2&quot; new_state=“estado_2&quot; trigger=&quot;USER&quot; before_script=&quot;&quot; after_script=&quot;&quot;> <description>Pasar del estado 1 al estado 2. </description> <action url=&quot;%(content_url)s/content_status_modify?workflow_action=publish&quot; category=&quot;workflow&quot;>Pasar a 2</action> <guard> <guard-permission>Modify portal content</guard-permission> <guard-role>Owner</guard-role> </guard> </transition> Workflows en Plone 3 Atributos de la transición: Id, título, estado nuevo, tipo de disparo, scripts que puede llamar y descripción Texto que aparece en el menú “ estado ” y la URL que se mostrará Permisos necesarios para ejecutar la transición
  • 33. Creando Workflows en Plone 3. <!-- Propiedades de la variable --> <variable variable_id=&quot;review_history&quot; for_catalog=&quot;False&quot; for_status=&quot;False&quot; update_always=&quot;False&quot;> <description>Provides access to workflow history </description> <default> <expression>state_change/getHistory</expression> </default> <guard> <guard-permission>Request review</guard-permission> <guard-permission>Review portal content</guard-permission> </guard> </variable> Workflows en Plone 3
  • 34. Creando Workflows en Plone 3. <!-- Propiedades de la variable --> <variable variable_id=&quot;review_history&quot; for_catalog=&quot;False&quot; for_status=&quot;False&quot; update_always=&quot;False&quot;> <description>Provides access to workflow history </description> <default> <expression>state_change/getHistory</expression> </default> <guard> <guard-permission>Request review</guard-permission> <guard-permission>Review portal content</guard-permission> </guard> </variable> Workflows en Plone 3 Atributos de la variable: Id, se actualiza siempre y descripción
  • 35. Creando Workflows en Plone 3. <!-- Propiedades de la variable --> <variable variable_id=&quot;review_history&quot; for_catalog=&quot;False&quot; for_status=&quot;False&quot; update_always=&quot;False&quot;> <description>Provides access to workflow history </description> <default> <expression>state_change/getHistory</expression> </default> <guard> <guard-permission>Request review</guard-permission> <guard-permission>Review portal content</guard-permission> </guard> </variable> Workflows en Plone 3 Atributos de la variable: Id, se actualiza siempre y descripción Expresión TALES con la que obtiene su valor
  • 36. Creando Workflows en Plone 3. <!-- Propiedades de la variable --> <variable variable_id=&quot;review_history&quot; for_catalog=&quot;False&quot; for_status=&quot;False&quot; update_always=&quot;False&quot;> <description>Provides access to workflow history </description> <default> <expression>state_change/getHistory</expression> </default> <guard> <guard-permission>Request review</guard-permission> <guard-permission>Review portal content</guard-permission> </guard> </variable> Workflows en Plone 3 Atributos de la variable: Id, se actualiza siempre y descripción Expresión TALES con la que obtiene su valor Permisos necesarios para acceder al valor
  • 37. Creando Workflows en Plone 3. Primero, definimos algunas propiedades del workflow , ID, nombre del estado inicial y nombre de la variable que almacena el estado actual (debe ser siempre review_state ). A continuación, enumeramos los permisos que se usarán. Posteriormente, definimos los diversos estados y transiciones. Para cada estado, establecemos un conjunto de posibles transiciones de salida ( exit transitions ) que estarán disponibles en el menú Estado , al igual que el mapeo de permisos en el estado particular. Las transiciones tienen un ID, un título ( title ), el estado al cual llega ( new_state ) y un tipo de disparo ( trigger ), ya sea levantado por el usuario ( USER ) o automático ( AUTOMATIC ). La etiqueta <action /> , contiene el nombre que se mostrará en el menú Estado , y la URL que se llamará si el usuario elige esta transición. Finalmente, establecemos los permisos “guardia”, si el usuario actual no tiene alguno de ellos, la transición no estará disponible. El código omitido define otros estados, transiciones y mapeos de permisos, además de algunas variables de workflow estándar (utilizadas para el historial del mismo). Workflows en Plone 3
  • 38. E jemplo: Workflow de solicitud del Instituto de Matemáticas. Workflows
  • 39. E jemplo: Workflow de solicitud del Instituto de Matemáticas, mostrando los permisos. Workflows
  • 40. Andy McKay. The Definitive Guide to Plone . Apress, 2004. http://plone.org/documentation/manual/definitive-guide Martin Aspeli. Professional Plone Development , Packt Publishing, Birmingham UK, September 2007. Carlos de la Guardia. Editor grafico de workflows . http://plone.org/products/collective-workflowed Documentación de DCWorkflow . www.zope.org/Members/hathawsh/DCWorkflow_docs/default/DCWorkflow_doc.pdf DCWorkflow Dump . Herramienta que devuelve el código Python de un workflow . http://plone.org/products/dcworkflowdump DCWorkflow Graph . Visor gráfico de workflows . http://plone.org/products/products-dcworkflowgraph Especificación de TALES expressions . http://wiki.zope.org/ZPT/TALES Róman Joost. Diploma thesis. Feasibility Study on a Graphical Workflow Editor based on the Workflow Management System “AlphaFlow” , 2006. http://thesis.romanofski.de/index.html Referencias