Camunda@1&1

Preview:

Citation preview

camunda BPM @ 1&1

Philipp Grimm, Peter Hachenberger

Service and Process Platform (SPP)

® 1&1 Internet AG 2013 2

Tool chain for process automation

3

Process

Modeling

Signavio

Process

Export

PCP

Process

Development

BuSyWizard,

PSI

Build RunPlan

Configuration

Management

Puppet

Operating

System

Unitix

Process

Execution

S+P Platform

Process

Monitoring

PCC

Process

Operating

PIS

Platform

Monitoring

RHQ &

Nimsoft

Modeling in Signavio

4

Process Cylce Plugin

5

PC

P

Eclipse project from Archetype

6

public API for process start

facade for process start

test

adaptors, java code

transformed process,

configuration

Archetype

Process Starter

public String startOrderService() {final Map<String, Object> variables = new HashMap<String, Object>();final Map<String, String> businessKeys = new HashMap<String, String>();

String processInstanceId = ProcessStarter.startProcessInstance(„orderProcess_2_1, variables, businessKeys);

return processInstanceId;}

7

Setzen von SPP Business Keys

Asynchroner Start

ExceptionHandling der Plattform vom ersten Knoten

Process Service Invocation (PSI)

8

Two-way

Correlation

Variable Injection

Service Injection

Abstraction from Engine

PSI: Used interfaces

9

PSI Request Adapter

@Correlation(correlationIdReference = "HELLO_WORLD_CORRELATION")public class CheckHelloWorldRequestAdapter implements ServiceRequestAdapter{

@Service(type="ejb3") private HelloWorldBeanFacade externalService;

@Variableprivate String callInfo;

@CorrelationIdprivate String correlationId;

@Overridepublic void callService() throws Exception {

externalService.doSth(callInfo, correlationId);}

}10

implemented PSI

request interface

PSI Request Adapter

@Correlation(correlationIdReference = "HELLO_WORLD_CORRELATION")public class CheckHelloWorldRequestAdapter implements ServiceRequestAdapter{

@Service(type="ejb3") private HelloWorldBeanFacade externalService;

@Variableprivate String callInfo;

@CorrelationIdprivate String correlationId;

@Overridepublic void callService() throws Exception {

externalService.doSth(callInfo, correlationId);}

}11

correlation

PSI Request Adapter

@Correlation(correlationIdReference = "HELLO_WORLD_CORRELATION")public class CheckHelloWorldRequestAdapter implements ServiceRequestAdapter{

@Service(type="ejb3") private HelloWorldBeanFacade externalService;

@Variableprivate String callInfo;

@CorrelationIdprivate String correlationId;

@Overridepublic void callService() throws Exception {

externalService.doSth(callInfo, correlationId);}

}12

injection of service proxy

PSI Request Adapter

@Correlation(correlationIdReference = "HELLO_WORLD_CORRELATION")public class CheckHelloWorldRequestAdapter implements ServiceRequestAdapter{

@Service(type="ejb3") private HelloWorldBeanFacade externalService;

@Variableprivate String callInfo;

@CorrelationIdprivate String correlationId;

@Overridepublic void callService() throws Exception {

externalService.doSth(callInfo, correlationId);}

}13

variable injected by PSI

PSI Request Adapter

@Correlation(correlationIdReference = "HELLO_WORLD_CORRELATION")public class CheckHelloWorldRequestAdapter implements ServiceRequestAdapter{

@Service(type="ejb3") private HelloWorldBeanFacade externalService;

@Variableprivate String callInfo;

@CorrelationIdprivate String correlationId;

@Overridepublic void callService() throws Exception {

externalService.doSth(callInfo, correlationId);}

}14

injection of generated UUID

PSI Request Adapter

@Correlation(correlationIdReference = "HELLO_WORLD_CORRELATION")public class CheckHelloWorldRequestAdapter implements ServiceRequestAdapter{

@Service(type="ejb3") private HelloWorldBeanFacade externalService;

@Variableprivate String callInfo;

@CorrelationIdprivate String correlationId;

@Overridepublic void callService() throws Exception {

externalService.doSth(callInfo, correlationId);}

}15

method called by camunda / PSI

Process Tooling

16

PIS

Developer Operator Process

manager

ICAT

Process Command Center (PCC)

Configurable KPI Range

Implementation with predefined Delegate

Process Command Center (PCC)

18

Error Categorization with iCat

Error Categorization (Business Errors)

Process Operating

Process Operating

Zwei vieldiskutierte Themen

Datenhaltung / -handling

Migration von Prozess-Versionen

Datenhandling

Fachliche Daten in fachliche DB – NICHT in Prozesskontext

Datenlast reduziert Performance

Prozesse sollten keine Monolithen sein

Effektivere Strukturierung der Daten

Bessere Kontrolle ueber Kundendaten (Legalitaet)

AutoGetter/AutoSetter

Einfache Einbindung von externen Daten

Business Keys

