Domanda

Vuoi che alcuni aiutano a capire cosa devo fare in questa situazione.
Abbiamo profili utente da Active Directory, ma ci sono alcune proprietà che provengono da un servizio esterno che possiamo ottenere da un servizio WCF.

Qual è il modo migliore per avvicinarsi?Non riesco a capire come si connette la roba, ho iniziato a fare un modello di dati aziendali in Visual Studio, ma sta solo diventando un grosso casino nella mia testa.

Modifica
Voglio SharePoint solo per importare i dati e i dati possono essere modificati nell'origine dati del servizio WCF.

schizzo

È stato utile?

Soluzione

Peter Holpar ha un ottimo articolo su questo argomento in quanto si riferisce a SharePoint 2010. In generale, è lo stesso in SP 2013. Se la proprietà deve essere popolata una volta dal servizio WCF e Allora SharePoint sarà il proprietario della proprietà (cioè dove le persone vanno ad aggiornarlo), non è necessario un modello BCS o la connessione di sincronizzazione. Potresti semplicemente scrivere una script o un'app console che fa una popolazione di una volta delle proprietà in questione.

Se il DataSource del servizio WCF sarà ancora la fonte canonica per i dati, probabilmente creerei manualmente la connessione di sincronizzazione.

Processo - Nessun codice

    .
  1. Crea e distribuisci il tuo modello BCS. Il tuo modello deve contenere una proprietà che mappa a un identificativo univoco nell'annuncio. Ho usato il nome dell'account SAM senza il prefisso del dominio, I.e. rkaucher non contoso\rkaucher.
  2. Creare le impostazioni / proprietà di sincronizzazione.
      .
    • Dalla pagina Gestisci Profilo Service Service, fare clic su Gestisci proprietà dell'utente.
    • Nella pagina Proprietà utente Trova la proprietà che desideri modificare o aggiungere una nuova proprietà. In questo esempio ho scelto di modificare la proprietà Department. La maggior parte di questi attributi sono piuttosto auto-esplicativi.
    • Nella parte inferiore di questa pagina assicurarsi che non ci sia nulla elencato in Property Mapping for Synchronization. Se c'è, fai clic su Rimuovi.

      Inserire l'immagine Descrizione qui

        .
      • In Add new mapping Selezionare la connessione BCS per Source data connection e quindi scegli la proprietà dall'entità BCS che si desidera mappare su questa proprietà del profilo utente. Non dimenticare di fare clic su Aggiungi e quindi OK.

      • Torna alla pagina Gestisci Profilo Service Service e selezionare Configure Synchronization Settings. Assicurati che Include existing BCS connections for synchronization? sia controllato come in questa immagine. Non l'ho fatto inizialmente e mi ci sono voluti 30 minuti per capire cosa stavo facendo male.

        Inserisci Descrizione dell'immagine qui

          .
        • Una volta completato che il passaggio finale è possibile tornare alla pagina Gestisci Profilo Service Service e fare clic su Start Profile Synchronization. Una volta completata la sincronizzazione, è necessario visualizzare la nuova proprietà / valore nella sezione About me della pagina del profilo se hai abilitato quell'attributo quando hai configurato la proprietà.

          Processo - server om

          Ecco un codice di esempio per creare una proprietà. Questo è stato un po 'difficile da lavorare. Ho creato una semplice app console per creare la proprietà e la connessione. Un problema che ho avuto prima di averlo fatto lavorare è stato che ho continuato a ottenere un NullReferenceException causato da un SecurityException perché il mio account (l'account che esegue il codice) non è stato configurato in entrambi gli amministratori e Autorizzazioni Sezioni del servizio Profilo utente nell'amministratore centrale.

          Configura le autorizzazioni in entrambi i luoghi.

          A questo punto, sono così stanco che i miei occhi stanno girando, quindi se ci sono qualche bados qui, sentiti libero di correggerli o aggiungere un commento e farò la correzione.

          using Microsoft.Office.Server.UserProfiles;
          using Microsoft.Sharepoint;
          using Microsoft.Sharepoint.Administration;
          using System;
          
          //Etc...
          //Get a handle on the central admin site collection as site
          SpServiceContext context = SPServiceContext.GetContext(site);
          UserProfileConfignanager userProfileConfigManager = new UserProfileConfigllanager(context);
          UserProfileManager userProfilemanager = new userProfileManager(context);
          ProfilePropertytianager propManager = userProfileConfigManager.ProfilePropertylianager;
          CorePropertyManager corePropManager = propManager.GetCoreProperties();
          
          CoreProperty coreProp = corePropManager.Create(false);
          //The bool above is for isSection, which this is not.
          coreProp.Name = "MyBcsFullName";
          coreProp.DisplayName = "MY BCS Full Name";
          coreProp.Type = PropertyDataType.StringSingleValue;
          coreProp.Length = 50;
          coreProp.Commit();
          
          //Obviously it’s a user type
          ProfileTypePropertyManager typePropManager = propManager.GetProfileTypeProperties(Profilerype.User);
          ProfilesubtypePropertyManager subtypePropManager = userProfilemanager.DefaultProfileSubtypeProperties
          
          ProfilesubtypeProperty subProp = subtypePropManager.Create(typePropManager.GetPropertyByName(coreProp.Name));
          subProp.IsUserEditable = false;
          subProp.DefaultPrivacy = Privacy.Public;
          subtypePropManager.Add(subProp);
          
          Connection connection = userProfileConfigManager.ConnectionManager["BCS Properties"];
          
          if (connection != null)
          {
              PropertyMapCollection propMapCollection = con.PropertyMapping;
              PropertyMap propMap = propMapCollection[subprop.Name];
              if (propertyMap == null)
              {
                  propMapCollection.AddNewMapping(ProfileType.User, subProp.Name, "FullName");
                  //The final param is the name of the property in the BCS model.
              }
          }
          
          .

          A destra, vedrai la proprietà che abbiamo aggiunto.

          Inserisci Descrizione dell'immagine qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top