SlideShare una empresa de Scribd logo
1 de 22
APACHE SYNCOPE:
An Apache Camel Integration
Proposal
Viale D'Annunzio, 267 - 65127 Pescara
Partita IVA 01974100685
N. REA 143460

Tel +39 0859116307 / FAX +39 0859111173

http://www.tirasa.net
info@tirasa.net
Apache Syncope: UserCreation Use Case
When user is created, Syncope works in this way:
1. Create user internally → start work-flow engine
2. Propagate to external resources
This use case is useful the most of times,
but not ever..
Apache Syncope: Problematic Use Case
What if we need to implement this use case ?
1. Create User on Active Directory (Primary Resource)
2. If step 1 is OK

✓ → create also internally
✓→

Otherwise

X

propagate to other external
resources
→ throw a general error
Apache Syncope: Problematic Use Case Solution
Generally, to solve the previous case, we do this:

1. Override UserController#create() method
2. Embed the desired fixed logic

… isn't there a better way to do this?
Apache Syncope: Possible Solution
We need a way that allows:
1. Easy configuration of IDM control strategies
2. Easy integration with existing component
Possible Solution ? CONTROLLER REDEFINITION with
Apache Camel.. What is?
Apache Camel™ is “a versatile open-source integration
framework based on known Enterprise Integration Patterns”

“Camel empowers you to define routing and mediation rules
in a variety of domain-specific languages ”
Apache Camel: Concepts
Camel is Message-oriented → Concept of Message

Communication in Camel takes places via Message
Message is included in Exchange
Apache Camel: Endpoint
Endpoint defines the communication port of an application.
ENDPOINT

Each component is identified by unique URI
Apache Camel: Route
A Route defines strategies for message manipulation.
Apache Camel: Route Definition
Apache camel provides different methods to express
routes: these are simply called DSL.

Java DSL

Spring XML DSL

from("direct:a")
.choice()
.when(header("foo").isEqualTo("bar"))
.to("direct:b")
.when(header("foo").isEqualTo("cheese"))
.to("direct:c")
.otherwise()
.to("direct:d");

<routeContext id="myCoolRoutes"
xmlns="http://camel.apache.org/schema/spring">
<!-- we can have a route -->
<route id="cool">
<from uri="direct:start"/>
<to uri="mock:result"/>
</route>
<!-- and another route, you can have as many you
like -->
</routeContext>

Example of two common DSL
Apache Camel.. Why?
Camel could represent a valid framework for the controller
orchestration.. why?

IDM Control Logic ~ Route

New component in Syncope → Provisioning Manager
Moreover, Camel offers large set of pluggable Components .
Example: the Activiti Component.
Provisioning Manager: Benefits
✔ Provisioning Manager embeds Ruote Definition
✔ Routes can be easily added at Runtime.
✔ Complex Behaviour Definition (i.e. rollback).
✔ Versioning of Routing Strategies
Apache Camel.. How?
The Provisioning Manager aims to redefine the controller
business logic.
Syncope Architecture As Is
Syncope Architecture with Provisioning Manager
Apache Camel Integration Proposal
Transfer IDM control logic into the Provisioning Manager

LOGIC
Provisioning Manager: Example
Provisioning Manager: how first use case can be modeled
Provisioning Manager
UserTo

