Configurazione dell’ambiente di sviluppo

Per configurare l’ambiente di sviluppo, devi creare un progetto Java, ad esempio un progetto Eclipse. La versione di Eclipse supportata è 3.2.1 o successiva.

L'SPI di Rights Management richiede che il file edc-server-spi.jar sia impostato nel percorso di classe del progetto. Se non fai riferimento a questo file JAR, non puoi utilizzare l’SPI di Rights Management nel tuo progetto Java. Questo file JAR è installato con l'SDK AEM Forms nella cartella [install directory]\Adobe\Adobe_Experience_Manager_forms\sdk\spi.

Oltre ad aggiungere il file edc-server-spi.jar al percorso della classe del progetto, è necessario aggiungere anche i file JAR necessari per utilizzare l'API Servizio di Rights Management. Questi file sono necessari per utilizzare l’API Servizio di Rights Management nel gestore Invita utenti esterni.

Definizione dell’implementazione del gestore di inviti di utenti esterni

Per sviluppare un gestore di inviti esterni, è necessario creare una classe Java che implementi l'interfaccia com.adobe.edc.server.spi.ersp.InvitedUserProvider. Questa classe contiene un metodo denominato invitedUser che il servizio di Rights Management richiama quando gli indirizzi di posta elettronica vengono inviati tramite la pagina Aggiungi utenti invitati accessibile tramite la console di amministrazione.

Il metodo invitedUser accetta un'istanza java.util.List che contiene indirizzi di posta elettronica di tipo stringa inviati dalla pagina Aggiungi utenti invitati. Il metodo invitedUser restituisce un array di InvitedUserProviderResult oggetti, che in genere è un mapping di indirizzi e-mail a oggetti utente (non restituisce null).

NOTA
Oltre a dimostrare come creare un gestore di inviti di utenti esterni, questa sezione utilizza anche l’API AEM Forms.

L'implementazione del gestore di inviti di utenti esterni contiene un metodo definito dall'utente denominato createLocalPrincipalAccount. Questo metodo accetta un valore stringa che specifica un indirizzo e-mail come valore di parametro. Il metodo createLocalPrincipalAccount presuppone la preesistenza di un dominio locale denominato EDC_EXTERNAL_REGISTERED. Puoi configurare questo nome di dominio come qualsiasi altro nome desiderato; tuttavia, per un’applicazione di produzione, potrebbe essere utile eseguire l’integrazione con un dominio aziendale.

Il metodo createUsers scorre ogni indirizzo e-mail e crea un oggetto User corrispondente (un utente locale nel dominio EDC_EXTERNAL_REGISTERED). Infine, viene chiamato il metodo doEmails. Questo metodo viene lasciato intenzionalmente come stub nel campione. In un’implementazione di produzione, conterrebbe la logica dell’applicazione per inviare messaggi e-mail di invito agli utenti appena creati. Viene lasciato nell’esempio per dimostrare il flusso logico dell’applicazione di un’applicazione reale.

Definizione dell’implementazione del gestore di inviti di utenti esterni

L’implementazione del gestore di inviti esterni riportata di seguito accetta gli indirizzi e-mail inviati dalla pagina Aggiungi utenti invitati accessibile tramite la console di amministrazione.

package com.adobe.livecycle.samples.inviteexternalusers.provider;

import com.adobe.edc.server.spi.ersp.*;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.um.api.*;
import com.adobe.idp.um.api.infomodel.*;
import com.adobe.idp.um.api.impl.UMBaseLibrary;
import com.adobe.livecycle.usermanager.client.DirectoryManagerServiceClient;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class InviteExternalUsersSample implements InvitedUserProvider
{
       private ServiceClientFactory _factory = null;

       private User createLocalPrincipalAccount(String email_address) throws Exception
       {
    String ret = null;

    //  Assume the local domain already exists!
    String domain = "EDC_EXTERNAL_REGISTERED";

    List aliases = new ArrayList();
    aliases.add( email_address );

    User local_user = UMBaseLibrary.createUser( email_address, domain, email_address );
    local_user.setCommonName( email_address );
    local_user.setEmail( email_address );
    local_user.setEmailAliases( aliases );

    //  You may wish to disable the local user until, for example, his registration is processed by a confirmation link
    //local_user.setDisabled( true );

    DirectoryManager directory_manager = new DirectoryManagerServiceClient( _factory );
    String ret_oid = directory_manager.createLocalUser( local_user, null );

    if( ret_oid == null )
    {
        throw new Exception( "FAILED TO CREATE PRINCIPAL FOR EMAIL ADDRESS: " + email_address );
    }

    return local_user;
       }

       protected User[] createUsers( List emails ) throws Exception
       {
    ArrayList ret_users = new ArrayList();

    _factory = ServiceClientFactory.createInstance();

    Iterator iter = emails.iterator();

    while( iter.hasNext() )
    {
        String current_email = (String)iter.next();

        ret_users.add( createLocalPrincipalAccount( current_email ) );
    }

    return (User[])ret_users.toArray( new User[0] );
       }

       protected void doInvitations(List emails)
       {
    //  Here you may choose to send the users who were created an invitation email
    //  This step is completely optional, depending on your requirements.
       }

       public InvitedUserProviderResult[] invitedUser(List emails)
       {
    //  This sample demonstrates the workflow for inviting a user via email

    try
    {

        User[] principals = createUsers(emails);

        InvitedUserProviderResult[] result = new InvitedUserProviderResult[principals.length];
        for( int i = 0; i < principals.length; i++ )
        {
        result[i] = new InvitedUserProviderResult();

        result[i].setEmail( (String)emails.get( i ) );
        result[i].setUser( principals[i] );
        }

        doInvitations(emails);

        System.out.println( "SUCCESSFULLY INVITED " + result.length + " USERS" );

        return result;

    }
    catch( Exception e )
    {
        System.out.println( "FAILED TO INVITE USERS FOR INVITE USERS SAMPLE" );
        e.printStackTrace();

        return new InvitedUserProviderResult[0];
    }
       }
}
NOTA
Questa classe Java viene salvata come file JAVA denominato InviteExternalUsersSample.java.