Workflows On Rails

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite & 1 Event

    Workflows On Rails - Presentation Transcript

    1. Diego Moreno Naharro Universidad Politécnica de Madrid Departamento de Ingeniería de Sistemas Telemáticos dmoreno@dit.upm.es
    2.  ¿Flujos de trabajo? ¿Qué son?  ¿Para qué sirven?  Alternativas en Rails  Ejemplo de aplicación
    3.  Un flujo de trabajo es una herramienta que gestiona tareas:  Orden correlativo  Asignación  Seguimiento  Sincronización  Paso de información 1 2 3 5 4
    4.  Publicación de un Post. Blog Aprobado Crear Post Revisión admin Publicación Borrado Rechazado
    5.  Publicación de un Post. Blog  Edición de documentos. Caso Alfresco Usuario Revisores Usuario Revisores Revisión Creación Edición Revisión Publicación previa Descarte
    6.  Publicación de un Post. Blog  Edición de documentos. Caso Alfresco  Gestión de incidencias. Call Center ¿Incidencias Creación Clasificación Asignación Problema similares? Solución
    7.  Publicación de un Post. Blog  Edición de documentos. Caso Alfresco  Gestión de incidencias. Call Center  Orquestación de servicios. Yahoo Pipes
    8.  Publicación de un Post. Blog  Edición de documentos. Caso Alfresco  Gestión de incidencias. Call Center  Orquestación de servicios. Yahoo Pipes  Conclusión: Herramienta que aumenta la productividad a través de  Mejora de la coordinación entre personas  Automatización de tareas
    9.  Máquina de estados  Act as state machine plugin  Tiene varios forks  Workflow plugin  Motor de flujos de trabajo (WorkFlow Engines)  OpenWFEru
    10.  Estados Intentar publicar En revisión aprobar Crear post Borrador mejorar rechazar Publicado Rechazado class Post < ActiveRecord::Base acts_as_state_machine :initial => :borrador state :borrador state :en_revision state :rechazado state :publicado …… end
    11.  Estados Intentar  Eventos Crear post publicar En revisión aprobar Borrador mejorar rechazar Publicado Rechazado event :intentar_publicar do transitions :to => :borrador, :from => :en_revision end event :mejorar do transitions :to => :en_revision, :from => :borrador end
    12.  Estados Intentar  Eventos Crear post publicar En revisión aprobar  ¡Funciona! Borrador mejorar rechazar Publicado Rechazado >> pt = Post.create(:title => „prueba‟, :body => @body) >> pt.status => “borrador” >> pt.publicado? => false >> pt.intentar_publicar! => true >> pt.status => “en_revision”
    13.  Callbacks sobre estados  Enter, after, exit state :en_revision, :enter => :check_title, :after => Proc.new {|post| post.format_body }, :exit => :tag_post
    14.  Callbacks sobre estados  Enter, after, exit  Guarding transitions sobre eventos event :aprobar do transitions :to => :publicado, :from => :en_revision, :guard => Proc.new {|post| post.right_formated?} end
    15.  Mismos conceptos, distinta sintaxis  Estados, eventos, callbacks & guards  Nuevos métodos de acceso:  Ej. listar de eventos de cada estado
    16.  Motor de flujos de trabajo open source  Historia  Empezó como OpenWFEja en 2001  Paso a OpenWFEru en 2006 (John Mettraux)  Disponible como plugin y gema  Nombre de batalla: ruote  Subproyecto: ruote-web
    17.  Programar lo menos posible  Elección de ruby  Definición de procesos fuera del programa  Lenguaje de definición  Basado en XML  Más sencillo que XPDL y BPEL
    18. Usuario Interfaz web ruote-web Ruby on Rails Motor ruote Ruby *.xml || *.rb XML, Ruby
    19. participante participante participante participante  Workitems  Participantes  Con Interacción humana  Usuarios y roles.  Sin interacción humana (automáticas)  Escribir a archivo, envíar un correo, llamada SOAP, mensaje twitter, envío AtomPub.
    20. Empleado Encargado Empleado Petición de vacaciones Jefe class VacationRequest0 < OpenWFE::ProcessDefinition set :v => \"employee\", :value => \"${f:launcher}\" set :f => \"from_date\", :value => \"\" set :f => \"to_date\", :value => \"\" set :f => \"reason\", :value => \"\" sequence do participant :employee set :f => \"granted\", :value => \"false\" set :f => \"boss_should_have_a_look\", :value => \"false\" participant :assistant
    21. Empleado Encargado Empleado Petición de vacaciones Jefe participant :boss, :if => \"${f:boss_should_have_a_look}\" participant :employee end end
    22. Empleado Encargado Empleado Petición de vacaciones Jefe <process-definition name=\"vacation_request\"> <sequence> <set variable=\"employee\" value=\"${f:launcher}\" /> <set field=\"from_date\" value=\"\" /> <set field=\"to_date\" value=\"\" /> <set field=\"reason\" value=\"\" /> <participant ref=\"employee\" /> <set field=\"granted\" value=\"false\" /> <set field=\"boss_should_have_a_look\" value=\"false\" /> <participant ref=\"assistant\" />
    23. Empleado Encargado Empleado Petición de vacaciones Jefe <if test=\"${f:boss_should_have_a_look}\"> <participant ref=\"boss\" /> </if> <participant ref=\"employee\" /> </sequence> </process-definition>
    24.  Expresiones  4 expresiones básicas: process-definition, participant, secuence, concurrence.  Bucles: while, loop.  Llamadas a subprocesos: subprocess.  Control de hilos: sleep, wait.  Lenguaje conciso  Sin ruido de “posición de caja y flecha”  Cumple los principales patrones de los flujos de trabajo  http://www.workflowpatterns.com
    25.  Hace su trabajo  Ofrece un API para niveles superiores
    26. class CustomParticipant < OpenWFE::LocalParticipant def initialize Interfaz web super() end # This is the method called by Twitter # the OpenWFEru engine to hand Workflow # a workitem to this SOAP engine Custom # participant. def consume(workitem) # Tu código end end Flujos
    27.  Es una librería JavaScript  fluo-can: dibuja definiciones de procesos  fluo-tred: edición online de definiciones de procesos  Una opción más además de: XML y Ruby.
    28.  Usa la gema Sinatra  Recursos: processes / errors / workitems  Interfaz:  Lanzar proceso: POST /processes  Cancelar proceso: DELETE /processes/id Motor de Aplicación Usuario workflow Web
    29.  Sencilla demostración de lo que se puede hacer con ruote  Demo online: http://difference.openwfe.org:3000/  Permite:  Gestión de usuarios  Subir y lanzar procesos  Uso de formularios para pasar de tarea  Edición parcial de procesos al vuelo  Carencias:  Sin interfaz REST  Filosofía Rails 1.2
    30.  Mejoras:  RESTFul  RESTFul Authtentication  Interfaz REST para el motor (XML/JSON/Atom)  Mejoras en la edición al vuelo  OpenID y OAuth  Primera beta: noviembre 2008
    31.  Ruote  Ruote-web  Ruote-fluo  Fluo-can  Fluo-tred  Ruote-rest  Ruote-web2
    32.  Plataforma de colaboración para desarrolladores  RESTFul  “cajitas propias”: Correo electrónico, notificaciones, eventos  Extensión del lenguaje para generación dinámica de formularios  Representación Atom de los recursos  Cliente Flex  Futuro: Internacionalización, editor gráfico de flujos  ¡Demo! http://demo:3000
    33. ¡Gracias! ?? || ##

    + Diego MorenoDiego Moreno, 2 years ago

    custom

    1471 views, 1 favs, 0 embeds more stats

    Visión sobre los flujos de trabajo (workflows) des more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1471
      • 1471 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 19
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Groups / Events