syncope-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Syncope > High-level Architecture
Date Fri, 23 Mar 2012 10:21:00 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/2042/9/3/_/styles/combined.css?spaceKey=SYNCOPE&amp;forWysiwyg=true"
type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
     <h2><s>High-level Architecture</s></h2>
     <h4>Page <b>removed</b> by             <a href="https://cwiki.apache.org/confluence/display/~ilgrosso">Francesco
Chicchiricco</a>
    </h4>
     <br/>
     <div class="notificationGreySide">
         <h1><a name="High-levelArchitecture-Introduction"></a>Introduction</h1>
<p>From an high-level point of view, the component architecture of Syncope can be summarized
by following figure.<br/>
<span class="image-wrap" style=""><img src="/confluence/download/attachments/27841564/Architecture.png?version=1&amp;modificationDate=1332351382000"
width="600px" style="border: 0px solid black" /></span><br/>
Syncope is composed by two main subsystems: core and console.</p>

<h1><a name="High-levelArchitecture-Thecore"></a>The core</h1>
<p>The web application that implements IdM features; it offers a RESTful interface for
caller applications, implements the provisioning core by mean of its workflow engine and its
propagation layer, manages data persistence.</p>

<h3><a name="High-levelArchitecture-Syncopecorelogic"></a>Syncope core logic</h3>
<p>This central component orchestrates the whole data flow throughout the system. Gets
involved upon RESTful calls, processes data alongside the defined workflow, propagates to
and synchronize from configured external resources, if needed.</p>

<h3><a name="High-levelArchitecture-RESTfulcontrollers"></a>RESTful controllers</h3>
<p>RESTful controllers take care of the communication with outside world. Implemented
by leveraging Spring's REST and MVC features, these controllers exchange data in both XML
and JSON formats.</p>

<h3><a name="High-levelArchitecture-Workflowengine"></a>Workflow engine</h3>
<p>Workflow engine is a pluggable aspect of Syncope: this lets every deployment choose
among one of provided engine implementations or define new, custom ones.</p>

<p>Syncope default implementation is based on <a href="http://www.activiti.org" class="external-link"
rel="nofollow">Activiti BPM</a>, reference Open Source implementation that supports
the definition of an XML descriptor in which user lifecycle is defined. This aspect makes
the whole system very flexible to adapt to different situations.</p>

<p>Default implementation also provides notification, approval, and end-user request
management.</p>

<h3><a name="High-levelArchitecture-JPApersistencelayer"></a>JPA persistence
layer</h3>
<p>All the data used by Syncope (users, roles, attributes, resources, …) is managed
at an high level with a standard JPA 2.0 approach and persisted to underlying database.</p>

<p>The chosen JPA implementation – <a href="http://www.hibernate.org" class="external-link"
rel="nofollow">Hibernate</a> – can be quite painfully changed at configuration
level to other implementations like as <a href="http://www.eclipse.org/eclipselink/" class="external-link"
rel="nofollow">Eclipse Link</a>, <a href="http://openjpa.apache.org" class="external-link"
rel="nofollow">OpenJPA</a> or even <a href="http://www.oracle.com/technetwork/middleware/toplink/overview/index.html"
class="external-link" rel="nofollow">Oracle TopLink</a>.</p>

<p>This approach makes Syncope to be successfully deployable on most DBMS without any
modification on the source code; in order to have an idea of this possibility, take a look
at <a href="http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/session-configuration.html#configuration-optional-dialects"
class="external-link" rel="nofollow">available options</a>.</p>

<p>Currently, Syncope officially supports MySQL, PostgreSQL and Oracle DB.</p>

<h3><a name="High-levelArchitecture-Connectorslayer"></a>Connectors layer</h3>
<p>Connector layer is implemented with <a href="http://connid.googlecode.com" class="external-link"
rel="nofollow">ConnId</a>; ConnId is designed to separate the implementation of an
application from the dependencies of the system that the application is attempting to connect
to.</p>

<p>Connid is the continuation of Identity connectors, a project that used to be part
of the market leader Sun IdM and have been released by Sun as an Open Source project. This
makes the connectors layer particularly reliable since most connectors are already implemented
in the framework and widely tested. Lately, the original project has been forked into the
new ConnId project, whose main purpose is to provide all that is required nowadays for a modern
Open Source project: Apache Maven driven build, artifacts and mailing lists. Additional connectors
– like as SOAP, CSV  and Active Directory – are also provided.</p>

<p>Syncope supports either</p>
<ul>
	<li><em>propagation</em> towards external resources (when user data is
copied from Syncope to external resources)</li>
	<li><em>synchronization</em> from external resources (when user data is
pulled from external resources into Syncope)<br/>
Propagation and synchronization operations – a.k.a tasks – are saved for reporting and
later re-execution.</li>
</ul>


<h1><a name="High-levelArchitecture-Theconsole"></a>The console</h1>
<p>The web management interface for configuring and administering Syncope core. Like
as other external applications, the console communicates with the core by REST calls.</p>
     </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message