14.4.12

Introducción a los Artefactos UML para BPMN

Diagramas de casos de uso (Modelo conceptual)
-    UML se especializa en representar fenómenos del “mundo real”
-    Condujo al desarrollo de UML Business Modeling Profile
-    Los perfiles UML adaptan el lenguaje a las áreas específicas - tal como, modelado de negocio, o para tecnologías particulares

Preguntas prácticas

•    ¿Realmente, cuándo necesitamos un modelo de negocio?
•    ¿Cuándo solamente los modelos de casos de uso son suficientes?
•    ¿Cuál diagrama UML se debería usar para modelar un caso en particular de procesos de negocio?
•    ¿Cómo sé si hay que usar un diagrama de secuencia o un diagrama de colaboración, por ejemplo?
•    ¿Cómo se relacionan los modelos de negocio UML con otros modelos de UML (el modelo de dominio, el modelo de caso de uso, etc.)?




La descripción de un Caso de Uso debería incluir

•    Comentarios generales y anotaciones que describan el caso.
•    Requerimientos: cosas que el caso de uso debe permitir hacer al usuario.
•    Restricciones: reglas acerca de qué se puede hacer y qué no se puede hacer.
–    Pre-condiciones que deben ser verdaderas antes que el caso de uso “esté corriendo”, por ejemplo, <crear pedido>  debe preceder a <modificar pedido>
–    Post-condiciones que deben ser verdaderas una vez que el caso de uso “esté corriendo”, por ejemplo, <pedido es modificado y es consistente>
–    Invariantes: estas deben ser siempre verdaderas, por ejemplo, un pedido siempre debe tener un número de cliente.

•    Escenarios: descripción secuencial de los pasos necesarios para llevar adelante el caso de uso. Puede incluir múltiples escenarios.
•    Diagramas de escenario: diagramas de secuencia similares a los workflow, pero representados gráficamente.
•    Atributos adicionales: tales como fases de implementación, número de versión, grado de complejidad, estereotipo y estatus.

Especificación de un Caso de Uso

•    Límites: Cuándo empieza y cómo termina el Caso de Uso.
•    Interacciones: Comportamiento de Actores y Sistema. Acción-Reacción dentro del Caso de Uso.
•    Masa: Conjunto de Objetos e Interfaces que requiere el Caso de Uso.
•    índice de escenarios: Flujo principal de eventos y secuencia de variaciones posibles dentro de un Caso de Uso.
•    Excepciones: Contingencias probables que pueden afectar al flujo de los eventos y son excepciones del Caso de Uso.

30.3.12

Caso de National Merchandising

Caso de estudio

Nacional Merchandising recibe por correo las facturas de sus vendedores. Todas las mañanas el gerente de la oficina de correos, Ross Manning, envía a Ginny Anderson todas las facturas y correspondencia dirigida  al departamento de cuentas por pagar. Anderson, que es asistente, acumula las facturas recibidas durante la semana en un fólder. El jueves las revisa y añade la cantidad adeudada junto con el número de factura en la tarjeta correspondiente al vendedor (un registro manual de todas las transacciones contables para un vendedor en particular). Las facturas se guardan por orden alfabético en un gabinete de archivos.

Los cheques de pago de los vendedores se elaboran y firman los días viernes. Harry Demming, gerente del departamento de cuentas por pagar, revisa todas las cuentas y facturas pendientes para determinar cuáles deben pagarse. Elabora el cheque y al mismo tiempo anota el monto del cheque y los números de las facturas que ampara en la chequera. Esta información también se asienta en la tarjeta de registro del vendedor.

Los cheques se envían al contralor, Ann Williams, en un lote al que se anexan las facturas. Ella revisa y firma cada cheque. En algunos casos no autoriza el pago y regresa a Harry el cheque sin firmar.

Los cheques ya firmados se colocan en un sobre y son remitidos a la oficina de correos para que ésta se encargue de enviarlos a los vendedores.

Análisis