.
.
from("vm:camel-create")
//we can do some check here
.to("activiti:camelProcess:Create”);
.
.
from(activiti:camelProcess:Created).
bean(PropagationBean, “propagateToExtResource”).
//continue with other operation

Process definition
.
.
<receiveTask id="Create" .. />
.
.
<serviceTask id="Created" .. />
Provisioning Manager: Example
How the problematic use case can be modelled

UserTo

Provisioning Manager
.
from("vm:camel-create")
//we can do some check here
.bean(PropagationBean, “propagateOnActiveDirectory”)
.on(PropagationException.class).to(“log:error”)
//otherwise, if step1 OK → activiti
.to("activiti:camelProcess:Create”);
.
.
from(activiti:camelProcess:Created).
bean(PropagationBean, “propagateToExtResource”).
//continue with other operation

Process definition
.
.
<receiveTask id="Create" .. />
.
.
<serviceTask id="Created" .. />
Provisioning Manager: Interaction
ec t
e D ir

User
Controller

ctiv
OnA
gate
ropa
P
t
esul
onR
gati
ropa
P

UserTo

Provisioning
Manager

ory

Activiti : Create
Propagate To Other Resource
Apache Camel: Existing Component
What about previous components?
We have to adapt them to messages!
UserController
.
.
template.send("vm:camel-create",user_exchange);
.
.
WorkflowResult created =
consumer.receiveBody("vm:controller-port");

UserTo
Replace Activiti with Apache Camel ?
Camel seems to behave like a workflow engine: can we replace
Activiti?

NO!
Apache Camel Integration Proposal

WHAT DO YOU THINK ABOUT THIS PROPOSAL ?
Join the discussion on dev@syncope.apache.org

Más contenido relacionado

La actualidad más candente

GPerf Using Jesque
GPerf Using JesqueGPerf Using Jesque
GPerf Using Jesquectoestreich
 
Background processing with Resque
Background processing with ResqueBackground processing with Resque
Background processing with ResqueNicolas Blanco
 
React native-firebase startup-mtup
React native-firebase startup-mtupReact native-firebase startup-mtup
React native-firebase startup-mtupt k
 
Wrangling WP_Cron - WordCamp Grand Rapids 2014
Wrangling WP_Cron - WordCamp Grand Rapids 2014Wrangling WP_Cron - WordCamp Grand Rapids 2014
Wrangling WP_Cron - WordCamp Grand Rapids 2014cklosowski
 
Inside ASP.NET MVC framework
Inside ASP.NET MVC frameworkInside ASP.NET MVC framework
Inside ASP.NET MVC frameworkCiklum Ukraine
 
Inside asp.net mvc framework
Inside asp.net mvc frameworkInside asp.net mvc framework
Inside asp.net mvc frameworkCiklum Ukraine
 
Rntb20200805
Rntb20200805Rntb20200805
Rntb20200805t k
 
Learn flask in 90mins
Learn flask in 90minsLearn flask in 90mins
Learn flask in 90minsLarry Cai
 
Basic testing with selenium
Basic testing with seleniumBasic testing with selenium
Basic testing with seleniumSøren Lund
 
How Danga::Socket handles asynchronous processing and how to write asynchrono...
How Danga::Socket handles asynchronous processing and how to write asynchrono...How Danga::Socket handles asynchronous processing and how to write asynchrono...
How Danga::Socket handles asynchronous processing and how to write asynchrono...Gosuke Miyashita
 
PowerShell: Automation for everyone
PowerShell: Automation for everyonePowerShell: Automation for everyone
PowerShell: Automation for everyoneGavin Barron
 
Symfony2 Components - The Event Dispatcher
Symfony2 Components - The Event DispatcherSymfony2 Components - The Event Dispatcher
Symfony2 Components - The Event DispatcherSarah El-Atm
 
Creating custom aggregation strategy
Creating custom aggregation strategyCreating custom aggregation strategy
Creating custom aggregation strategyRahul Kumar
 
InspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VM
InspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VMInspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VM
InspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VMmhelmich
 
Task Scheduling and Asynchronous Processing Evolved. Zend Server Job Queue
Task Scheduling and Asynchronous Processing Evolved. Zend Server Job QueueTask Scheduling and Asynchronous Processing Evolved. Zend Server Job Queue
Task Scheduling and Asynchronous Processing Evolved. Zend Server Job QueueSam Hennessy
 
Creating custom aggregator
Creating custom aggregatorCreating custom aggregator
Creating custom aggregatorRahul Kumar
 
Flask patterns
Flask patternsFlask patterns
Flask patternsit-people
 
Locarise,reagent and JavaScript Libraries
Locarise,reagent and JavaScript LibrariesLocarise,reagent and JavaScript Libraries
Locarise,reagent and JavaScript LibrariesIkuru Kanuma
 

La actualidad más candente (20)

GPerf Using Jesque
GPerf Using JesqueGPerf Using Jesque
GPerf Using Jesque
 
Background processing with Resque
Background processing with ResqueBackground processing with Resque
Background processing with Resque
 
Php resque
Php resquePhp resque
Php resque
 
React native-firebase startup-mtup
React native-firebase startup-mtupReact native-firebase startup-mtup
React native-firebase startup-mtup
 
Wrangling WP_Cron - WordCamp Grand Rapids 2014
Wrangling WP_Cron - WordCamp Grand Rapids 2014Wrangling WP_Cron - WordCamp Grand Rapids 2014
Wrangling WP_Cron - WordCamp Grand Rapids 2014
 
Inside ASP.NET MVC framework
Inside ASP.NET MVC frameworkInside ASP.NET MVC framework
Inside ASP.NET MVC framework
 
Inside asp.net mvc framework
Inside asp.net mvc frameworkInside asp.net mvc framework
Inside asp.net mvc framework
 
Rntb20200805
Rntb20200805Rntb20200805
Rntb20200805
 
Learn flask in 90mins
Learn flask in 90minsLearn flask in 90mins
Learn flask in 90mins
 
Basic testing with selenium
Basic testing with seleniumBasic testing with selenium
Basic testing with selenium
 
How Danga::Socket handles asynchronous processing and how to write asynchrono...
How Danga::Socket handles asynchronous processing and how to write asynchrono...How Danga::Socket handles asynchronous processing and how to write asynchrono...
How Danga::Socket handles asynchronous processing and how to write asynchrono...
 
Perlbal Tutorial
Perlbal TutorialPerlbal Tutorial
Perlbal Tutorial
 
PowerShell: Automation for everyone
PowerShell: Automation for everyonePowerShell: Automation for everyone
PowerShell: Automation for everyone
 
Symfony2 Components - The Event Dispatcher
Symfony2 Components - The Event DispatcherSymfony2 Components - The Event Dispatcher
Symfony2 Components - The Event Dispatcher
 
Creating custom aggregation strategy
Creating custom aggregation strategyCreating custom aggregation strategy
Creating custom aggregation strategy
 
InspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VM
InspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VMInspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VM
InspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VM
 
Task Scheduling and Asynchronous Processing Evolved. Zend Server Job Queue
Task Scheduling and Asynchronous Processing Evolved. Zend Server Job QueueTask Scheduling and Asynchronous Processing Evolved. Zend Server Job Queue
Task Scheduling and Asynchronous Processing Evolved. Zend Server Job Queue
 
Creating custom aggregator
Creating custom aggregatorCreating custom aggregator
Creating custom aggregator
 
Flask patterns
Flask patternsFlask patterns
Flask patterns
 
Locarise,reagent and JavaScript Libraries
Locarise,reagent and JavaScript LibrariesLocarise,reagent and JavaScript Libraries
Locarise,reagent and JavaScript Libraries
 

Destacado

Daily Fantasy Sports (DFS) Notes
Daily Fantasy Sports (DFS) NotesDaily Fantasy Sports (DFS) Notes
Daily Fantasy Sports (DFS) NotesRobin Howlett
 
Apache HISE + Apache Camel
Apache HISE + Apache CamelApache HISE + Apache Camel
Apache HISE + Apache CamelRafal Rusin
 
Cloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesCloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesRobin Howlett
 
Connector Algebra Build on top of Apache Camel - EIP
Connector Algebra Build on top of Apache Camel - EIPConnector Algebra Build on top of Apache Camel - EIP
Connector Algebra Build on top of Apache Camel - EIPGiacomo Lamonaco
 
Sviluppo web con Yii
Sviluppo web con YiiSviluppo web con Yii
Sviluppo web con YiiApuliaSoft
 
Adempiere Presentazione
Adempiere PresentazioneAdempiere Presentazione
Adempiere PresentazioneInfoGest
 
Presentazione Testing automatizzato
Presentazione Testing automatizzatoPresentazione Testing automatizzato
Presentazione Testing automatizzatoangelolu
 
Codemotion fuse presentation
Codemotion fuse presentationCodemotion fuse presentation
Codemotion fuse presentationUgo Landini
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)Davide Cerbo
 
Real world #microservices with Apache Camel, Fabric8, and OpenShift
Real world #microservices with Apache Camel, Fabric8, and OpenShiftReal world #microservices with Apache Camel, Fabric8, and OpenShift
Real world #microservices with Apache Camel, Fabric8, and OpenShiftChristian Posta
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioAntonio Musarra
 
Microservices with Apache Camel
Microservices with Apache CamelMicroservices with Apache Camel
Microservices with Apache CamelClaus Ibsen
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache CamelChristian Posta
 
Strategie per la mente sicilia
Strategie per la mente siciliaStrategie per la mente sicilia
Strategie per la mente siciliamaurizio vellano
 

Destacado (18)

Daily Fantasy Sports (DFS) Notes
Daily Fantasy Sports (DFS) NotesDaily Fantasy Sports (DFS) Notes
Daily Fantasy Sports (DFS) Notes
 
Apache HISE + Apache Camel
Apache HISE + Apache CamelApache HISE + Apache Camel
Apache HISE + Apache Camel
 
Cloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesCloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web Services
 
Connector Algebra Build on top of Apache Camel - EIP
Connector Algebra Build on top of Apache Camel - EIPConnector Algebra Build on top of Apache Camel - EIP
Connector Algebra Build on top of Apache Camel - EIP
 
Sviluppo web con Yii
Sviluppo web con YiiSviluppo web con Yii
Sviluppo web con Yii
 
Adempiere Presentazione
Adempiere PresentazioneAdempiere Presentazione
Adempiere Presentazione
 
Wpo extended
Wpo extendedWpo extended
Wpo extended
 
Presentazione Testing automatizzato
Presentazione Testing automatizzatoPresentazione Testing automatizzato
Presentazione Testing automatizzato
 
Codemotion fuse presentation
Codemotion fuse presentationCodemotion fuse presentation
Codemotion fuse presentation
 
Maven
MavenMaven
Maven
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)
 
