Professional Documents
Culture Documents
Camunda BPM
7.2
Camunda BPM
components
Business
Analyst
Business
Modeler
Business User
Tasklis
t
Custom
Application
Cockpit
REST / Java
REST
REST
Cycle
REST / Java API
Developer
File Repository
Engine
Eclipse
Modeler
Database
Design Time
Operations
(technical/business)
Runtime
Modeler
User
Tasklist / Your
UI
Engine
Camunda BPM platform
Operator
Cockpit
Passion
Productivity
No Vendor-LockIn
Black Box
BPM-Suite
Real-Life @docs.camunda.org
Example
s
Tasklist
Connectors / Data /
Scripts / Templates
Cockpit
Tasklist
Connectors / Data /
Scripts / Templates
Cockpit
What is Tasklist?
Tasklist 7.2
The tasklist is the central point of
contact for business users with the BPM
platform and is therefore an essential
component. The innovative
implementation of the Camunda tasklist
matches the DAB bank's web technology
stack perfectly and saves extensive inhouse development. The functionality is
optimally aligned to the Camunda BPM
platform and due to its fexible
adaptability also fulflls the needs of a
bank.
Karl Brandner, Chief Architect
Live Demo
Technical Architecture
Camunda
JavaScript Forms
SDK
AngularJS
Twitter Bootstrap
RES
T
Camun
da
Backe
nd
Angular JS
AngularJS es un framework de JavaScript de cdigo abierto,
mantenido por Google, que ayuda con la gestin de lo que se
conoce como aplicaciones de una sola pgina. Su objetivo es
aumentar las aplicaciones basadas en navegador con
capacidad de Modelo Vista Controlador (MVC), en un esfuerzo
para hacer que el desarrollo y las pruebas sean ms fciles.
La biblioteca lee el HTML que contiene atributos de las
etiquetas personalizadas adicionales, entonces obedece a las
directivas de los atributos personalizados, y une las piezas de
entrada o salida de la pgina a un modelo representado por las
variables estndar de JavaScript. Los valores de las variables
de JavaScript se pueden configurar manualmente, o
recuperados de los recursos JSON estticas o dinmicas.
16
Angular JS
17
Twitter Bootstrap
Twitter Bootstrap es un conjunto de clases CSS que podemos
usar para darle estilo a nuestro sitio Web. Bootstrap es una
herramienta muy completa y personalizable, la cual hace que
cientos o miles de pginas web la utilicen.
18
Camunda
JavaScript Forms
SDK
RES
T
Camund
a
Backen
d
The< /for
Forms
SDK optionally integrates with
m>
AngularJS to take advantage of
AngularJS form validation and other AngularJS
goodies.
More: https://github.com/camunda/camunda-bpm-sdk-js
Tasklist
Connectors / Data /
Scripts / Templates
Cockpit
The paradigm
DeveloperFriendly
System
Camunda
Integration
vs.
Death by
Property
Panel
Zero-Code BPM
Suites
Custom
er,
Address
XML
or
JSON
Databas
e
Advantages:
Anyone can directly inspect Java objects in the
database and Cockpit
It is easier to set up polyglot architectures (e.g.
Java + Javascript)
Live Demo
Advantages:
Directly access XML or JSON within the
process via APIs
No need to convert XML or JSON into Java
Objects
Connectors
Connectors
Simple API for implementing Connectors as reusable
Components
Included with Camunda 7.2: SOAP and REST (both based
on Apache
HTTP Client)
Fundamentally different approach than Zero-Code
Suites:
Developer become more productive its not about
empowering Business
Analysts
However not every developer speaks Java
Primary Target Group: IT divisions that want to provide a
workflow
infrastructure for their organization (other IT teams)
Focus on API instead of Properties
A powerful combination
Data
Connect
ors
Scripti
ng
JSON
RES
T
Javascri
pt
Tasklist
Connectors / Data /
Scripts / Templates
Cockpit
Cockpit Plugins
https://github.com/camunda/camunda-bpm-examples/
Showing:
Running
Incidents
Started in last 2 hours
Running longer than
24 hours
39
Wildfly
WildFly representa una actualizacin del proyecto y a la vez
una renovacin de su visin de impulsar la prxima generacin
de tecnologas de servidor de aplicaciones.
Esta tecnologa continuar sirviendo como proyecto de
desarrollo preliminar de JBoss Enterprise Application Platform
de Red Hat y se centra en algunas de las principales fuerzas
que plasman el middleware hoy en da, incluso el cambio hacia
enfoques ms flexibles y modernos para el desarrollo de
aplicaciones, la habilitacin de nubes hbridas abiertas y Java
Enterprise Edition 7 (Java EE 7).
40
Wildfly 8
concentra la atencin en la rpida obtencin de la
especificacin Java EE 7 que aporta simplicidad,
estandarizacin e integracin tanto para los escenarios de
desarrollo de nubes como de dispositivos mviles.
La especificacin Java EE7 incluye WebSockets y mejoras en
Contextos e Inyeccin de Dependencia (CDI).
41
42
bin:
contiene SCRIPTS, configuracion inicial de archivos y varios
comandos de linea utiles el : vault.sh, add-user.sh.Las otras
carpetas(service, init.d) son usadas respectivamente para
instalar Wildfly tanto como un servicio de Windows y Linux.
docs/schema:
contiene el SCHEMA XML de definiciones.
docs/examples/config:
contiene algunas configuraciones en solitario (tal como
standalone-minimalistic.xml).
43
modules:
contiene todos los modulos ....
standalone:
Contiene el archivo de configuracion , contenido del
despliegue,y areas escribibles usadas por el servidor en
solitario corriendo para nuestra aplicacion..
welcome-content:
contains content related to the default (ROOT) web application.
44
REGLAS
DE NEGOCIO
45
Parametrizacin?
46
47
48
Niveles de Decisin?
Esa es una buena. Necesita proporcionar ciertos niveles de
decisin al usuario. Un sistema mas parametrizable significa
mas decisiones para el usuario. Esto no necesariamente
significa ms complejidad. Porque la complejidad depender
bsicamente de la complejidad inherente del problema y la
complejidad que le das en la solucin.
Debe dar al usuario ciertos niveles de decisin, es decir, no
todo tiene que venir como una peticin de desarrollo. Bueno yo
hago eso, tengo pantallas que el usuario escoge como van a
ser ciertas cosas en el sistema. El problema es que este
enfoque puede ser costoso y no siempre claro para el usuario
49
50
51
Generalidades
Drools es un sistema de administracin de reglas de negocio
(BRMS) con un motor de reglas basado en una adaptacin
orientada a objetos del algoritmo Rete. Permite expresar de una
forma ms natural las reglas de negocio interactuando con los
objetos de negocio. Provee separacin de lgica (reglas) y
datos (hechos).
Tambin provee soporte para la programacin declarativa, y es
lo suficientemente flexible para expresar la semntica del
problema con un lenguaje especfico de dominio (DSL).
Drools cuenta con la implementacin completa de la JSR-94
Rule Engine API.
52
Generalidades
Tambin existe un plug-in de Eclipse para facilitar el desarrollo
con esta herramienta.
Para especificar las reglas Drools utiliza el lenguaje de reglas
de drools (DRL), para especificar las condiciones, acciones y
funciones de las mismas, las cuales se puede expresar con
distintos lenguajes, como Java. Entonces las reglas son
guardadas en archivos de texto con la extensin drl.
Entre las opciones para definir las reglas aparte del DRL se
pueden especificar lenguajes especficos de dominio (dsl), los
cuales se asocian a un drl, y tambin existe la opcin de
especificar las reglas en una planilla de clculo, como Excel.
53
54
Reglas de negocio
Bsicamente una regla tiene dos secciones:
Condicin: Cuando la miema se cumple, la regla queda
disponible para ser ejecutada,
Consecuencia: Acciones que se deben tomar cuando se
ejecute la regla.
55
56
Restricciones de condiciones
Cuando se actualizan los datos de la Working Memory
(inserciones, modificaciones, eliminaciones), los mismos son
evaluados contra las condiciones definidas en las reglas, lo que
conlleva a que las mismas puedan activarse o desactivarse.
57
Restricciones de condiciones
Hay dos tipos de restricciones que se pueden aplicar a las
reglas:
Tipo de Objeto: Para que un objeto de la Working Memory
coincida con esta restriccin, el mismo debe ser una instancia
del Tipo de Objeto definido (Clase Java). Por ejemplo, la
siguiente restriccin:
Orden() ser vlida para todos los objetos de la Working Memory que
sean instancias de la Clase Orden.
58
Pattern Matching
Se conoce como pattern (patrn) a la restriccin por Tipo de
Objeto junto a cero o ms restricciones de Campo.
Cuando algn objeto de la memoria satisface ambas
restricciones, se dice que el objeto coincide (est matched).
Cuando hay una coincidencia (match) para todas las
condiciones de una regla se crea una Rule Match. Las reglas y
los hechos (facts) sern referenciados y aadidos a la Agenda
de Drools.
El proceso de buscar coincidencias de objetos en memoria con
los patrones de las condiciones se conoce como Pattern
Matching.
59
Pattern Matching
60
Pattern Matching
La siguiente ilustracin muestra el proceso de Pattern Matching
para una regla que ser ejecutada por cada Orden que se
encuentre en el estado Nueva.
61
Agenda
La Agenda de Drools es una coleccin de las reglas activas (se
cumplen todas sus condiciones, por lo que su consecuencia est
disponible para ser ejecutada) y es la responsable de gestionar
el orden de ejecucin de las reglas.
Cuando se disparan las reglas, Drools selecciona una de la
Agenda y ejecuta su consequencia, lo que puede derivar en ms
activaciones (o desactivaciones) de reglas. Esto sucede ya que
la consecuencia de una regla puede modificar datos de la
memoria y sto puede generar diferencias en el matcheo de
patrones. Este ciclo continuar hasta que se hayan disparado
todas las reglas activas y la Agenda se encuentre vaca. El orden
de ejecucin de las reglas puede ser modificado mediante una
configuracin de atributos de reglas, los cuales se vern ms en
la seccin Resolucin de Conflictos y posteriores publicaciones.
62
Agenda
El motor de reglas bsicamente itera sobre estas dos fases:
Acciones en tiempo de ejecucin: Ejecuta consecuencias de
reglas o el procesos main de Java.
Evaluacin de Agenda: Selecciona la regla a ejecutar.
63
Agenda
64
Resolucin de conflictos
Cuando hay Rule Matches en la Agenda se dice que hay un
conflict set y su ejecucin ser determinada por una
Estrategia de Resolucin de Conflictos (Conflict Resolution
Strategy). Hasta este momento se considera que el orden de
ejecucin es arbitrario.
El orden de ejecucin se determinar en base a la prioridad de
cada regla a ser disparada. La prioridad se puede dar mediante
el atributo salience, el cual es un valor entero (mayor valor,
mayor prioridad). El valor predeterminado para este atributo es
0, por lo tanto si no se define un valor en particular, todas las
reglas tendrn la misma prioridad (cero).
65
Resolucin de conflictos
Las reglas deben pensarse de forma independiente y su lgica
nunca debera conocer que existen otras reglas o posibles
flujos de ejecucin. Por lo tanto, no se recomienda escribir las
reglas pensando en una secuencia de ejecucin ordenada por
prioridad. Obviamente que hay excepciones, por ejemplo
cuando se desea que las reglas de inicializacin se ejecuten
antes que el resto.
Existen otras formas de alterar la secuencia de ejecucin de
reglas, como pueden ser Agenda Groups, Ruleflow Groups
y Activation Groups.
66
Inferencia
Segn la Real Academia Espaola, la accin de inferir es sacar
una consecuencia o deducir algo de otra cosa..
En otras palabras, podemos decir que inferencia es la manera de
generar nuevo conocimiento an base a conocimiento actual.
Desde el punto de vista de un Motor de Reglas, el razonamiento
o inferencia se realiza a travs de las reglas de negocio. Las
consecuencias de las reglas pueden llevar a modificacin de
hechos actuales. Esta modificacin de hechos puede llevarnos a
una nueva inferencia que incluya nuevas consecuencias. En el
mbito de Motor de Reglas tambin se conoce a inferencia a
este ciclo de modificacin de hechos que dispara nuevas
inferencias y consecuencias.
67
Knowledge Base
Se conoce como Knowledge Base al repositorio de definiciones
de conocimiento de la aplicacin (reglas, procesos, funciones,
etc). No contiene informacin de tiempo de ejecucin.
68
Session
Los datos de tiempo de ejecucun se almacenan en la sesin
(Session), la cual puede crearse desde una Knowledge Base
que contiene las definiciones de conocimiento.
Stateful Session
Una sesin con estado (Stateful Session) es la manera ms
comn de interactuar con el motor. Permite a la aplicacin
establecer una conversacin iterativa con el motor, donde el
estado de la sesin es conservado entre los distintos llamados.
Cuando una conecuencia de una regla cambia el estado de la
sesin puede provocar que se activen o desactiven distintas
reglas.
69
Session
Stateless Session
Una sesin sin estado (Stateless sessions) no permite
llamados interactivos, por lo que el motor no proporciona
inferencia (relacionada a modificacin de datos). Cada
invocacin al motor tiene su propio estado (datos), el cual ser
descartado al finalizar el llamado en curso. En realidad, una
sesin sin estado es una encapsulamiento de una sesin con
estado, el cual es descartado al finalizar la ejecucin. La sesin
tiene el siguiente ciclo de vida:
70
71
Customer name
Subtotal
Payment Method
Discount
Payment methods
Cash
Credit Card
Debit Card
Potential Customer
Customer name
Credit Limit
72
73
74
75
77
API de Drools
Para empezar, vamos a revisar algunos conceptos de Drools
mediante la lectura de su Javadoc:
KieBase: repositorio de todas las definiciones de conocimiento de la
aplicacin. Contiene reglas, procesos, funciones y tipos de dato. No
contiene datos asociados al tiempo de ejecucin, para eso se utilizan
las sesiones, las cuales son creadas en base a una KieBase. A las
sesiones se les puede insertar objetos y crear instancias de procesos.
KieModule: contenedor de todos los recursos necesarios para definir
una KieBase. Por ejemplo, un pom.xml para definir el ReleaseId, un
kmodule.xml para declarar los nombre de las KieBases y
configuraciones junto a la KieSession.
KieContainer: un contenedor para todas las KieBases de un
determinado KieModule.
KieFileSystem: sistema de archivos en memoria, utilizado para
definir programticamente los recursos que componen un KieModule.
KieBuilder: un constructor de recursos contenidos en un KieModule.
78
KieContainer
De sta forma se crea programticamente un KieContainer en Drools 6:
KieServices ks = KieServices.Factory.get();
// Create the in-memory File System and add the resources files to it
KieFileSystem kfs = ks.newKieFileSystem();
kfs.write(ResourceFactory.newClassPathResource(resourceFilePath));
// Create the builder for the resources of the File System
KieBuilder kbuilder = ks.newKieBuilder(kfs);
// Build the KieBases
kbuilder.buildAll();
// Check for errors
if (kbuilder.getResults().hasMessages(Level.ERROR)) {
throw new IllegalArgumentException(kbuilder.getResults().toString());
}
// Get the Release ID (mvn style: groupId, artifactId,version)
ReleaseId relId = kbuilder.getKieModule().getReleaseId();
// Create the Container, wrapping the KieModule with the given ReleaseId
KieContainer kcontainer = ks.newKieContainer(relId);
79
KieBase
Una vez que se construy un KieContainer, podemos crear una
KieBase:
// Configure and create the KieBase
KieBaseConfiguration kbconf = ks.newKieBaseConfiguration();
KieBase kbase = kcontainer.newKieBase(kbconf);
80
Stateless Session
Una vez creada la KieBase, creamos una StatelessKieSession:
// Configure and create the StatelessKieSession
KieSessionConfiguration ksconf = ks.newKieSessionConfiguration();
StatelessKieSession ksession = kbase.newStatelessKieSession(ksconf);
81
Stateful Session
Una vez creada la KieBase, creamos una KieSession (Stateful):
// Configure and create the KieSession
KieSessionConfiguration ksconf = ks.newKieSessionConfiguration();
KieSession ksession = kbase.newKieSession(ksconf, null);
82
Reglas de descuento
Definicin de reglas
Las siguientes reglas pertencen al archivo discount.drl. Las
mismas utilizan una variable global llamada logger, la cual
referencia a una instancia de un Logger SLFJ.
83
84
85
86
Test Cases
87
Test Cases
88
Cliente Potencial
1.- Identificar Clientes Potenciales
rule "Identify potential customers"
when
$p:Purchase(paymentMethod == PaymentMethod.CASH, subtotal > 300)
then
logger.info("\t==> Potential Customer found! " + $p);
// Create a new Potential Customer object
PotentialCustomer pc = new PotentialCustomer($p.getCustomerName(),
$p.getSubtotal()*0.80);
// Insert the Potential Customer object into the Working Memory
insert(pc);
end
89
Cliente Potencial
90
Cliente Potencial
91
BIRT
BIRT Designer
Designer
Eclipse
Eclipse
Designer
Designer
Eclipse
Eclipse
DTP,
DTP,
WTP,
WTP,
Chart
Chart
Designer
Designer
Design
Design Engine
Engine
XML
Design
Document
BIRT
BIRT Engine
Engine
Data
Data
Generation
Generation
Services
Services
Charting
Charting
Engine
Engine
Data
Data
Services
Services
Presentation
Presentation
Services
Services
HTML
PDF
Excel
Word
PowerPoint
PostScript
98
Real-Time Data
99
Real-Time Analytics
100
Full-Text Search
101
102
103
104
105
106
Sophisticated Analytics
107
Mayta-eSurvey
108
Q&A
Gracias!
Alguna pregunta?