SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
Grupo phpbarcelona.org

                7 de junio de 2008
Carlos Buenosvinos (carlos.buenosvinos@gmail.com)
Introducción

                                                                      Este documento contiene el taller práctico que se va a desarrollar en el Workshop “Motores de
                                                                      Workflow en PHP (Más allá de las Aplicaciones CRUD)”, dentro del ciclo de Talleres prácticos
                                                                      que organiza el grupo phpbarcelona.org en la phpBarcelona Workshops 2008, el día 7 de Junio.



                                                                      Objetivos

                                                                      El Taller pretende mostrar los conceptos básicos de un Motor de Workflow y hacer que el lector
                                                                      los ponga en práctica, a través de ejercicios progresivos. Aunque existen algunas soluciones de
                                                                      motores de Workflow en PHP (Galaxia, CuteFlow, OpenFlow, etc.) todo y que no se ajustan
                                                                      bastante a una API genérica, vamos a utilizar unos componentes del framework
                                                                      eZComponentes de (aZ Sytems SA).



                                                                      Metodología

                                                                      El lector deberá ir realizando ejercicio a ejercicio, de manera secuencial. El tiempo aproximado
                                                                      para la realización de todos los ejercicios es de 1 hora.



                                                                      Requerimientos

                                                                      Para poder desarrollar los ejercicios de este taller es necesario disponer de:

                                                                          1.   Servidor Web (Apache) con soporte para PHP
                                                                          2.   PHP
phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008




                                                                          3.   Servidor MySQL
                                                                          4.   Cliente MySQL

                                                                      Recomiendo algún entorno de unificado tipo LAMP, XAMP, etc.




                    1
Ejercicio 1: Descargar, Instalar y Configurar los ezWorkflow Components (5-10 minutos)