Presentacion camel
Presentacion camelPresentacion camel
Presentacion camel
 
Real world #microservices with Apache Camel, Fabric8, and OpenShift
Real world #microservices with Apache Camel, Fabric8, and OpenShiftReal world #microservices with Apache Camel, Fabric8, and OpenShift
Real world #microservices with Apache Camel, Fabric8, and OpenShift
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° Episodio
 
Microservices with Apache Camel
Microservices with Apache CamelMicroservices with Apache Camel
Microservices with Apache Camel
 
OSGi e Liferay 7
OSGi e Liferay 7OSGi e Liferay 7
OSGi e Liferay 7
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
 
Strategie per la mente sicilia
Strategie per la mente siciliaStrategie per la mente sicilia
Strategie per la mente sicilia
 

Similar a Apache Syncope: an Apache Camel Integration Proposal

Apache Traffic Server
Apache Traffic ServerApache Traffic Server
Apache Traffic Serversupertom
 
BUILDING APPS WITH ASYNCIO
BUILDING APPS WITH ASYNCIOBUILDING APPS WITH ASYNCIO
BUILDING APPS WITH ASYNCIOMykola Novik
 
Carrying Enterprise on a Little Camel
Carrying Enterprise on a Little CamelCarrying Enterprise on a Little Camel
Carrying Enterprise on a Little CamelDimitry Pletnikov
 
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyJean-Sebastien Delfino
 