La oficina de correos
•    recibe por correo las facturas de sus vendedores (oficina de Correos)
•    Selecciona la correspondencia y las facturas dirigidas a “cuentas por pagar” y se las envía a (Ginny Anderson)
Cuentas por pagar
•    (Anderson) Acumula las facturas recibidas durante una semana en un folder
•    El jueves las revisa y añade cantidad adeudada, numero de factura en la tarjeta de registro del vendedor
•    Las facturas se guardan (en orden alfabético) en un gabinete de archivos
•    Los días viernes se elaboran y Firman los Cheques de pago
•    (Harry, el gerente revisa las cuentas y las facturas pendientes, para determinar cuáles debe pagarse.
•    Elabora el cheque y al mismo tiempo anota el monto del cheque y los números de las facturas que ampara en la chequera, esto también se asienta en la Se
•    Los cheques se envían al contralor, Ann Williams, en un lote al que se anexan las facturas
Contraloría
•    (Ann) Revisa las cuentas
•    Si Valida el pago,  firma el cheque, si no valida el pago, regresa el cheque a Cuentas por pagar (Harry).
•    Los cheques ya firmados se colocan en un sobre y son remitidos a la oficina de correos para que ésta se encargue de enviarlos a los vendedores.

26.3.12

CAMBIOS BPMN 2.0


CAMBIOS BPMN 2.0


BPMN 2.0
¿Qué diferencias tiene con la versión anterior?

El futuro inmediato del BPMN ha dado  un punto de experiencia entre usuarios y vendedores que permitió, mediante feedback, afinar detalles de la especificación, en concreto.

En esta nueva versión de mantenimiento del BPMN existe un esfuerzo en estandarización de los artefactos para soportar modelado de negocios generales y dominios de negocios verticales (seguros, manufacturación, finanzas). Además, está intentando encajar en un mayor contexto de modelado de negocios de alto nivel (incluyendo reglas de negocio y estrategias de negocio).

En la nueva versión de BPMN 2.0 existen actualizaciones y nuevos elementos, de los cuales se pueden resaltar:

2.1 Nuevos componentes:

Choreographies
Diagrama de Coreografía (Choreographie)
Diagrama de Conversación (Conversation)


2.2 Actualizaciones:

Gateway
Exclusivo
Paralelo
Semántica: Se pueden encontrar en el inicio de un proceso.


Tasks
Event- Subprocess (Usado para manipular los eventos que ocurren en la delimitación subprocesos)
Actividad secuencial de varias instancias
Tareas de Reglas de Negocio (BusinessRules)
Artifacts
Data Objects
Events
Eventos interrumpidos y NO interrumpidos
Escalada
Si una escalada sucede, el siguiente nivel de responsabilidad será involucrado


2.3  Nuevos conceptos:


2.3.1    Business Rule Task

El Business Rule Task Proporciona un mecanismo, en el que a partir de un motor de reglas de negocio se puede enviar (Input) y recibir (Output) data. Es decir, de acuerdo a las reglas del juego.

2.3.2    Service Task

El Service Task es una tarea que utiliza algún tipo de servicio. Como por ejemplo un Web Service  o una aplicación automatizada. Los Inputs del Service Task se asignan al mensaje de entrada, vale decir a los atributos dentro del mensaje. Por un WSDL (Web Services Description Language),  en donde sería expresado como parte del mensaje.


2.3.3    Callable Element

Es  la clase abstracta de todas las “Super Actividades” que se han definido al margen de un proceso o coreografía, pero que se puede llamar (o reutilizar) desde dentro de un proceso o coreografía. Además, hace referencia a las operaciones del servicio que realiza.

2.3.4    Call Activity

Identifica un punto en el proceso donde un  Global Process o un Global Task  es utilizado. Asimismo, éste actúa como un “envoltorio” (wrapper)  para la invocación de un Global Process o un Global Task  dentro de la ejecución.

2.3.5  Global Task

Es una Definición de tarea atómica y reutilizable que puede ser llamada desde cualquier proceso por un Call Activity.

9.12.11

Package Calculadora

create or replace package pkgCalculadora is
 function suma(p1 number, p2 number) return number;
 function resta(p1 number, p2 number) return number;
 function multiplica(p1 number, p2 number) return number;
 function divide(p1 number, p2 number) return number;
end pkgCalculadora;

create or replace package body pkgCalculadora is
procedure imprime (pvalor number) is
begin
 dbms_output.put_line('Resultado: '|| pvalor);
end imprime;
function suma(p1 number, p2 number) return number is
Begin
 imprime(p1+p2);
 return p1+p2;
End suma;
function resta(p1 number, p2 number) return number is
Begin
 imprime(p1-p2);
 return p1-p2;
End resta;
function multiplica(p1 number, p2 number) return number is
Begin
 imprime(p1*p2);
 return p1*p2;
End multiplica;
function divide(p1 number, p2 number) return number is
Begin
  imprime(p1/p2);
  return p1/p2;
 EXCEPTION
  when Zero_divide then
   dbms_output.put_line ('Error !! Division por Cero');
End divide;
end pkgCalculadora;


declare
 r number(10);
begin
 r := pkgCalculadora.suma(2, 3);
end;

Trigger Para Actualizar Stock

create table Producto(idPro integer primary key, nombre varchar2(25), stockActual integer);
create table Compra(idCompra integer primary key, fecha date);
create table DetalleCompra(Cantidad integer, idCompra references Compra, idPro references Producto);

begin
insert into producto values(1,'Plasma',5);
insert into producto values(2,'MiniComponente',3);
insert into producto values(3,'Dvd',2);
insert into producto values(4,'Lavadora',5);
end;

begin
insert into Compra values(1,'06/06/2011');
insert into Compra values(2,'05/02/2010');
insert into Compra values(3,'05/02/2010');
insert into Compra values(4,'06/03/2012');
end;

begin
insert into DetalleCompra values(6,2,3);
insert into DetalleCompra values(8,1,4);
insert into DetalleCompra values(5,3,2);
insert into DetalleCompra values(7,4,1);
insert into DetalleCompra values(10,2,2);
end;

create or replace trigger actualizaStock
after insert on detalleCompra
for each row
begin
update Producto
set stockActual = stockActual + :new.cantidad
where idPro = :new.idPro;
end;

create table merma(idMerma integer, fecha date, idProducto integer, cantidad integer)
insert into merma values(1, '24/09/2009', 1, 10)
insert into merma values(2, '04/08/2109', 2, 3)

create or replace trigger cantidadMerma
after insert on merma
for each row
begin
update Producto
set stockActual = stockActual - :new.cantidad
where idPro = :new.idProducto;
end;