Procédure de développement d'un fournisseur de magasin d'instances
La procédure suivante détaille les étapes de création d'un fournisseur de magasin d'instances personnalisé. Pour obtenir des informations générales sur les fournisseurs de magasin d'instance, de requête et de contrôle, consultez la rubrique Fournisseurs de magasin d'instances, de requête et de contrôle.
Créez un projet de bibliothèque de classes.
Ajoutez une référence à Microsoft.ApplicationServer.StoreProvider.dll, System.Activities.DurableInstancing.dll et System.Runtime.DurableInstancing.dll, ainsi qu'à System.Configuration.dll et System.Data.dll pour compiler l'exemple de code fourni dans cette rubrique.
Ajoutez les instructions using suivantes au début du fichier source.
using Microsoft.ApplicationServer.StoreProvider; using System.Runtime.DurableInstancing; using System.Activities.DurableInstancing; //for the sample code provided in the methods using System.Collections.Specialized; using System.Data; using System.Data.SqlClient;
Créez une classe pour le fournisseur de magasin d'instances dérivée de la classe InstanceStoreProvider.
public sealed class MySqlWorkflowInstanceStoreProvider : InstanceStoreProvider { }
Implémentez la méthode Initialize. Cette méthode accepte un jeu de propriétés correspondant aux informations de configuration spécifiées dans le fichier de configuration. Les données dans le jeu de propriétés sont utilisées pour créer le fournisseur.
La méthode Initialize est appelée avant la méthode CreateInstanceStore ou UniqueProviderIdentifier.
string ConnectionString { get; set; } public override void Initialize(string name, NameValueCollection config) { this.ConnectionString= config["connectionString"]; // Initialize the base class base.Initialize(name, config); }
Implémentez la méthode CreateInstanceStore de la classe InstanceStoreProvider pour renvoyer un objet System.Runtime.DurableInstancing.InstanceStore, dont le client se servira pour exécuter des commandes sur le magasin d'instances.
public override InstanceStore CreateInstanceStore() { // the following line creates an instance of the SqlWorkflowInstanceStore class SqlWorkflowInstanceStore store = new SqlWorkflowInstanceStore(this.ConnectionString); return store; }
Implémentez la méthode UniqueProviderIdentifier. L'ID de fournisseur unique que renvoie cette méthode permet de déterminer si différents objets de fournisseur sont résolus en un magasin sous-jacent identique.
string UniqueStoreIdentifier { get; set; } public override string UniqueProviderIdentifier() { this.UniqueStoreIdentifier = GetUniqueStoreIdentifier(this.ConnectionString); return this.UniqueStoreIdentifier; } private string GetUniqueStoreIdentifier(string connectionString) { using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand()) { command.CommandType = CommandType.Text; command.CommandText = "SELECT TOP (1) [StoreIdentifier] FROM [Microsoft.ApplicationServer.DurableInstancing].[StoreVersion]"; command.Connection = connection; command.Connection.Open(); Guid identifier = (Guid)command.ExecuteScalar(); return identifier.ToString(); } } }
Le service de gestion du flux de travail (WMS, Workflow Management Service) ou un hôte de flux de travail appelle cette méthode sur le fournisseur de magasin d'instances pour obtenir un objet InstanceStore spécifique au magasin. AppFabric inclut un fournisseur de magasin d'instances pour le magasin d'instances de flux de travail SQL, qui crée un objet SqlWorkflowInstanceStore lors de l'appel de la méthode CreateInstanceStore.
Important
Pour plus d'informations sur l'enregistrement du fournisseur auprès d'Microsoft AppFabric 1.1 pour Windows Server, consultez la rubrique Procédure d'enregistrement de fournisseurs personnalisés.
2012-03-05