Understanding Framework Architecture using Eclipse
Understanding Framework Architecture using EclipseUnderstanding Framework Architecture using Eclipse
Understanding Framework Architecture using Eclipseanshunjain
 
Creating Fault Tolerant Services on Mesos
Creating Fault Tolerant Services on MesosCreating Fault Tolerant Services on Mesos
Creating Fault Tolerant Services on MesosArangoDB Database
 
Practical catalyst
Practical catalystPractical catalyst
Practical catalystdwm042
 
Cascading on starfish
Cascading on starfishCascading on starfish
Cascading on starfishFei Dong
 
Bostonrb Amazon Talk
Bostonrb Amazon TalkBostonrb Amazon Talk
Bostonrb Amazon TalkBrian Kaney
 
Advanced technic for OS upgrading in 3 minutes
Advanced technic for OS upgrading in 3 minutesAdvanced technic for OS upgrading in 3 minutes
Advanced technic for OS upgrading in 3 minutesHiroshi SHIBATA
 
Sherlock Homepage (Maarten Balliauw)
Sherlock Homepage (Maarten Balliauw)Sherlock Homepage (Maarten Balliauw)
Sherlock Homepage (Maarten Balliauw)Visug
 
Sherlock Homepage - A detective story about running large web services (VISUG...
Sherlock Homepage - A detective story about running large web services (VISUG...Sherlock Homepage - A detective story about running large web services (VISUG...
Sherlock Homepage - A detective story about running large web services (VISUG...Maarten Balliauw
 
ApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache TuscanyApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache TuscanyJean-Sebastien Delfino
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaYevgeniy Brikman
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Hyun-Mook Choi
 
Accumulo Summit 2015: Using Fluo to incrementally process data in Accumulo [API]
Accumulo Summit 2015: Using Fluo to incrementally process data in Accumulo [API]Accumulo Summit 2015: Using Fluo to incrementally process data in Accumulo [API]
Accumulo Summit 2015: Using Fluo to incrementally process data in Accumulo [API]Accumulo Summit
 
Netty - anfix tech&beers
Netty - anfix tech&beersNetty - anfix tech&beers
Netty - anfix tech&beersjorgecarabias
 
Developing Frameworks for Apache Mesos
Developing Frameworks  for Apache MesosDeveloping Frameworks  for Apache Mesos
Developing Frameworks for Apache MesosJoe Stein
 

Similar a Apache Syncope: an Apache Camel Integration Proposal (20)

Apache Traffic Server
Apache Traffic ServerApache Traffic Server
Apache Traffic Server
 
BUILDING APPS WITH ASYNCIO
BUILDING APPS WITH ASYNCIOBUILDING APPS WITH ASYNCIO
BUILDING APPS WITH ASYNCIO
 
Carrying Enterprise on a Little Camel
Carrying Enterprise on a Little CamelCarrying Enterprise on a Little Camel
Carrying Enterprise on a Little Camel
 
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
 
Understanding Framework Architecture using Eclipse
Understanding Framework Architecture using EclipseUnderstanding Framework Architecture using Eclipse
Understanding Framework Architecture using Eclipse
 
Creating Fault Tolerant Services on Mesos
Creating Fault Tolerant Services on MesosCreating Fault Tolerant Services on Mesos
Creating Fault Tolerant Services on Mesos
 
Practical catalyst
Practical catalystPractical catalyst
Practical catalyst
 
Cascading on starfish
Cascading on starfishCascading on starfish
Cascading on starfish
 
Bostonrb Amazon Talk
Bostonrb Amazon TalkBostonrb Amazon Talk
Bostonrb Amazon Talk
 
Advanced technic for OS upgrading in 3 minutes
Advanced technic for OS upgrading in 3 minutesAdvanced technic for OS upgrading in 3 minutes
Advanced technic for OS upgrading in 3 minutes
 
Sherlock Homepage (Maarten Balliauw)
Sherlock Homepage (Maarten Balliauw)Sherlock Homepage (Maarten Balliauw)
Sherlock Homepage (Maarten Balliauw)
 
Sherlock Homepage - A detective story about running large web services (VISUG...
Sherlock Homepage - A detective story about running large web services (VISUG...Sherlock Homepage - A detective story about running large web services (VISUG...
Sherlock Homepage - A detective story about running large web services (VISUG...
 
ApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache TuscanyApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache Tuscany
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
 
How to use soap component
How to use soap componentHow to use soap component
How to use soap component
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부
 
NodeJS
NodeJSNodeJS
NodeJS
 
Accumulo Summit 2015: Using Fluo to incrementally process data in Accumulo [API]
Accumulo Summit 2015: Using Fluo to incrementally process data in Accumulo [API]Accumulo Summit 2015: Using Fluo to incrementally process data in Accumulo [API]
Accumulo Summit 2015: Using Fluo to incrementally process data in Accumulo [API]
 
Netty - anfix tech&beers
Netty - anfix tech&beersNetty - anfix tech&beers
Netty - anfix tech&beers
 
Developing Frameworks for Apache Mesos
Developing Frameworks  for Apache MesosDeveloping Frameworks  for Apache Mesos
Developing Frameworks for Apache Mesos
 

Último

Regression analysis: Simple Linear Regression Multiple Linear Regression
Regression analysis:  Simple Linear Regression Multiple Linear RegressionRegression analysis:  Simple Linear Regression Multiple Linear Regression
Regression analysis: Simple Linear Regression Multiple Linear RegressionRavindra Nath Shukla
 
Monte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSMMonte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSMRavindra Nath Shukla
 
RSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors DataRSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors DataExhibitors Data
 
Pharma Works Profile of Karan Communications
Pharma Works Profile of Karan CommunicationsPharma Works Profile of Karan Communications
Pharma Works Profile of Karan Communicationskarancommunications
 
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...amitlee9823
 
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779Delhi Call girls
 
It will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayIt will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayNZSG
 
M.C Lodges -- Guest House in Jhang.
M.C Lodges --  Guest House in Jhang.M.C Lodges --  Guest House in Jhang.
M.C Lodges -- Guest House in Jhang.Aaiza Hassan
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityEric T. Tung
 
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLMONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLSeo
 
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableDipal Arora
 
7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...Paul Menig
 
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...Lviv Startup Club
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with CultureSeta Wicaksana
 
VIP Call Girls In Saharaganj ( Lucknow ) 🔝 8923113531 🔝 Cash Payment (COD) 👒
VIP Call Girls In Saharaganj ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment (COD) 👒VIP Call Girls In Saharaganj ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment (COD) 👒
VIP Call Girls In Saharaganj ( Lucknow ) 🔝 8923113531 🔝 Cash Payment (COD) 👒anilsa9823
 
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...Any kyc Account
 
Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...Roland Driesen
 
HONOR Veterans Event Keynote by Michael Hawkins
HONOR Veterans Event Keynote by Michael HawkinsHONOR Veterans Event Keynote by Michael Hawkins
HONOR Veterans Event Keynote by Michael HawkinsMichael W. Hawkins
 

Último (20)

Regression analysis: Simple Linear Regression Multiple Linear Regression
Regression analysis:  Simple Linear Regression Multiple Linear RegressionRegression analysis:  Simple Linear Regression Multiple Linear Regression
Regression analysis: Simple Linear Regression Multiple Linear Regression
 
Monte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSMMonte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSM
 
RSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors DataRSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors Data
 
Pharma Works Profile of Karan Communications
Pharma Works Profile of Karan CommunicationsPharma Works Profile of Karan Communications
Pharma Works Profile of Karan Communications
 
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
 
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
 
It will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayIt will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 May
 
Forklift Operations: Safety through Cartoons
Forklift Operations: Safety through CartoonsForklift Operations: Safety through Cartoons
Forklift Operations: Safety through Cartoons
 
M.C Lodges -- Guest House in Jhang.
M.C Lodges --  Guest House in Jhang.M.C Lodges --  Guest House in Jhang.
M.C Lodges -- Guest House in Jhang.
 
Mifty kit IN Salmiya (+918133066128) Abortion pills IN Salmiyah Cytotec pills
Mifty kit IN Salmiya (+918133066128) Abortion pills IN Salmiyah Cytotec pillsMifty kit IN Salmiya (+918133066128) Abortion pills IN Salmiyah Cytotec pills
Mifty kit IN Salmiya (+918133066128) Abortion pills IN Salmiyah Cytotec pills
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League City
 
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLMONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
 
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
 
7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...
 
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with Culture
 
VIP Call Girls In Saharaganj ( Lucknow ) 🔝 8923113531 🔝 Cash Payment (COD) 👒
VIP Call Girls In Saharaganj ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment (COD) 👒VIP Call Girls In Saharaganj ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment (COD) 👒
VIP Call Girls In Saharaganj ( Lucknow ) 🔝 8923113531 🔝 Cash Payment (COD) 👒
 
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
 
Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...
 
HONOR Veterans Event Keynote by Michael Hawkins
HONOR Veterans Event Keynote by Michael HawkinsHONOR Veterans Event Keynote by Michael Hawkins
HONOR Veterans Event Keynote by Michael Hawkins
 

Apache Syncope: an Apache Camel Integration Proposal

  • 1. APACHE SYNCOPE: An Apache Camel Integration Proposal Viale D'Annunzio, 267 - 65127 Pescara Partita IVA 01974100685 N. REA 143460 Tel +39 0859116307 / FAX +39 0859111173 http://www.tirasa.net info@tirasa.net
  • 2. Apache Syncope: UserCreation Use Case When user is created, Syncope works in this way: 1. Create user internally → start work-flow engine 2. Propagate to external resources This use case is useful the most of times, but not ever..
  • 3. Apache Syncope: Problematic Use Case What if we need to implement this use case ? 1. Create User on Active Directory (Primary Resource) 2. If step 1 is OK ✓ → create also internally ✓→ Otherwise X propagate to other external resources → throw a general error
  • 4. Apache Syncope: Problematic Use Case Solution Generally, to solve the previous case, we do this: 1. Override UserController#create() method 2. Embed the desired fixed logic … isn't there a better way to do this?
  • 5. Apache Syncope: Possible Solution We need a way that allows: 1. Easy configuration of IDM control strategies 2. Easy integration with existing component Possible Solution ? CONTROLLER REDEFINITION with
  • 6. Apache Camel.. What is? Apache Camel™ is “a versatile open-source integration framework based on known Enterprise Integration Patterns” “Camel empowers you to define routing and mediation rules in a variety of domain-specific languages ”
  • 7. Apache Camel: Concepts Camel is Message-oriented → Concept of Message Communication in Camel takes places via Message Message is included in Exchange
  • 8. Apache Camel: Endpoint Endpoint defines the communication port of an application. ENDPOINT Each component is identified by unique URI
  • 9. Apache Camel: Route A Route defines strategies for message manipulation.
  • 10. Apache Camel: Route Definition Apache camel provides different methods to express routes: these are simply called DSL. Java DSL Spring XML DSL from("direct:a") .choice() .when(header("foo").isEqualTo("bar")) .to("direct:b") .when(header("foo").isEqualTo("cheese")) .to("direct:c") .otherwise() .to("direct:d"); <routeContext id="myCoolRoutes" xmlns="http://camel.apache.org/schema/spring"> <!-- we can have a route --> <route id="cool"> <from uri="direct:start"/> <to uri="mock:result"/> </route> <!-- and another route, you can have as many you like --> </routeContext> Example of two common DSL
  • 11. Apache Camel.. Why? Camel could represent a valid framework for the controller orchestration.. why? IDM Control Logic ~ Route New component in Syncope → Provisioning Manager Moreover, Camel offers large set of pluggable Components . Example: the Activiti Component.
  • 12. Provisioning Manager: Benefits ✔ Provisioning Manager embeds Ruote Definition ✔ Routes can be easily added at Runtime. ✔ Complex Behaviour Definition (i.e. rollback). ✔ Versioning of Routing Strategies
  • 13. Apache Camel.. How? The Provisioning Manager aims to redefine the controller business logic.
  • 15. Syncope Architecture with Provisioning Manager
  • 16. Apache Camel Integration Proposal Transfer IDM control logic into the Provisioning Manager LOGIC
  • 17. Provisioning Manager: Example Provisioning Manager: how first use case can be modeled Provisioning Manager UserTo . . from("vm:camel-create") //we can do some check here .to("activiti:camelProcess:Create”); . . from(activiti:camelProcess:Created). bean(PropagationBean, “propagateToExtResource”). //continue with other operation Process definition . . <receiveTask id="Create" .. /> . . <serviceTask id="Created" .. />
  • 18. Provisioning Manager: Example How the problematic use case can be modelled UserTo Provisioning Manager . from("vm:camel-create") //we can do some check here .bean(PropagationBean, “propagateOnActiveDirectory”) .on(PropagationException.class).to(“log:error”) //otherwise, if step1 OK → activiti .to("activiti:camelProcess:Create”); . . from(activiti:camelProcess:Created). bean(PropagationBean, “propagateToExtResource”). //continue with other operation Process definition . . <receiveTask id="Create" .. /> . . <serviceTask id="Created" .. />
  • 19. Provisioning Manager: Interaction ec t e D ir User Controller ctiv OnA gate ropa P t esul onR gati ropa P UserTo Provisioning Manager ory Activiti : Create Propagate To Other Resource
  • 20. Apache Camel: Existing Component What about previous components? We have to adapt them to messages! UserController . . template.send("vm:camel-create",user_exchange); . . WorkflowResult created = consumer.receiveBody("vm:controller-port"); UserTo
  • 21. Replace Activiti with Apache Camel ? Camel seems to behave like a workflow engine: can we replace Activiti? NO!
  • 22. Apache Camel Integration Proposal WHAT DO YOU THINK ABOUT THIS PROPOSAL ? Join the discussion on dev@syncope.apache.org