Reglas de Contenido: Content Rules!

Feb 25, 2008 04:53 PM
Plone3 agrega una funcionalidad muy útil para administrar contenido de forma automática, vía web y sin escribir código.

Reglas de contenido

Las reglas de contenido permiten realizar tareas de forma automática. Asumiendo que una regla está activa, dado cierto evento y si se cumplen ciertas condiciones, Plone realiza automáticamente ciertas acciones. Por ejemplo, "cada vez que un usuario agrega un contenido dado, digamos una noticia, se tiene que enviar un mail a una dirección de correo determinada".

En el ejemplo:

  • Evento: "agrega contenido al portal"
  • Condición: "Tipo de contenido = noticia"
  • Acción: "enviar mail a la dirección dada"

Estas acciones se pueden asociar a una carpeta predeterminada y opcionalmente incluir sus subcarpetas. Es decir, luego que se asocia una regla a una carpeta, cada vez que ocurra el evento definido en esta, se ejecutará la acción.

Esto tipo de funcionalidad es posible de obtener programaticamente, pero con las reglas de contenido un usuario no-programador, puede emplear eventos, condiciones y acciones provistas por Plone para definir sus propias reglas vía web.

Baterías incluídas

Plone trae de fábrica un conjunto de eventos, condiciones y acciones para que el usuario pueda definir sus propias reglas:

Eventos o disparadores

Los eventos que soporta Plone para definir reglas de contenido son:
  • Objeto agregado a un contenedor, ejemplo cuando se agrega contenido a una carpeta.
  • Objeto modificado, ejemplo cuando se modifica una noticia.
  • Objeto borrado de un contenedor, una noticia borrada de una carpeta dada.
  • Cambio en estado de workflow, ejemplo, cuando se cambia el estado de un documento de visible a público.

Condiciones

  • Tipo de contenido, ie es igual a uno o tipos de contenido dados
  • Extensión de archivo, ejemplo, pdf, ps, xls, etc.
  • Estado de workflow, ejemplo, público, privado, etc.
  • Grupo de usuario
  • Rol de usuario

Acciones

  • Logger, escribe un mensaje en el log del sistema.
  • Notify user, muestra un mensaje vía web al usuario del sistema.
  • Copy to folder, copia a una carpeta el objeto que disparó la regla.
  • Move to folder, mueve a una carpeta el objeto que disparó la regla.
  • Delete object, borra el objeto que disparó la regla.
  • Transition workflow state, cambia el estado del objeto respecto al workflow.
  • Mail action, envía un correo electrónico a una dirección de correo predefinida.

¿ Y si necesito otras nuevas ?

Se agregan, en plone.org se puede seguir un excelente tutorial de Martin Aspeli para programar nuevas reglas de contenido, este tutorial está disponible en español en labs.menttes.com.

¿ Algún proyecto está usando reglas de contenido ?

Claro, paab (plone as a blog) es el producto plone que usa este sitio. Paab hace uso de las reglas de contenido para implementar dos funcionalidades:

  • Default display (plip#7)
    Disparador: objeto agregado a un contenedor
    Condición: tipo de contenido = carpeta
    Acción: *nueva* crear una colección dentro de la carpeta creada, agregar ciertos criterios a la colección, definir la colección como vista por defecto.
  • Default keyword (plip#8)
    Disparador: objeto agregado a un contenedor
    Condición: tipo de contenido = blog item que en paab no es otra cosa que una noticia con el título renombrado
    Acción: *nueva* si la categoria o tag de la noticia es vacia se usa el nombre de la carpeta como tal

En español, default display se dispara cuando se crea una carpeta nueva en el portal, y agrega una colección con ciertos criterios y tal colección es la vista por defecto de la carpeta. Default keyword agrega una categoria a un blog post en caso que se agregue uno al sitio y no se de ningún tag.

Reglas de contenido versus scripts y hacerlo programaticamente

Si la regla que necesito no es provista por Plone y tengo que programarla, uno se puede preguntar si tiene sentido o no hacer la funcionalidad con el formato de regla de contenido. En mi opinión, creo que vale la pena tomarse el trabajo porque:

  • Una regla de contenido es muy facil de activar y desactivar desde la web. Sea uno desarrollador o usuario. Esto puede ser muy útil a la hora de depurar código.
  • Las reglas de contenido son mas generales que cualquier script de un tipo de contenido. Es decir, una regla puede programarse una vez y aplicarse a cualquier tipo de contenido bajo culquier condición dada. Un script empleando eventos zope probablemente requiera menos líneas de código pero, para detectar una funcionaliad mágica como es en estos casos, es necesario leer mucho código y por cada condición que se quiera agregar hay que modificar o reproducir líneas de código en otras clases.
  • Si se sigue las prácticas sugeridas en el tutorial, una regla de contenido es mucho mas reusable. No solo dentro de un tipo de contenido o portal. sino entre diferentes productos o proyectos.
  • Desde un panel se pueden listar todas las reglas mágicas que se están aplicando a un portal. Tener esa vista general con muchos scripts en diferentes lugares es mucho mas complejo.

Y esta vez la documentación no es excusa. Agregar nuevas reglas de contenido no agrega mucha complejidad a la hora de programar y realmente vale la pena.

Comments (0)