SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

Inside asp.net mvc framework
Inside asp.net mvc frameworkInside asp.net mvc framework
Inside asp.net mvc framework
Ciklum Ukraine
 
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
 
Symfony2 Components - The Event Dispatcher
Symfony2 Components - The Event DispatcherSymfony2 Components - The Event Dispatcher
Symfony2 Components - The Event Dispatcher
Sarah El-Atm
 
Flask patterns
Flask patternsFlask patterns
Flask patterns
it-people
 

Was ist angesagt? (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
 

Andere mochten auch

Andere mochten auch (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
 

Ähnlich wie Apache Syncope: an Apache Camel Integration Proposal

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
Jean-Sebastien Delfino
 
Cascading on starfish
Cascading on starfishCascading on starfish
Cascading on starfish
Fei Dong
 
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
Jean-Sebastien Delfino
 
Netty - anfix tech&beers
Netty - anfix tech&beersNetty - anfix tech&beers
Netty - anfix tech&beers
jorgecarabias
 

Ähnlich wie 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
 

Kürzlich hochgeladen

Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service NoidaCall Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
dlhescort
 
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
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
dollysharma2066
 
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabiunwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
Abortion pills in Kuwait Cytotec pills in Kuwait
 
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
lizamodels9
 
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
amitlee9823
 
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
amitlee9823
 
Insurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageInsurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usage
Matteo Carbone
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
dollysharma2066
 

Kürzlich hochgeladen (20)

Falcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to ProsperityFalcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to Prosperity
 
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service NoidaCall Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
 
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...
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
 
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabiunwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
 
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
 
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 
Eluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort Service
Eluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort ServiceEluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort Service
Eluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort Service
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with Culture
 
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
 
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
 
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRLBAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
 
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesMysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
 
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
 
(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7
(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7
(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7
 
Insurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageInsurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usage
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
 
Call Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine ServiceCall Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine Service
 
Falcon Invoice Discounting: The best investment platform in india for investors
Falcon Invoice Discounting: The best investment platform in india for investorsFalcon Invoice Discounting: The best investment platform in india for investors
Falcon Invoice Discounting: The best investment platform in india for investors
 

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