Tanto los componentes como su documentación están disponibles en Internet
(http://ezcomponents.org) – Podéis seleccionar el link “Click to Download” que descargará el
“.bz” o ir a la Sección Downloads para descargar el “.zip”

   1. Descargamos los ezComponents de la Web
   2. La configuración a la hora de crear una nueva aplicación es personal de cada uno
      podéis optar por:
          a. Crear un Host Virtual
          b. Un simple directorio dentro de vuestro “docroot”, etc.
   3. Las componentes son una librería externa, por lo tanto, la podéis incluir en un
      subdirectorio “lib” dentro de vuestra aplicación o de vuestra carpeta de librearías de
      terceros
   4. Para incluir las componentes, tenemos que configurar el php.ini, directiva para que
      apunte a la ruta donde se encuentran los eZComponents.




                                                                                               phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008




                                                                                                       2
Ejercicio 2: Crear un sencillo Action Node (1-5 minutos)

                                                                      Dentro de los tipos de Nodos que existen en los eZComponents, los Action Nodes son los que
                                                                      realmente hacen las acciones o actividades que gestiona el propio Workflow. Un Action Node
                                                                      está asociado con un Servicio y eso es lo que vamos a crear.

                                                                         1. Descargamos el archivo “ServicioImprimir.php.todo”
                                                                         2. Llenar los agujeros de código para implementar un Servicio llamado “ServicioImprimir”
                                                                            que reciba un mensaje en la constructora y al ejecutarse imprimar ese mismo mensaje.
phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008




                    3
Ejercicio 3: Programar un Workflow sencillo (5-10 minutos)

En este ejercicio, vamos a crear un Workflow secuencial de 3 pasos utilizando el
ServicioImprimir. El diagrama de workflow es el siguiente:



                                            Inicio




                                              A




                                              B




                                              C




                                             Fin




   1.   Descargar el archivo “ejercicio3.php.todo”
   2.   Llenar los agujeros de código para implementar programando el Workflow de la figura.
   3.   Lanzar la ejecución del Workflow definido




                                                                                               phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008
   4.   El resultado debería ser los 3 mensajes secuenciales de los nodos A, B y C
        respectivamente.




                                                                                                       4
Ejercicio 4: Volcar el Workflow en un fichero XML (1-5 minutos)

                                                                      En este ejercicio, vamos a generar el archivo XML respectivo al Workflow del Ejercicio anterior:

                                                                         1. Descargar el archivo “ejercicio4.php.todo”
                                                                         2. Llenar los agujeros de código para generar el Workflow definido en XML.
                                                                         3. Abrir el Archivo XML e identificar cada elemento con su Nodo
phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008




                    5
Ejercicio 5: Modificar el XML y ejecutar el Workflow de Nuevo (5-10 minutos)

   1. Editar el Archivo XML generado en el ejercicio anterior para alterar el orden de los Pasos
      B y C.
   2. Descargar el archivo “ejercicio5.php.todo”
   3. Llenar los agujeros de código para generar ejecutar el Workflow definido por el XML
      modificado. Comprobar que ahora los pasos B y C están intercambiados respecto al
      primer ejercicio.



                                             Inicio




                                               A




                                               C




                                               B




                                              Fin




                                                                                                   phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008




                                                                                                           6
Ejercicio 6: Modificando el Estado de una Ejecución a través de las Variables de Estado (10-15
                                                                      minutos)

                                                                      Cada ejecución o thread de un Workflow determinado tiene un contexto donde se puede
                                                                      guardar información que los Nodos pueden consultar y activarse en función del estado de
                                                                      dicha información. Para acceder a esta información podemos utilizar los métodos getVariable,
                                                                      setVariable, unsetVariable y hasVariable del objeto ezcWorkflowExecution que recibe el
                                                                      método execute de todos los Servicios.

                                                                         1. Descargar el archivo “ejercicio6.php.todo”
                                                                         2. Descargar el archivo “ServicioNumerico.php.todo”
                                                                         3. Llenar los agujeros de código para generar el Workflow de la figura. El resultado tiene
                                                                            que ser un listado del 1 al 10.



                                                                                                              Inicio




                                                                                                           [Indice = 0;]
                                                                                                            Indice ++;
                                                                                                          Imprimir Indice


                                                                                                                              SI



                                                                                                            Indice < 10
phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008




                                                                                                               NO


                                                                                                               Fin




                    7
Ejercicio 7: Configurar la BBDD para hacer Persistentes los Workflows (1-5 minutos)

Para poder utilizar resumir ejecuciones de Workflows, utilizar subWorkflows, así como Nodos
de tipo Input, necesitamos acceso a una BBDD. En este ejercicio vamos a configurar la BBDD
(Crear las tablas)

   1. Descargamos el archivo “workflow.sql”
   2. Ejecutamos las sentencias SQL en nuestro Cliente de MySQL (phpmyadmin, MySQL
      Query Browser, etc.)




                                                                                              phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008




                                                                                                      8
Ejercicio 8: Guardar la definición de un Workflow en la BBDD (5-10 minutos)

                                                                      Para poder utilizar resumir ejecuciones de Workflows, utilizar subWorkflows, así como Nodos
                                                                      de tipo Input, necesitamos acceso a una BBDD. En este ejercicio vamos a configurar la BBDD
                                                                      (Crear las tablas)

                                                                         1.   Descargar el archivo “ejercicio8.php.todo”
                                                                         2.   Dibujar a mano la Representación gráfica del Workflow
                                                                         3.   Llenar los agujeros de código para guardar el Workflow en la BBDD
                                                                         4.   Comprobar que la tabla “workflow” dispone de nuestro workflow insertado
phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008




                    9
Ejercicio 9: Cargar la definición del Workflow anterior de la BBDD (5-10 minutos)

En las Aplicaciones Web basadas en Motores de Workflow, lo normal es obtener una definición
de la BBDD, y crear o resumir una ejecución de dicho Workflow. En este ejercicio, vamos a
cargar la definición insertada en el Ejercicio anterior y vamos a lanzar una ejecución

   1. Descargar el archivo “ejercicio9.php.todo”
   2. Llenar los agujeros de código para cargar la definición del Workflow anterior de la
      BBDD
   3. Crear un entorno de ejecución y lanzar un nuevo thread del Workflow. (el método start
      devuelve un parámetro que representa el ID del thread, debéis imprimirlo por pantalla
      para su uso posterior en el siguiente ejercicio)
   4. ¿Por qué no aparece nada? (Aparte de la representación del Workflow)
   5. Después de lanzar la ejecución, imprime por pantalla el estado de la Ejecución
      (métodos isResumed, isSuspended, etc.)
   6. ¿Cómo reacciona una ejecución cuando llega a un Nodo tipo Input?
   7. Haz un print_r del resultado de la invocación al método getWaitingFor() sobre el objeto
      de la Ejecución
   8. ¿Qué parámetros está esperando?




                                                                                                phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008




                                                                                                10
Ejercicio 10: Continuar con la Ejecución anterior con los parámetros que necesita (1-5 minutos)

                                                                      Resulta que en el ejercicio anterior, la ejecución se quedó parada esperando cierta variable de
                                                                      estado para poder continuar. En este ejercicio, vamos a cargar esa ejecución pendiente
                                                                      (necesitaremos su ID) y vamos a resumirla dándole los parámetros que necesita.

                                                                         1. Descargar el archivo “ejercicio10.php.todo”
                                                                         2. Llenar los agujeros de código para cargar la definición del Workflow anterior de la
                                                                            BBDD
                                                                         3. Crear un entorno de ejecución y continuar (resume()) el thread del Workflow con la
                                                                            variable que faltaba y vimos en el ejercicio anterior.
phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008




11
Ejercicio 11: Práctica

Adquiridos algunos conceptos hasta aquí, el objetivo de este ejercicio abierto, es desarrollar
una pequeña aplicación que gestione el proceso de Validación de un documento. Os dejo el
enunciado en Inglés. Como la selectividad podéis elegir cualquiera de las dos opciones.

    1. Podéis utilizar lo que queráis
    2. Cuando lo acabéis (tanto en el Workshop como fuera de él) me lo podéis enviar a
       carlos.buenosvinos@gmail.com
    3. Tendremos regalitos para aquellos que lo envíen y la solución funcione.



Multiple Approval, ISO Certification

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^



This scenario is from a current customer of the eZ Publish ECMS providing

quality assurance for dairy products. The customer has information about

the dairy products stored in eZ Publish. When they update any content

there is a strict ISO-governed process to follow. This process basically

consists of a five-level approval:




                                                                                                 phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008
- Bertrand produces an article.

- Approver Level 1: Bård decides who the next four approvers are.

 He can also edit the article and send it back to its creator.

- Approver Level 2: Melissa reviews the article for political

 correctness.

 She can edit the article and send it back one level.

- Approver Level 3: Vidar reviews the article for sales arguments.

 He can edit the article and and send it back one level.

- Approver Level 4: Jennifer does grammar checks on the article.

 She can edit the article and and send it back one level.

- Publisher: Markus approves the final article and chooses the time

 and location for publication.



It is possible to see all on-going processes for an administrator. He or

she can see each article as well as its state and which person currently


                                                                                                 12
handles it.



                                                                      Employment Process

                                                                      ^^^^^^^^^^^^^^^^^^



                                                                      This scenario is from the intranet of a current customer of the eZ Publish

                                                                      ECMS and is used when a new employee is hired.



                                                                      - One person creates an Employee object (including name, address,

                                                                       email, etc.).

                                                                      - An e-mail with a link for final approval of the employment is

                                                                       sent to the CEO.

                                                                      - Once the CEO has approved the new employment three parallel

                                                                       activities are started:



                                                                       - An e-mail to the system administrator is sent with the

                                                                        request to create e-mail and other accounts.
phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008




                                                                        The e-mail contains a link for the system administrator to

                                                                        click when he is done.

                                                                       - An automatic process is started to set up accounts on

                                                                        different systems.

                                                                       - An e-mail to the administration is sent with the request

                                                                        to buy new hardware for the new employee.



                                                                      - Once these three activities have been completed, the workflow

                                                                       continues.

                                                                      - The Employee object is published.

                                                                      - An e-mail with detailed information is sent to the new employee.



                                                                      The on-going status for all employment processes at any time is available

                                                                      to anyone with the appropriate permissions.


13

Weitere ähnliche Inhalte

Andere mochten auch (7)

Proceso WorkFlow
Proceso WorkFlowProceso WorkFlow
Proceso WorkFlow
 
Workflow Zuleima Romero Espinoza
Workflow Zuleima Romero EspinozaWorkflow Zuleima Romero Espinoza
Workflow Zuleima Romero Espinoza
 
Php Barcelona Workshop2008 Motores De Workflow En Php Presentacion
Php Barcelona Workshop2008 Motores De Workflow En Php PresentacionPhp Barcelona Workshop2008 Motores De Workflow En Php Presentacion
Php Barcelona Workshop2008 Motores De Workflow En Php Presentacion
 
Que es un workflow
Que es un workflowQue es un workflow
Que es un workflow
 
Curso Liferay 6.2: Unidad Didáctica 05 Workflow
Curso Liferay 6.2: Unidad Didáctica 05 WorkflowCurso Liferay 6.2: Unidad Didáctica 05 Workflow
Curso Liferay 6.2: Unidad Didáctica 05 Workflow
 
Workflow
WorkflowWorkflow
Workflow
 
Sistemas Workflow-BPS (Gestión de Procesos)
Sistemas Workflow-BPS (Gestión de Procesos)Sistemas Workflow-BPS (Gestión de Procesos)
Sistemas Workflow-BPS (Gestión de Procesos)
 

Ähnlich wie Php Barcelona Workshop2008 Motores De Workflow En Php Guia

Metodologia Desarrollo J2ee
Metodologia Desarrollo J2eeMetodologia Desarrollo J2ee
Metodologia Desarrollo J2ee
Blue Experience
 

Ähnlich wie Php Barcelona Workshop2008 Motores De Workflow En Php Guia (20)

Sesion virtual funciones_php_actividad3_
Sesion virtual funciones_php_actividad3_Sesion virtual funciones_php_actividad3_
Sesion virtual funciones_php_actividad3_
 
7 razones para usar funciones en php
7 razones para usar funciones en php7 razones para usar funciones en php
7 razones para usar funciones en php
 
Documentacion Proyecto Final
Documentacion Proyecto FinalDocumentacion Proyecto Final
Documentacion Proyecto Final
 
Manualcake
ManualcakeManualcake
Manualcake
 
Metodologia Desarrollo J2ee
Metodologia Desarrollo J2eeMetodologia Desarrollo J2ee
Metodologia Desarrollo J2ee
 
Guia 1 de hilos y procesos posix
Guia 1 de hilos y procesos posixGuia 1 de hilos y procesos posix
Guia 1 de hilos y procesos posix
 
Hilo de ejecución
Hilo de ejecuciónHilo de ejecución
Hilo de ejecución
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Estructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
Estructura de Directorio de KumbiaPHP Framework versión 1.0 SpiritEstructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
Estructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Programacion en php atavez de ejemplos
Programacion en php atavez de ejemplosProgramacion en php atavez de ejemplos
Programacion en php atavez de ejemplos
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Workflows en Plone
Workflows en PloneWorkflows en Plone
Workflows en Plone
 
ORMphp Beta v1.0 - Presentación
ORMphp Beta v1.0 - PresentaciónORMphp Beta v1.0 - Presentación
ORMphp Beta v1.0 - Presentación
 
Funciones php sesion virtual-evidencia
Funciones php sesion virtual-evidenciaFunciones php sesion virtual-evidencia
Funciones php sesion virtual-evidencia
 
7 Razones para usar las funciones php
7 Razones para usar las funciones php7 Razones para usar las funciones php
7 Razones para usar las funciones php
 
Manual Completo Php 5
Manual Completo Php 5Manual Completo Php 5
Manual Completo Php 5
 
Evidencia: Sesión virtual “Funciones PHP”
Evidencia: Sesión virtual “Funciones PHP”Evidencia: Sesión virtual “Funciones PHP”
Evidencia: Sesión virtual “Funciones PHP”
 
(Desarrollo web).manual.php.5
(Desarrollo web).manual.php.5(Desarrollo web).manual.php.5
(Desarrollo web).manual.php.5
 

Mehr von Carlos Buenosvinos

Team Engagement PHP Barcelona 2011
Team Engagement PHP Barcelona 2011Team Engagement PHP Barcelona 2011
Team Engagement PHP Barcelona 2011
Carlos Buenosvinos
 
Zend PHP 5.3 Demo Certification Test
Zend PHP 5.3 Demo Certification TestZend PHP 5.3 Demo Certification Test
Zend PHP 5.3 Demo Certification Test
Carlos Buenosvinos
 

Mehr von Carlos Buenosvinos (20)

Kit de Supervivencia para CTOs y Engineering Managers
Kit de Supervivencia para CTOs y Engineering ManagersKit de Supervivencia para CTOs y Engineering Managers
Kit de Supervivencia para CTOs y Engineering Managers
 
Deliveritis Crónica - CAS Spain 2020 (Agile Is The New Normal)
Deliveritis Crónica - CAS Spain 2020 (Agile Is The New Normal)Deliveritis Crónica - CAS Spain 2020 (Agile Is The New Normal)
Deliveritis Crónica - CAS Spain 2020 (Agile Is The New Normal)
 
Eventos, mensajería y otras fábulas - PulpoCon 2019
Eventos, mensajería y otras fábulas - PulpoCon 2019Eventos, mensajería y otras fábulas - PulpoCon 2019
Eventos, mensajería y otras fábulas - PulpoCon 2019
 
Road From Hex. Architecture to Event Sourcing
Road From Hex. Architecture to Event SourcingRoad From Hex. Architecture to Event Sourcing
Road From Hex. Architecture to Event Sourcing
 
De Arquitectura Hexagonal a Event Sourcing
De Arquitectura Hexagonal a Event SourcingDe Arquitectura Hexagonal a Event Sourcing
De Arquitectura Hexagonal a Event Sourcing
 
Primeros Pasos Liderando Equipos Técnicos - Techne 2018
Primeros Pasos Liderando Equipos Técnicos - Techne 2018Primeros Pasos Liderando Equipos Técnicos - Techne 2018
Primeros Pasos Liderando Equipos Técnicos - Techne 2018
 
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
 
A Journey from Hexagonal Architecture to Event Sourcing
A Journey from Hexagonal Architecture to Event SourcingA Journey from Hexagonal Architecture to Event Sourcing
A Journey from Hexagonal Architecture to Event Sourcing
 
Scrum, no eres tú, soy yo
Scrum, no eres tú, soy yoScrum, no eres tú, soy yo
Scrum, no eres tú, soy yo
 
Integrating Bounded Contexts Tips - Dutch PHP 2016
Integrating Bounded Contexts Tips - Dutch PHP 2016Integrating Bounded Contexts Tips - Dutch PHP 2016
Integrating Bounded Contexts Tips - Dutch PHP 2016
 
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
 
Desarrollo Profesional con PHP 2014/15 - Nivel Bajo / Medio
Desarrollo Profesional con PHP 2014/15 - Nivel Bajo / MedioDesarrollo Profesional con PHP 2014/15 - Nivel Bajo / Medio
Desarrollo Profesional con PHP 2014/15 - Nivel Bajo / Medio
 
Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)
Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)
Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)
 
