The online documentation is produced by a web publishing technology created by us to read the documents origins in OpenOffice Writer (ODT) and Microsoft Word (docx) formats and produces native web and PDF versions. In this way we maintain Louder project documentation update and in sync on each of its formats.
Este componente da la posibilidad de implementar meta-procesos usando BPEL, de esta forma se busca la optimización y mejoramiento de procesos de negocio en una aplicación desarrollada usando Kumbia Enterprise.
Actualmente el lenguaje PDL (basado en el jPDL) es soportado por este componente con el cual se puede expresar procesos de negocio en terminos de tareas, estados de espera, comunicación sincronica, etc.
El componente permite su integración con otros componentes permitiendo levantar configuración, establecer persistencia, identificación, etc.
¿Que es un proceso de negocio?
Un proceso de negocio es un conjunto de actividades estructuradas y relacionadas que tienen como objetivo prestart un servicio que satisfaga las necesidades de un cliente. Los procesos de negocio son críticos para las organizaciones y su correcta estructuración y definición determina el éxito de una organización.
¿Qué es BPEL?
BPEL es un lenguaje de orquestación de servicios web. Los lenguajes de orquestación implicitamente indican la intervención ó la facilidad de comunicación entre diferentes sistemas que puedan tener diferentes plataformas e infraestructura de sistemas.
Job Executor
El componente BusinessProcess ofrece un entorno de ejecución para PHP que permite ejecutar procesos PDL ya sea para orquestar servicios ó ejecutar procesos funcionales.
Crear un Proceso de Negocio
Un proceso de negocio se especifica utilizando una estructura XML que representa los estados del meta-proceso. Cada uno debe contener un estado inicial y uno final que indique donde empezar y donde se debe terminar.
En el siguiente ejemplo se ilustra un proceso BPM de un sistema de punto de venta (POS). El estado inicial del proceso se marca con el nodo "start-state". Es sencillo seguir el flujo del meta-proceso gracias a los nodos "transition" que transfieren el flujo de ejecución de un nodo a otro.
Un meta-proceso soporta los siguientes tipos de nodos:
Tabla: Tipos de nodos de un meta-proceso PDL
Tipo Nodo
Descripción
state
Representa un estado del proceso. Los estados deben tener un nombre que permite identificarlos unívocamente en toda la definición del proceso y así generar una transición a ellos. Este tipo de nodos contienen nodos hijos que conrresponden a las actividades realizadas por el estado. El nombre del estado se define con el atributo "name".
transtion
Este tipo de nodo permite realizar una transición a otro estado del proceso. Dependiendo del proceso la transición puede ser condicional, en estos casos se implementarán 2 nodos de transición seguidos con el atributo "condition" definido. La primera transición cuya evaluación resulte verdadera sera quien realice la transición. El nodo a recibir el flujo de ejecución se especifica con el atributo "to".
decision
Los nodos "decision" permiten efectuar saltos condicionales usando transiciones. El parámetro "handler" indica el nombre de un método en el proceso PHP asociado al meta-proceso que tiene como objetivo cargar las condiciones para la evaluación en las transiciones siguientes.
task
Este tipo de nodos tienen un handler que referencia un método en el proceso PHP asociado y normalmente es usado para realizar una operación de negocio parte del meta-proceso.
task-node
Cuando se requiere ejecutar varios nodos "task" se usa un "task-node" el cual permite asociar varias operaciones de negocio dentro de un estado del meta-proceso.
Crear los handlers del BusinessProcess
Un proceso de negocio debe ser definido el cual realizará la carga de la definición PDL para su posterior ejecución:
Ejemplo: Crear una clase de proceso de negocio BusinessProcess
<?php
class PedidoProcess extends BusinessProcess {
/**
* Inicializar el proceso de negocio
*
*/
public function initialize(){
$processDefinition = ProcessDefinition::parseXMLFile("apps/pos/test/pedido.xml");
$processInstance = new ProcessInstance($processDefinition, $this);
$processInstance->signal();
}
}