# XPDL

XPDL (XML Process Definition Language) es un lenguaje para la definición de un Flujo de trabajo.
Fue creado por WfMC en el año 2001 y el 3 de octubre de 2005 se liberó la versión 2.0.

## Definición

XPDL es un formato de archivo basado en XML que puede ser usado para intercambiar modelos de procesos de negocio entre distintas herramientas. Es un formato de archivo que representa el “dibujo” de la definición del proceso. Tiene el tamaño y las coordenadas X e Y del nodo. Tiene un concepto de líneas que señalan el camino a seguir. Los nodos y las líneas tienen atributos que pueden especificar información ejecutable tales como roles, descripción de actividades, temporizadores, llamadas a web services, etc. XPDL 2.0 contiene extensiones para ser capaz de representar todos los aspectos de BPMN (BP Modelling Notation).

## WfMC

Fundada en 1993, la Workflow Management Coalition (WfMC) es una organización global formada por desarrolladores, consultores, analistas, grupos universitarios y de investigación comprometidos con el workflow y BPM.

## Objetivos

El objetivo de XPDL es almacenar e intercambiar el diagrama de procesos. Permite que una herramienta de diseño de procesos escriba un diagrama y otra lo lea, y la imagen resultante sea lo más parecida posible. Sin embargo, no otorga garantía de semántica de ejecución precisa.

## Aclaratoria

La mayoría cree que estos tres estándares compiten entre sí, cuando la realidad es muy diferente.
* BPMN
* XPDL
* BPEL

### BPMN

BPMN implementa una notación de modelo para procesos, concretamente el conjunto original de especificaciones propuestas por BPMI (Business Process Managment Iniciative), ahora parte del OMG (Object Management Group). Se trata de una notación gráfica de los pasos y actividades de un proceso de negocio. Modela tanto la secuencia de actividades como los datos o mensajes intercambiados entre los distintos participantes. BPMN no está pensado para modelar aplicaciones, sino procesos que correrán dentro de dichas aplicaciones. Por ello, la salida de BPMN necesita ser expresado en algo que no sea un lenguaje programático. Es aquí donde entra en juego BPML (metalenguaje desarrollado por BPMI). Así, a través de BPML disponemos de la traducción de un formato gráfico (para ser leído por personas) a un formato legible por máquinas (y permitir el intercambio entre distintas herramientas). En ausencia de BPML, nos encontramos con BPEL y XPDL como soluciones a esa traducción:

### XPDL

XPDL, por su lado, especifica un formato de diseño de los procesos. Permite una representación gráfica de los procesos incluyendo coordenadas X e Y para cada nodo implementado. Además, los nodos pueden especificar atributos tales como roles, descripción de actividades, timers, llamadas a servicios web, etc… Suele ser preferido cuando se trata de implementar procesos o workflows con interacciones humanas, ya que en esto supera a BPEL (para soportar interacciones humanas, BPEL necesita de añadidos a la especificación, lo cual dificulta su portabilidad ya que suelen ser implementaciones propietarias de cada proveedor). El objetivo de XPDL es almacenar y permitir el intercambio de diagramas de procesos. Intenta ofrecer una manera estándar para representar procesos de tal manera que puedan ser importados/exportados por cualquier editor que implemente el estándar. XPDL 2.0 tiene extensiones que permite representar todos los aspectos de BPMN.

### BPEL

BPEL es un lenguaje ejecutable con sus variables y operaciones. Las operaciones permiten enviar y recibir mensajes SOAP y tiene un gran soporte para XML y transformaciones XML. Además, permite de manera fácil invocar múltiples servicios web al mismo tiempo y sincronizar los resultados. BPEL no tiene soporte gráfico; es decir, no especifica como deben ser los diagramas interpretativos de los procesos que define. El objetivo de BPEL es ofrecer una forma de orquestar servicios web, la secuencia de interacciones subyacente y el flujo de datos punto a punto.

### Análisis

BPEL y XPDL no son competidores entre sí, ya que pueden ser complementarios según el uso que se haga de ellos. De hecho, a partir de un modelo BPMN podemos pasar a un proceso BPEL ejecutable por un motor de una herramienta. Igualmente a partir de un proceso BPMN podemos obtener una implementación XPDL (de hecho, desde la versión XPDL 2.0 esto es inmediato en ambos sentidos) que puede ser ejecutada por algunos motores de forma nativa. La desventaja del paso de BPMN a BPEL es que no siempre se puede hacer el camino inverso (lo que dificulta la exportación/importación entre herramientas). Pero tampoco hay una necesidad imperiosa de ello: BPEL y XPDL están pensados para cosas distintas; pero pueden ser complementarias si se utilizan de esa manera.

## Ejemplo
### Diagrama BPMN

Hay tres nodos en el diagrama: un nodo start, un nodo actividad y un nodo de salida. En XPDL todos los nodos son representados con una etiqueta <Activity>.
Cada actividad tiene un nombre y un ID que debe ser único. El detalle de las actividades se ha omitido para que se pueda ver la estructura general básica.
Las dos flechas son almacenadas en la etiqueta <Transition>.
Estas son fundamentalmente las partes más importantes de un archivo XPDL. Por ejemplo, el detalle de una sola transición sería:

## Intercambio entre herramientas BPMS

A raíz de la evolución de BPMN y sus formatos XML de almacenamiento, puede ser posible una integración entre Soluciones BPM a un nivel de modelos de procesos de negocio. [1] La mayoría de las soluciones BPM tienen en común el empleo de BPMN para modelar los procesos de negocio y su serialización en ficheros XML. Aunque cada fabricante emplea por lo general su propia serialización XML de diagramas, son muchos los que se están acogiendo al estándar XPDL.