PHP 2014/15 - Visión global del ecosistema PHP
PHP 2014/15 - Visión global del ecosistema PHPPHP 2014/15 - Visión global del ecosistema PHP
PHP 2014/15 - Visión global del ecosistema PHP
 
Desarrollo móvil con Titanium, PhoneGap y otros
Desarrollo móvil con Titanium, PhoneGap y otrosDesarrollo móvil con Titanium, PhoneGap y otros
Desarrollo móvil con Titanium, PhoneGap y otros
 
Introducción a Agile y Scrum (BetaBeers.com)
Introducción a Agile y Scrum (BetaBeers.com)Introducción a Agile y Scrum (BetaBeers.com)
Introducción a Agile y Scrum (BetaBeers.com)
 
Team Engagement PHP Barcelona 2011
Team Engagement PHP Barcelona 2011Team Engagement PHP Barcelona 2011
Team Engagement PHP Barcelona 2011
 
"Al rico" PHP
"Al rico" PHP"Al rico" PHP
"Al rico" PHP
 
Scrum al Detalle: Revision práctica y perversiones humanas
Scrum al Detalle: Revision práctica y perversiones humanasScrum al Detalle: Revision práctica y perversiones humanas
Scrum al Detalle: Revision práctica y perversiones humanas
 
Zend PHP 5.3 Demo Certification Test
Zend PHP 5.3 Demo Certification TestZend PHP 5.3 Demo Certification Test
Zend PHP 5.3 Demo Certification Test
 