public class OuterAutoGetter implements AutoGetter<String> {

@Service(type="ejb3") ExternalServiceBeanFacade externalService;

@VariableString processVar;

@AutoGetterVariable(type = InnerAutoGetter.class)String autoGetterValue;

@Overridepublic String get() {

…}

}

AutoSetter

public class OuterAutoGetter implements AutoGetter<String> {

@Service(type="ejb3") ExternalServiceBeanFacade externalService;

@VariableString processVar;

@AutoGetterVariable(type = InnerAutoGetter.class)String autoGetterValue;

@Overridepublic String get() {

…}

}

AutoSetter

public class OuterAutoGetter implements AutoGetter<String> {

@Service(type="ejb3") ExternalServiceBeanFacade externalService;

@VariableString processVar;

@AutoGetterVariable(type = InnerAutoGetter.class)String autoGetterValue;

@Overridepublic String get() {

…}

}

AutoGetter

Datenhandling

Fachliche Daten in fachliche DB – NICHT in Prozesskontext

Datenlast reduziert Performance

Prozesse sollten keine Monolithen sein

Effektivere Strukturierung der Daten

Bessere Kontrolle ueber Kundendaten (Legalitaet)

AutoGetter/AutoSetter

Einfache Einbindung von externen Daten

Business Keys

camunda business key garantierte Eindeutigkeit von Prozessinstanz

SPP buisness keys liefern Corrleation per fachlichem Schluessel

SPP buisness keys liefern Transparenz im Operating

extra Spalte pro business key

schnelle Suche via business key

Process Operating

Migration von Prozess-Versionen

Scenario

Prozess-Definition muss angepasst werden

Laufende Prozess-Instanzen müssen migriert werden

id_ proc_inst_id_ parent_id_ act_id_

79 79 null Verifyaddress

act_ru_execution

79

Migrationsproblematik

Migrationsproblematik

id_ proc_inst_id_ parent_id_ act_id_

91 91 null parallelGateway

95 91 91 VerifyAddress

96 91 91 null

98 91 96 intermediateCatchEvent

act_ru_execution

91

95

96

98

Migrationsproblematik

Mögliche Migrationsprobleme

1. gleicher Ablauf

2. Daten

3. Struktur-Änderung

einfach

mittelschwer

sehr schwer

Migration von Prozessversionen

Kurzläufer

Prozessdefinition suspendieren

warten bis alle Instanzen durchgelaufen

Deployment von neuer Version

Prozessdefinition aktivieren

Langläufer

benutze fachliche Datenbank

modelliere kurzlaufende Subprozesse

realisiere Hauptprozess ohne Prozess-Engine

Langläufer

fachlicheDB

Langläufer

Ereignis

Empfänger

1. Event,

BusinessKey fachlicheDB

Langläufer

Ereignis

Empfängerfachliche

DB

1. Event,

BusinessKey

2. Event,

BusinessKey

Langläufer

Ereignis

Empfängerfachliche

DB

1. Event,

BusinessKey

2. Event,

BusinessKey

3. nächster Schritt

Langläufer

Ereignis

Empfänger

Process

instanz

fachlicheDB

1. Event,

BusinessKey

2. Event,

BusinessKey

3. nächster Schritt

4. Starte Prozessinstanz,

BusinessKey

Langläufer

Ereignis

Empfänger

Process

instanz

fachlicheDB

Zustands-

Änderungs-

Fassade

1. Event,

BusinessKey

2. Event,

BusinessKey

3. nächster Schritt

4. Starte Prozessinstanz,

BusinessKey

5. Prozess beendet,

BusinessKey

Langläufer

Ereignis

Empfänger

Process

instanz

fachlicheDB

Zustands-

Änderungs-

Fassade

1. Event,

BusinessKey

2. Event,

BusinessKey

3. nächster Schritt

4. Starte Prozessinstanz,

BusinessKey

5. Prozess beendet,

BusinessKey

6. neuer Zustand,

BusinessKey

Langläufer

Ereignis

Empfänger

Process

instanz

fachlicheDB

Zustands-

Änderungs-

Fassade

1. Event,

BusinessKey

2. Event,

BusinessKey

3. nächster Schritt

4. Starte Prozessinstanz,

BusinessKey

5. Prozess beendet,

BusinessKey

(7. sende Event, BusinessKey) 6. neuer Zustand,

BusinessKey

Fachlicher Prozesskontext

Ereignis

Empfänger

Process

instanz

fachlicheDB

Zustands-

Änderungs-

Fassade

Migrations-Alternativen

Scenario

Prozess-Definition muss angepasst werden

Laufende Prozess-Instanzen müssen migriert werden

Einfügen von Wartepunkten

Einfügen von Wartepunkten

Einfügen von Wartepunkten

Explizite Modellierung

Explizite Modellierung

Explizite Modellierung

Zusammenfassung

Service- und Prozessplattform

Konfiguration und Installation

Toolchain: Plan – Build – Run

Consulting für Architektur und Umsetzung von Prozessen

Questions