Créer des récepteurs d’événements externes
Découvrez les étapes pour créer des listes externes de récepteurs d'événements externes pour les installations locales de Business Connectivity Services (BCS).
Récepteurs d'événements externes sont des classes qui permettent de Compléments SharePoint répondre aux événements qui se produisent sur des éléments de SharePoint, tels que des listes ou des éléments de liste. Par exemple, vous pouvez répondre à des événements de liste, comme l'ajout ou la suppression d'un champ ; événements d'élément de liste, comme l'ajout ou suppression d'un élément de liste ou d'une pièce jointe à un élément de liste ; ou événements, comme l'ajout ou suppression d'un site ou une collection de sites web. Vous pouvez ajouter un récepteur d'événements distants à une solution existante Visual Studio contenant un Complément SharePoint.
Cet article accompagne l’exemple de code SharePoint : Créer un récepteur d’événements distants pour les données externes. Il montre comment créer tous les composants nécessaires pour configurer et utiliser des notifications d'événements système externe. Dans cet exemple, vous exécuterez la commande suivante :
Créer un système externe en fonction de la base de données exemple Northwind
Exposer les exemples de données via OData en créant un service Windows Communication Foundation (WCF).
Créez un service d’interrogation qui surveillera les modifications apportées aux données et informera SharePoint de ces modifications.
Créer un récepteur d'événements externes qui s'exécute lorsque des éléments sont ajoutés aux données externes et, par conséquent, crée un nouvel élément de liste sur une liste de notifications.
Conditions préalables et la configuration système
Pour exécuter cet exemple, vous devez les conditions préalables suivantes :
Visual Studio 2012
Outils de développement Office pour Visual Studio 2013
SQL Server
SharePoint
Internet Information Services 7.0
Base de données exemple Northwind
Créer les composants pour les systèmes externes
La majeure partie de la configuration s'effectue que sur le système externe. Pour les récepteurs d'événements externes fonctionnent correctement, les composants suivants doivent être présents et qu'elle fonctionne sur le système externe :
Abonnements : Une table qui contient des informations sur les abonnés que vous souhaitez être averti des modifications apportées aux données externes.
Stockent les modifications : Une table qui est utilisée pour stocker les modifications apportées aux éléments de données. Il joue le rôle stockage temporaire uniquement, car le service d'interrogation supprime l'élément dans le tableau lorsque des notifications sont envoyées aux abonnés dans SharePoint.
Service d'interrogation : Requis dans ce scénario comme moyen de vérification lors de données a été modifiées et soumises à la table de modification. Le service d'interrogation interroge la table de modification et assemble un package de notification est envoyé à l'adresse de livraison de SharePoint (point de terminaison REST) stocké dans le magasin de l'abonnement.
Service de données OData WCF : Afin d'exposer les données à partir de la base de données du système externe, vous devez créer un service WCF. Ce service, en cours d'exécution sur les Services Internet (IIS), fournit l'interface RESTful et de flux OData qui est nécessaire pour ce scénario.
Configurer le système externe
La première tâche consiste à configurer le système externe.
Attacher la base de données exemple Northwind
La première partie de la préparation du système principal consiste à ajouter la base de données exemple Northwind à une instance d'exécution de SQL Server. Si vous avez déjà la base de données exemple Northwind installée, vous pouvez exécuter les scripts dans la section suivante pour créer les objets supplémentaires requis pour les notifications d'événements externes travailler.
Toutefois, si Northwind n’est pas installé, consultez Installation de l’exemple de base de données Northwind.
La base de données est également incluse dans l’exemple de code SharePoint : Créer un récepteur d’événements distants pour les données externes.
Créer les abonnements
Lorsque la base de données Northwind est installé, ouvrez une nouvelle fenêtre de requête et exécutez le script suivant.
USE [Northwind]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[EntitySubscribe](
[SubscriptionId] [int] IDENTITY(1,1) NOT NULL,
[EntityName] [nvarchar](250) NULL,
[DeliveryURL] [nvarchar](250) NULL,
[EventType] [int] NULL,
[UserId] [nvarchar](50) NULL,
[SubscribeTime] [timestamp] NULL,
[SelectColumns] [nvarchar](10) NULL,
CONSTRAINT [PK_Subscribe] PRIMARY KEY CLUSTERED
(
[SubscriptionId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Cette opération crée une table dans la base de données Northwind nommé EntitySubscribe. Ceci permet les abonnements visés au plus tôt.
Créer le magasin de modification
Exécutez le script suivant pour créer la table de modification qui enregistre les modifications apportées aux données dans la table Customers.
USE [Northwind]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customers_Updates](
[CustomerID] [nchar](5) NOT NULL,
[CompanyName] [nvarchar](40) NOT NULL,
[ContactName] [nvarchar](30) NULL,
[ContactTitle] [nvarchar](30) NULL,
[Address] [nvarchar](60) NULL,
[City] [nvarchar](15) NULL,
[Region] [nvarchar](15) NULL,
[PostalCode] [nvarchar](10) NULL,
[Country] [nvarchar](15) NULL,
[Phone] [nvarchar](24) NULL,
[Fax] [nvarchar](24) NULL,
[TimeAdded] [datetime] NULL,
[EventType] [int] NULL,
CONSTRAINT [PK_Customers_Updates] PRIMARY KEY CLUSTERED
(
[CustomerID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Cette opération ajoute une table appelée Customers_Updates qui stocke les informations sur l'enregistrement qui a été ajouté à la table Customers.
Créer le déclencheur de modification
Le déclencheur changement est déclenché lorsque les modifications apportées à la table Customers. Chaque fois qu'un enregistrement est ajouté aux clients, SQL Server exécute le déclencheur, qui insère un nouvel enregistrement dans la table Customers_Updates avec les informations sur l'enregistrement.
Pour créer le déclencheur, exécutez la requête suivante.
USE [Northwind]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE trigger [dbo].[Customer_insupd] on [dbo].[Customers] for
INSERT
AS
DECLARE
@CustomerID nchar(5),
@CompanyName nvarchar(40),
@ContactName nvarchar(30) ,
@ContactTitle nvarchar(30) ,
@Address nvarchar(60) ,
@City nvarchar(15) ,
@Region nvarchar(15) ,
@PostalCode nvarchar(10) ,
@Country nvarchar(15) ,
@Phone nvarchar(24) ,
@Fax nvarchar(24),
@TimeAdded datetime,
@EventType int
Select @CustomerID = CustomerId, @CompanyName=CompanyName,
@ContactName=ContactName, @ContactTitle=ContactTitle,
@Address=Address, @City=City, @Region=Region,
@PostalCode =PostalCode, @Country=Country,
@Phone=Phone,@Fax=Fax,@EventType=1
from inserted
insert into Customers_Updates
(CustomerId,CompanyName,
ContactName, ContactTitle,
Address, City, Region,
PostalCode,Country,
Phone,Fax,TimeAdded,EventType) values
(@CustomerId,@CompanyName,
@ContactName, @ContactTitle,
@Address, @City, @Region,
@PostalCode,@Country,
@Phone,@Fax,SYSDATETIME(),@EventType)
GO
Remarque
Si vous utilisez vos propres procédures stockées personnalisées telles que définies dans votre modèle BDC, vous pouvez également créer les déclencheurs de suppression et de mise à jour. Les déclencheurs supplémentaires ne sont pas couvertes dans le cadre de ce scénario.
Créer les procédures stockées
Si vous utilisez l'accès direct aux tables avec Business Connectivity Services, ces procédures ne seront pas nécessaires. Toutefois, si vous définissez vos propres procédures et le code personnalisé sur le système externe, vous pouvez souhaiter ajouter ces pour autoriser l'accès à la table à partir de SQL Server.
// DeleteEventRecords stored procedure
USE [Northwind]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[proc_DeleteEventRecords]
@CustomerID nchar(5), @EventType int
AS
Delete from Customers_Updates
WHERE CustomerID like @CustomerID AND EventType=@EventType
GO
La procédure stockée de SubscribeEntity créera un enregistrement dans le magasin d'abonnement.
// SubscribeEntity
USE [Northwind]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SubscribeEntity]
@EntityName Varchar(255),
@EventType Integer,
@DeliveryAddress Varchar(255),
@SelectColumns Varchar(10)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
Insert into EntitySubscribe(EntityName,DeliveryURL,EventType,SelectColumns)
values (@EntityName,@DeliveryAddress,@EventType,@SelectColumns)
END
GO
Créer un Service OData
Le flux OData est hébergé à l'intérieur d'un Service de données WCF. Ce service WCF puis hébergé par IIS dans une application web.
Les étapes suivantes créent un nouveau service de données WCF d'ASP.NET.
Pour créer l'application de Service de données WCF
Dans Visual Studio 2012, dans le menu fichier, choisissez Nouveau, projet.
Dans la boîte de dialogue Nouveau projet, sous le nœud Visual c#, sélectionnez le modèle Web, puis choisissez Application Web ASP.NET.
Entrez NorthwindService comme nom du projet, puis cliquez sur OK.
Ensuite, à l'aide de l'Assistant de Visual Studio, Découvrez le schéma de la source de données et l'utiliser pour créer un modèle de données d'entité ADO.NET.
Pour définir le modèle de données
Dans L'Explorateur de solutions, ouvrez le menu contextuel du projet ASP.NET et choisissez Ajouter un nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez le modèle de données, puis ADO.NET Entity Data Model.
Pour le nom du modèle de données, entrez Northwind.edmx.
Dans l'Assistant Entity Data Model, sélectionnez Générer à partir de la base de données, puis cliquez sur suivant.
Connectez le modèle de données à la base de données en effectuant l'une des opérations suivantes :
Si vous n'avez pas une connexion de base de données est déjà configurée, cliquez sur Nouvelle connexion et créer une nouvelle connexion. Pour plus d'informations, consultez la rubrique Comment : créer des connexions aux bases de données SQL Server. Cette instance de SQL Server doit avoir la base de données exemple Northwind attaché. Cliquez sur suivant.
-ou-
Si vous disposez d'une connexion de base de données déjà configurée pour se connecter à la base de données Northwind, choisissez cette connexion dans la liste des connexions, puis cliquez sur suivant.
Dans la page finale de l'Assistant, activez les cases à cocher pour toutes les tables dans la base de données et désactivez les cases à cocher pour les vues et les procédures stockées.
Choisissez le bouton Terminer pour fermer l'Assistant.
Dans l'étape suivante, vous créez le service réel qui est hébergé par IIS qui fourniront les moyens pour accéder aux données externes via Representational State Transfer (REST).
Pour créer le Service de données WCF
Dans L'Explorateur de solutions, ouvrez le menu contextuel pour votre projet ASP.NET et choisissez Ajouter un nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément, choisissez le Service de données WCF.
Pour le nom du service, entrez Northwind.
Dans le code du service de données, dans la définition de la classe qui définit le service de données, remplacez le commentaire
/* TODO: put your data source class name here */
par le type qui est le conteneur d’entités du modèle de données, qui dans ce cas estNorthwindEntities
. La définition de classe doit se présenter comme suit.
public class Northwind : DataService<NorthwindEntities>
Pour définir la sécurité sur le service
- Vous devez maintenant modifier la sécurité pour autoriser l'accès aux données à partir du flux par des consommateurs externes d'OData. Lors de la création d'un service WCF, tout accès est refusé par défaut. Apportez les modifications suivantes à la classe que vous venez de créer.
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
Créer l'opération de service Subscribe (facultatif)
Le service WCF peut également être codé avec un moyen de gérer les demandes de s'abonner et annuler l'abonnement à partir de SharePoint. Si vous choisissez de créer des procédures stockées personnalisées pour votre application sera chacun géré par une opération de service.
S'abonner: opération abonner le prend la requête envoyée par SharePoint et récupère l'adresse du destinataire, le type d'événement et l'entité. Il doit également générer un subscriptionId et puis enregistrez tous ces éléments dans la table de base de données.
/// The Subscribe service operation maps directly to the Subscribe stereotype
/// found in the BDC model
[WebGet]
public string Subscribe(string deliveryUrl, string eventType)
{
// Generate a new Guid that will function as the subscriptionId.
string subscriptionId = new Guid().ToString();
// This sproc will be used to create the subscription in the database.
string subscribeSproc = "SubscribeEntity";
// Create connection to database.
using (SqlConnection conn = new SqlConnection(sqlConn))
{
SqlCommand cmd = new SqlCommand(subscribeSproc, conn);
cmd.Parameters.Add(new SqlParameter("SubscriptionId", subscriptionId));
cmd.Parameters.Add(new SqlParameter("EntityName", entityName));
cmd.Parameters.Add(new SqlParameter("EventType", eventType));
cmd.Parameters.Add(new SqlParameter("DeliveryAddress", deliveryUrl));
cmd.Parameters.Add(new SqlParameter("SelectColumns", selectColumns));
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
throw e;
}
finally
{
conn.Close();
}
return subscriptionId;
}
Remarque
[!REMARQUE] Si SQL Server est configuré pour l'authentification Windows, il essaiera d'authentifier la demande avec l'identité de Pool d'applications. Assurez-vous que le compte configuré dans le Pool d'applications possède des droits pour lire et écrire dans la base de données.
Créer le service d'interrogation
Le service d’interrogation est un service Windows qui est chargé d’interroger la table des modifications et de créer et d’envoyer des notifications à SharePoint ou SharePoint Online à l’adresse de remise spécifique.
Ensuite, vous créez un nouveau projet de Service Windows qui sera enregistré sur l'ordinateur hôte WCF. Une fois le projet est enregistré, vous pouvez afficher le service en cours d'exécution dans Microsoft Management Console (MMC).
Pour créer un projet
Ouvrez Visual Studio 2012.
Créer un nouveau projet en utilisant le modèle de Service Windows, nommez le projet PollingServiceet cliquez sur le bouton OK.
Lorsque le projet est créé, ouvrez le fichier PollingService.cs en mode code.
Ajoutez le code suivant dans la classe nouvellement créée.
public partial class PollingService : ServiceBase
{
string subscriptionStorePath = string.Empty;
public PollingService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
// This is the timer which fires every minute.
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(SendEventNotification);
aTimer.Interval = 60000;
aTimer.Enabled = true;
}
protected override void OnStop()
{}
private void SendEventNotification(object sender, EventArgs e)
{
try
{
List<ItemChange> events = itemChangeLookUp();
triggerEventPerSubscription(events);
}
catch (Exception ex)
{
EventLog.Log = "Application";
EventLog.Source = ServiceName;
EventLog.WriteEntry("PollingService" + ex.Message, EventLogEntryType.Error);
}
}
private void triggerEventPerSubscription(List<ItemChange> events)
{
foreach (ItemChange itemChangeEvent in events)
{
SendNotification(itemChangeEvent, itemChangeEvent.DeliveryAddress);
string message = string.Format("PollingService.TriggerEventPerSubscription: Notification sent for item {0} of eventType
{1}", itemChangeEvent.CustomerId, itemChangeEvent.EventType);
EventLog.Log = "Application";
EventLog.Source = ServiceName;
EventLog.WriteEntry(message);
}
}
private List<ItemChange> itemChangeLookUp()
{
EventLog.Log = "Application";
EventLog.Source = ServiceName;
EventLog.WriteEntry("Polling for Item Change");
List<ItemChange> itemChangeList = new List<ItemChange>();
string connectionString = "Data Source=.;Initial Catalog=Northwind;Integrated Security=true";
// Provide the query string with a parameter placeholder.
string queryString = "Proc_RetrieveEventRecords";
// Specify the parameter value.
int paramValue = -50;
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@TimeSince", paramValue);
try
{
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
ItemChange item = new ItemChange(reader["CustomerID"].ToString(), Int32.Parse(reader["EventType"].ToString()),
reader[14].ToString(), reader["DeliveryUrl"].ToString(), reader["CompanyName"].ToString(),
reader["ContactName"].ToString(),reader["ContactTitle"].ToString(), reader["Address"].ToString(),
reader["City"].ToString(), reader["Region"].ToString(), reader["Country"].ToString(), reader["PostalCode"].ToString(),
reader["Phone"].ToString(), reader["Fax"].ToString());
itemChangeList.Add(item);
}
reader.Close();
}
catch (Exception ex)
{
EventLog.Log = "Application";
EventLog.Source = ServiceName;
EventLog.WriteEntry("PollingService : ItemChangeLookup " + ex.Message, EventLogEntryType.Error);
}
}
string message = string.Format("{0} items changes", itemChangeList.Count);
EventLog.Log = "Application";
EventLog.Source = ServiceName;
EventLog.WriteEntry(message);
return itemChangeList;
}
L'étape suivante consiste à créer un fichier exécutable qui peut être ajouté aux services en cours d'exécution sur l'ordinateur OData.
Pour compiler et déployer le service d'interrogation
Appuyez sur F5 pour générer votre projet.
Ouvrez l' invite de commandes pour VS2012.
À l'invite, accédez à votre emplacement de sortie de projet.
Dans le répertoire Bin, recherchez le fichier PollingService.exe.
Entrez installutil PollingService.exe et appuyez sur ENTRÉE.
Vérifiez que le service est exécuté en exécutant la console MMC Services.
Composants SharePoint requis
Pour terminer l’ensemble du système, les composants suivants sont requis sur le serveur qui exécute SharePoint.
Type de contenu externe : Le type de contenu externe est en fait une définition XML de la source de données externe. Pour ce scénario, vous utiliserez les nouveaux outils de création automatique dans Visual Studio 2012 pour détecter la source de données et de créer automatiquement de type de contenu externe.
Récepteur d’événements externes : Le récepteur d’événements distant ou externe est la chose qui rend possible les actions sur les modifications de données externes dans SharePoint. Vous pouvez créer des récepteurs d'événements pour les listes externes et pour les entités.
Un récepteur d'événements qui est créé pour une liste externe est similaire aux autres récepteurs d'événements pour les listes SharePoint. Vous créez le code et l'attacher à la liste. Lorsqu'une action est effectuée sur les données qui sont représentées par la liste, le récepteur d'événements s'exécute.
Un récepteur d'événements pour les entités est exécuté comme un récepteur d'événements basé sur une liste, à la seule différence qu'il ne doit pas être attachés à une liste. Il reçoit des notifications de la même manière, mais elle n'a pas besoin de l'interface qui est associée à l'exemple de base de listes. L'avantage de ceci est que vous pouvez intercepter les notifications par programme et créer le code pour effectuer des opérations. Dans ce scénario, cette action consiste à créer un nouvel enregistrement dans la liste de notifications
Liste de notifications : La liste de notifications est une liste SharePoint simple qui est utilisée pour enregistrer les notifications reçues à partir du système externe. Pour chaque nouvel enregistrement ajouté au système externe, un enregistrement est créé dans la liste de notifications.
Configurer les composants SharePoint
Maintenant que vous avez le système externe est configuré, il est temps à passer à la création de l'autre moitié de l'équation. Vous allez maintenant créer les composants à être hébergées sur SharePoint.
Pour créer un nouveau projet de Visual Studio 2012
Dans Visual Studio 2012, choisissez Nouveau projet.
Choisissez le modèle de projet d'application SharePoint.
Outils de développement Office pour Visual Studio 2013 Ajout d'un Assistant de création automatique qui va découvrir le schéma d'une source de données et ensuite créer un type de contenu externe à partir de qui.
Pour ajouter un nouveau type de contenu externe
Dans L'Explorateur de solutions, ouvrez le menu contextuel du projet et choisissez Ajouter, Types de contenu pour une Source de données externe.
Cette opération démarre l' Assistant Personnalisation de SharePoint, qui est utilisée pour la génération automatique de type de contenu externe.
Pour plus d’informations sur la création de types de contenu externe, voir How to: Create an external content type from an OData source in SharePoint.
Vous allez maintenant modifier le code XML qui a été généré à l'étape précédente pour ajouter une méthode pour s'abonner. Cela permettra de BCS communiquer avec le système externe lorsque quelqu'un s'abonne à être averti des modifications apportées aux données externes.
Pour ajouter la méthode Subscribe sur le type de contenu externe XML
Dans L'Explorateur de solutions, recherchez le nouveau nœud nommé des Types de contenu externe.
Recherchez le fichier Customers.ect et ouvrez-le avec un éditeur XML.
Faites défiler vers le bas de la page et collez la méthode suivante dans la
<Methods>
section .
<Method Name="SubscribeCustomer" DefaultDisplayName="Customer Subscribe" IsStatic="true">
<Properties>
<Property Name="ODataEntityUrl" Type="System.String">/EntitySubscribes</Property>
<Property Name="ODataHttpMethod" Type="System.String">POST</Property>
<Property Name="ODataPayloadKind" Type="System.String">Entry</Property>
<Property Name="ODataFormat" Type="System.String">application/atom+xml</Property>
<Property Name="ODataServiceOperation" Type="System.Boolean">false</Property>
</Properties>
<AccessControlList>
<AccessControlEntry Principal="NT Authority\\Authenticated Users">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
<Parameters>
<Parameter Direction="In" Name="@DeliveryURL">
<TypeDescriptor TypeName="System.String" Name="DeliveryURL" >
<Properties>
<Property Name="IsDeliveryAddress" Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
</Parameter>
<Parameter Direction="In" Name="@EventType">
<TypeDescriptor TypeName="System.Int32" Name="EventType" >
<Properties>
<Property Name="IsEventType" Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
</Parameter>
<Parameter Direction="In" Name="@EntityName">
<TypeDescriptor TypeName="System.String" Name="EntityName" >
<DefaultValues>
<DefaultValue MethodInstanceName="SubscribeCustomer" Type="System.String">Customers</DefaultValue>
</DefaultValues>
</TypeDescriptor>
</Parameter>
<Parameter Direction="In" Name="@SelectColumns">
<TypeDescriptor TypeName="System.String" Name="SelectColumns" >
<DefaultValues>
<DefaultValue MethodInstanceName="SubscribeCustomer" Type="System.String">*</DefaultValue>
</DefaultValues>
</TypeDescriptor>
</Parameter>
<Parameter Direction="Return" Name="SubscribeReturn">
<TypeDescriptor Name="SubscribeReturnRootTd" TypeName="Microsoft.BusinessData.Runtime.DynamicType">
<TypeDescriptors>
<TypeDescriptor Name="SubscriptionId" TypeName="System.String" >
<Properties>
<Property Name="SubscriptionIdName" Type="System.String">Default</Property>
</Properties>
<Interpretation>
<ConvertType LOBType="System.Int32" BDCType="System.String"/>
</Interpretation>
</TypeDescriptor>
<TypeDescriptor Name="DeliveryURL" TypeName="System.String" />
<TypeDescriptor Name="SelectColumns" TypeName="System.String" >
</TypeDescriptor>
<TypeDescriptor Name="EntityName" TypeName="System.String" />
<TypeDescriptor Name="EventType" TypeName="System.Int32" />
<TypeDescriptor Name="UserId" TypeName="System.String" />
<!--TypeDescriptor Name="SubscribeTime" TypeName="System." /-->
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="EventSubscriber" ReturnParameterName="SubscribeReturn" ReturnTypeDescriptorPath="SubscribeReturnRootTd" Default="true" Name="SubscribeCustomer" DefaultDisplayName="Customer Subscribe">
<AccessControlList>
<AccessControlEntry Principal="NT Authority\\Authenticated Users">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
</MethodInstances>
</Method>
Vous allez maintenant ajouter le code client pour permettre à votre liste de s'abonner à des notifications d'événement.
Pour ajouter du code au fichier App.js pour lancer l'abonnement
- Dans le dossier Scripts de votre projet Complément SharePoint, ouvrez le fichier App.js. Collez la méthode suivante dans le fichier.
function SubscribeEntity()
{
var notificationCallback = new SP.BusinessData.Runtime.NotificationCallback(context, "http://[MACHINE NAME]:8585");
var url = myweb.get_url();
notificationCallback.set_notificationContext(url);
context.load(notificationCallback);
var subscription = entity.subscribe(1, notificationCallback, "", "SubscribeCustomer", lobSystemInstance);
context.load(subscription);
context.executeQueryAsync(OnSubscribeSuccess, failmethod);
}
Pour inscrire le récepteur d'événements avec ce script, vous devez créer un bouton dans la page Default.aspx dans votre projet et appelez le SubscribeEntity() à partir de la méthode onclick().
- Ouvrez la page Default.aspx et ajoutez le code HTML suivant.
<input type="button" value="Subscribe" onclick="SubscribeEntity();"/>
Pour les événements fonctionnent, vous devez également activer la liste SharePoint accepter des événements externes. Cette opération est effectuée en activant la fonctionnalité des événements externes.
Voici un script qui activera la fonctionnalité à l'aide de code client.
function EnableEventing_Clicked()
{
var clientContext = SP.ClientContext.get_current();
var web = clientContext.get_web();
var features = web.get_features();
clientContext.load(features);
// The GUID provided here is the feature that allows external events and alerts.
var eventingFeatureId = new SP.Guid('5B10D113-2D0D-43BD-A2FD-F8BC879F5ABD');
var eventingFeature = features.add(eventingFeatureId, true, SP.FeatureDefinitionScope.farm);
clientContext.load(eventingFeature);
var onEventingFeatureActivated = function () {
alert("eventing feature activated");
};
clientContext.executeQueryAsync(Function.createDelegate(this,
onEventingFeatureActivated));
}
Comme avec Subscribe, vous allez ajouter un bouton à la page qui activera la fonctionnalité.
Ajoutez le code HTML suivant à la page Default.aspx, juste en dessous du bouton s'abonner.
<input type="button" value="EnableEventing" onclick="EnableEventing_Clicked();"" />
Ensuite, dans ce scénario, vous devez ajouter une liste de notifications qui affiche les notifications envoyées par le système externe.
Pour ajouter la liste de notifications
Dans L'Explorateur de solutions, ouvrez le menu contextuel pour le nom du projet, puis choisissez Ajouter.
Choisissez le modèle de liste, puis nommez la liste NotificationList.
Pour simuler un récepteur d'événements inscrit auprès de SharePoint dans le global assembly cache, cet exemple fournit une application console qui démarre à l'écoute des modifications. Lorsqu'il reçoit une notification, il ajoute un élément de liste à l' NotificationList.
Pour démarrer le récepteur d'événements en ligne de commande
Ouvrez la RemoteEventReceiverConsoleApp.
Ouvrez le fichier Program.cs et modifiez le nom de votre ordinateur local (ou sur l'ordinateur exécutant le récepteur d'événements).
Cliquez sur le bouton Démarrer dans Visual Studio pour exécuter l'application de console.
Ouvre une fenêtre de commande, qui indique que l'application a compilé correctement et qu'il écoute les notifications de modification du système externe. Laissez cette fenêtre ouverte au cours de ce test.
Pour déployer l'application pour SharePoint
- Appuyez sur F5 avec Visual Studio ouvre pour générer et déployer l'application.
Tester l'application
Vous pouvez désormais visualiser l'application en action.
Parcourir l'application pour afficher les différentes listes qui représentent les données dans le système externe.
Cliquez sur la liste des clients.
Ajouter un nouveau client.
Permet d'afficher le nouvel élément de liste que vous venez de créer.
Accédez à la liste de notifications pour vérifier que le système externe a notifié SharePoint d'une modification apportée à la table Customers.
N'oubliez pas que le minuteur est configuré pour envoyer des notifications toutes les minutes. Pendant le test, vous devrez peut-être attendre quelques instants avant de voir les notifications validées.