Kürzlich hochgeladen

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Kürzlich hochgeladen (11)

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Php Barcelona Workshop2008 Motores De Workflow En Php Guia

  • 1. Grupo phpbarcelona.org 7 de junio de 2008 Carlos Buenosvinos (carlos.buenosvinos@gmail.com)
  • 2. Introducción Este documento contiene el taller práctico que se va a desarrollar en el Workshop “Motores de Workflow en PHP (Más allá de las Aplicaciones CRUD)”, dentro del ciclo de Talleres prácticos que organiza el grupo phpbarcelona.org en la phpBarcelona Workshops 2008, el día 7 de Junio. Objetivos El Taller pretende mostrar los conceptos básicos de un Motor de Workflow y hacer que el lector los ponga en práctica, a través de ejercicios progresivos. Aunque existen algunas soluciones de motores de Workflow en PHP (Galaxia, CuteFlow, OpenFlow, etc.) todo y que no se ajustan bastante a una API genérica, vamos a utilizar unos componentes del framework eZComponentes de (aZ Sytems SA). Metodología El lector deberá ir realizando ejercicio a ejercicio, de manera secuencial. El tiempo aproximado para la realización de todos los ejercicios es de 1 hora. Requerimientos Para poder desarrollar los ejercicios de este taller es necesario disponer de: 1. Servidor Web (Apache) con soporte para PHP 2. PHP phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008 3. Servidor MySQL 4. Cliente MySQL Recomiendo algún entorno de unificado tipo LAMP, XAMP, etc. 1
  • 3. Ejercicio 1: Descargar, Instalar y Configurar los ezWorkflow Components (5-10 minutos) Tanto los componentes como su documentación están disponibles en Internet (http://ezcomponents.org) – Podéis seleccionar el link “Click to Download” que descargará el “.bz” o ir a la Sección Downloads para descargar el “.zip” 1. Descargamos los ezComponents de la Web 2. La configuración a la hora de crear una nueva aplicación es personal de cada uno podéis optar por: a. Crear un Host Virtual b. Un simple directorio dentro de vuestro “docroot”, etc. 3. Las componentes son una librería externa, por lo tanto, la podéis incluir en un subdirectorio “lib” dentro de vuestra aplicación o de vuestra carpeta de librearías de terceros 4. Para incluir las componentes, tenemos que configurar el php.ini, directiva para que apunte a la ruta donde se encuentran los eZComponents. phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008 2
  • 4. Ejercicio 2: Crear un sencillo Action Node (1-5 minutos) Dentro de los tipos de Nodos que existen en los eZComponents, los Action Nodes son los que realmente hacen las acciones o actividades que gestiona el propio Workflow. Un Action Node está asociado con un Servicio y eso es lo que vamos a crear. 1. Descargamos el archivo “ServicioImprimir.php.todo” 2. Llenar los agujeros de código para implementar un Servicio llamado “ServicioImprimir” que reciba un mensaje en la constructora y al ejecutarse imprimar ese mismo mensaje. phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008 3
  • 5. Ejercicio 3: Programar un Workflow sencillo (5-10 minutos) En este ejercicio, vamos a crear un Workflow secuencial de 3 pasos utilizando el ServicioImprimir. El diagrama de workflow es el siguiente: Inicio A B C Fin 1. Descargar el archivo “ejercicio3.php.todo” 2. Llenar los agujeros de código para implementar programando el Workflow de la figura. 3. Lanzar la ejecución del Workflow definido phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008 4. El resultado debería ser los 3 mensajes secuenciales de los nodos A, B y C respectivamente. 4
  • 6. Ejercicio 4: Volcar el Workflow en un fichero XML (1-5 minutos) En este ejercicio, vamos a generar el archivo XML respectivo al Workflow del Ejercicio anterior: 1. Descargar el archivo “ejercicio4.php.todo” 2. Llenar los agujeros de código para generar el Workflow definido en XML. 3. Abrir el Archivo XML e identificar cada elemento con su Nodo phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008 5
  • 7. Ejercicio 5: Modificar el XML y ejecutar el Workflow de Nuevo (5-10 minutos) 1. Editar el Archivo XML generado en el ejercicio anterior para alterar el orden de los Pasos B y C. 2. Descargar el archivo “ejercicio5.php.todo” 3. Llenar los agujeros de código para generar ejecutar el Workflow definido por el XML modificado. Comprobar que ahora los pasos B y C están intercambiados respecto al primer ejercicio. Inicio A C B Fin phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008 6
  • 8. Ejercicio 6: Modificando el Estado de una Ejecución a través de las Variables de Estado (10-15 minutos) Cada ejecución o thread de un Workflow determinado tiene un contexto donde se puede guardar información que los Nodos pueden consultar y activarse en función del estado de dicha información. Para acceder a esta información podemos utilizar los métodos getVariable, setVariable, unsetVariable y hasVariable del objeto ezcWorkflowExecution que recibe el método execute de todos los Servicios. 1. Descargar el archivo “ejercicio6.php.todo” 2. Descargar el archivo “ServicioNumerico.php.todo” 3. Llenar los agujeros de código para generar el Workflow de la figura. El resultado tiene que ser un listado del 1 al 10. Inicio [Indice = 0;] Indice ++; Imprimir Indice SI Indice < 10 phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008 NO Fin 7
  • 9. Ejercicio 7: Configurar la BBDD para hacer Persistentes los Workflows (1-5 minutos) Para poder utilizar resumir ejecuciones de Workflows, utilizar subWorkflows, así como Nodos de tipo Input, necesitamos acceso a una BBDD. En este ejercicio vamos a configurar la BBDD (Crear las tablas) 1. Descargamos el archivo “workflow.sql” 2. Ejecutamos las sentencias SQL en nuestro Cliente de MySQL (phpmyadmin, MySQL Query Browser, etc.) phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008 8
  • 10. Ejercicio 8: Guardar la definición de un Workflow en la BBDD (5-10 minutos) Para poder utilizar resumir ejecuciones de Workflows, utilizar subWorkflows, así como Nodos de tipo Input, necesitamos acceso a una BBDD. En este ejercicio vamos a configurar la BBDD (Crear las tablas) 1. Descargar el archivo “ejercicio8.php.todo” 2. Dibujar a mano la Representación gráfica del Workflow 3. Llenar los agujeros de código para guardar el Workflow en la BBDD 4. Comprobar que la tabla “workflow” dispone de nuestro workflow insertado phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008 9
  • 11. Ejercicio 9: Cargar la definición del Workflow anterior de la BBDD (5-10 minutos) En las Aplicaciones Web basadas en Motores de Workflow, lo normal es obtener una definición de la BBDD, y crear o resumir una ejecución de dicho Workflow. En este ejercicio, vamos a cargar la definición insertada en el Ejercicio anterior y vamos a lanzar una ejecución 1. Descargar el archivo “ejercicio9.php.todo” 2. Llenar los agujeros de código para cargar la definición del Workflow anterior de la BBDD 3. Crear un entorno de ejecución y lanzar un nuevo thread del Workflow. (el método start devuelve un parámetro que representa el ID del thread, debéis imprimirlo por pantalla para su uso posterior en el siguiente ejercicio) 4. ¿Por qué no aparece nada? (Aparte de la representación del Workflow) 5. Después de lanzar la ejecución, imprime por pantalla el estado de la Ejecución (métodos isResumed, isSuspended, etc.) 6. ¿Cómo reacciona una ejecución cuando llega a un Nodo tipo Input? 7. Haz un print_r del resultado de la invocación al método getWaitingFor() sobre el objeto de la Ejecución 8. ¿Qué parámetros está esperando? phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008 10
  • 12. Ejercicio 10: Continuar con la Ejecución anterior con los parámetros que necesita (1-5 minutos) Resulta que en el ejercicio anterior, la ejecución se quedó parada esperando cierta variable de estado para poder continuar. En este ejercicio, vamos a cargar esa ejecución pendiente (necesitaremos su ID) y vamos a resumirla dándole los parámetros que necesita. 1. Descargar el archivo “ejercicio10.php.todo” 2. Llenar los agujeros de código para cargar la definición del Workflow anterior de la BBDD 3. Crear un entorno de ejecución y continuar (resume()) el thread del Workflow con la variable que faltaba y vimos en el ejercicio anterior. phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008 11
  • 13. Ejercicio 11: Práctica Adquiridos algunos conceptos hasta aquí, el objetivo de este ejercicio abierto, es desarrollar una pequeña aplicación que gestione el proceso de Validación de un documento. Os dejo el enunciado en Inglés. Como la selectividad podéis elegir cualquiera de las dos opciones. 1. Podéis utilizar lo que queráis 2. Cuando lo acabéis (tanto en el Workshop como fuera de él) me lo podéis enviar a carlos.buenosvinos@gmail.com 3. Tendremos regalitos para aquellos que lo envíen y la solución funcione. Multiple Approval, ISO Certification ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This scenario is from a current customer of the eZ Publish ECMS providing quality assurance for dairy products. The customer has information about the dairy products stored in eZ Publish. When they update any content there is a strict ISO-governed process to follow. This process basically consists of a five-level approval: phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008 - Bertrand produces an article. - Approver Level 1: Bård decides who the next four approvers are. He can also edit the article and send it back to its creator. - Approver Level 2: Melissa reviews the article for political correctness. She can edit the article and send it back one level. - Approver Level 3: Vidar reviews the article for sales arguments. He can edit the article and and send it back one level. - Approver Level 4: Jennifer does grammar checks on the article. She can edit the article and and send it back one level. - Publisher: Markus approves the final article and chooses the time and location for publication. It is possible to see all on-going processes for an administrator. He or she can see each article as well as its state and which person currently 12
  • 14. handles it. Employment Process ^^^^^^^^^^^^^^^^^^ This scenario is from the intranet of a current customer of the eZ Publish ECMS and is used when a new employee is hired. - One person creates an Employee object (including name, address, email, etc.). - An e-mail with a link for final approval of the employment is sent to the CEO. - Once the CEO has approved the new employment three parallel activities are started: - An e-mail to the system administrator is sent with the request to create e-mail and other accounts. phpBarcelona Workshops 2008 Motores de Workflow en PHP | 07/06/2008 The e-mail contains a link for the system administrator to click when he is done. - An automatic process is started to set up accounts on different systems. - An e-mail to the administration is sent with the request to buy new hardware for the new employee. - Once these three activities have been completed, the workflow continues. - The Employee object is published. - An e-mail with detailed information is sent to the new employee. The on-going status for all employment processes at any time is available to anyone with the appropriate permissions. 13