Upload
11-internet-ag
View
172
Download
0
Tags:
Embed Size (px)
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