Créer un flux de travail personnalisé (Master Data Services)

S’applique à :SQL Server - Windows uniquement Azure SQL Managed Instance

Master Data Services utilise des règles d’entreprise pour créer des solutions de flux de travail de base, telles que la mise à jour et la validation automatique des données et l’envoi de notifications par e-mail, en fonction des conditions que vous spécifiez. Lorsque vous avez besoin de traitements plus complexes que ceux fournis par ces actions de flux de travail intégrées, utilisez un flux de travail personnalisé. Un flux de travail personnalisé est un assembly .NET. que vous créez. Lorsque votre assembly de flux de travail est appelé, votre code peut exécuter n'importe quelle action requise par votre situation. Par exemple, si votre workflow nécessite un traitement d’événements complexe, tel que des approbations multiniveau ou des arborescences de décision complexes, vous pouvez configurer Master Data Services pour démarrer un workflow personnalisé qui analyse les données et détermine où les envoyer pour approbation.

Comment s'effectue le traitement des flux de travail personnalisés

Trois composants main sont impliqués pour traiter les flux de travail personnalisés : l’application web Master Data Manager, SQL Server service d’intégration de flux de travail MDS et l’assembly de gestionnaire de flux de travail. Ces composants fonctionnent sur un flux de travail personnalisé comme suit :

  1. Vous utilisez Master Data Manager pour valider une entité qui démarre un workflow.

  2. Master Data Manager envoie les membres qui répondent aux conditions de la règle d’entreprise à une file d’attente Service Broker dans la base de données Master Data Services.

  3. À intervalles réguliers, SQL Server service d’intégration de flux de travail MDS appelle une procédure stockée dans la base de données Master Data Services.

  4. Lorsque cette procédure stockée trouve des enregistrements dans la file d'attente de Service Broker, elle les retourne au service d'intégration de flux de travail MDS de SQL Server.

  5. Les services d'intégration de flux de travail MDS de SQL Server acheminent les données vers votre assembly de gestionnaire de flux de travail.

Notes

Remarque : le service d'intégration de flux de travail MDS de SQL Server est destiné à déclencher des processus simples. Si votre code personnalisé requiert un traitement complexe, effectuez votre traitement dans un thread distinct ou à l'extérieur du processus de flux de travail.

Configurer des services Master Data pour les flux de travail personnalisés

La création d’un workflow personnalisé nécessite l’écriture d’un code personnalisé et la configuration de Master Data Services pour transmettre des données de workflow à votre gestionnaire de workflow. Procédez comme suit pour activer un traitement de flux de travail personnalisé :

  1. Créez un assembly .NET qui implémente Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.

  2. Configurez SQL Server service d’intégration de flux de travail MDS pour vous connecter à votre base de données Master Data Services et associer une balise à votre gestionnaire de flux de travail.

  3. Démarrez le service d'intégration de flux de travail MDS de SQL Server.

  4. Créez une règle d’entreprise dans Master Data Manager qui démarre un flux de travail marqué avec le nom de votre gestionnaire de workflow.

  5. Appliquez la règle d'entreprise à un membre qui déclenche votre flux de travail personnalisé.

Créer l'assembly de gestionnaire de flux de travail

Un flux de travail personnalisé est un assembly de bibliothèque de classes .NET qui implémente l’interface Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender . SQL Server mdS Workflow Integration Service appelle la méthode Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* pour exécuter votre code. Pour obtenir un exemple de code qui implémente Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* , consultez Exemple de flux de travail personnalisé (Master Data Services).

Suivez ces étapes afin d'utiliser Visual Studio 2010 pour créer un assembly que le service d'intégration de flux de travail MDS de SQL Server peut appeler pour gérer un flux de travail personnalisé :

  1. Dans Visual Studio 2010, créez un projet de Bibliothèque de classes qui utilise le langage de votre choix. Pour créer une bibliothèque de classes C#, sélectionnez les types de projet Visual C#\Windows, puis sélectionnez le modèle de Bibliothèque de classes. Entrez un nom pour votre projet, tel que MDSWorkflowTest, puis cliquez sur OK.

  2. Ajoutez une référence à Microsoft.MasterDataServices.WorkflowTypeExtender.dll. Cet assembly se trouve dans <Votre dossier> d’installation\Master Data Services\WebApplication\bin.

  3. Ajoutez « using Microsoft.MasterDataServices.Core.Workflow; » à votre fichier de code C#.

  4. Héritez de Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender dans votre déclaration de classe. La déclaration de classe doit ressembler à : « public class WorkflowTester : IWorkflowTypeExtender ».

  5. Implémentez l’interface Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender . La méthode Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* est appelée par SQL Server service d’intégration de flux de travail MDS pour démarrer votre workflow.

  6. Copiez votre assembly à l’emplacement de l’exécutable SQL Server mdS Workflow Integration Service, nommé Microsoft.MasterDataServices.Workflow.exe, dans <Votre dossier> d’installation\Master Data Services\WebApplication\bin.

Configurer le service d'intégration de flux de travail MDS de SQL Server

Modifiez le fichier de configuration Master Data Services pour inclure les informations de connexion de votre base de données Master Data Services et pour associer une balise à votre assembly de gestionnaire de flux de travail en procédant comme suit :

  1. Recherchez Microsoft.MasterDataServices.Workflow.exe.config dans <Votre dossier> d’installation\Master Data Services\WebApplication\bin.

  2. Ajoutez les informations de connexion de base de données Master Data Services au paramètre « ConnectionString ». Si votre installation de SQL Server utilise un classement respectant la casse, le nom de la base de données doit être entré dans le même cas que dans la base de données. Par exemple, la balise complète du paramètre peut se présenter comme suit :

    <setting name="ConnectionString" serializeAs="String">  
        <value>Server=myServer;Database=myDatabase;Integrated Security=True</value>  
    </setting>  
    
  3. Sous le paramètre « ConnectionString » ajoutez un paramètre « WorkflowTypeExtenders » pour associer un nom de balise à votre assembly de gestionnaire de flux de travail. Par exemple :

    <setting name="WorkflowTypeExtenders" serializeAs="String">  
        <value>TEST=MDSWorkflowTestLib.WorkflowTester, MDSWorkflowTestLib</value>  
    </setting>  
    

    Le texte interne de la <balise de valeur> se présente sous la forme <Workflow tag>=<assembly-qualified workflow type name>. <La balise> de flux de travail est un nom que vous utilisez pour identifier l’assembly de gestionnaire de flux de travail lorsque vous créez une règle d’entreprise dans Master Data Manager. <Le nom> du type de flux de travail qualifié d’assembly est le nom qualifié d’espace de noms de votre classe de flux de travail, suivi d’une virgule, suivi du nom complet de l’assembly. Si votre assembly est un nom fort, vous devez également inclure les informations de version et son PublicKeyToken. Vous pouvez inclure plusieurs <balises de paramètre> si vous avez créé plusieurs gestionnaires de flux de travail pour différents types de flux de travail.

Notes

Selon la configuration de votre serveur, vous pouvez obtenir une erreur « Accès refusé » quand vous essayez d’enregistrer le fichier Microsoft.MasterDataServices.Workflow.exe.config. Si cela se produit, désactivez temporairement le contrôle de compte d'utilisateur (UAC) sur le serveur. Pour cela, ouvrez le panneau de configuration et cliquez sur Système et sécurité. Sous Centre de maintenance, cliquez sur Modifier les paramètres du contrôle de compte d’utilisateur. Dans la boîte de dialogue Paramètres de contrôle de compte d’utilisateur, faites glisser la barre vers le bas afin de ne pas recevoir de notification. Redémarrez votre ordinateur et répétez les étapes précédentes pour modifier votre fichier de configuration. Après l'enregistrement du fichier, réinitialisez les paramètres de contrôle de compte d'utilisateur au niveau par défaut.

Démarrer le service d'intégration de flux de travail MDS de SQL Server

Par défaut, le service d'intégration de flux de travail MDS de SQL Server n'est pas installé. Vous devez installer le service avant de pouvoir l'utiliser. Pour plus de sécurité, créez un utilisateur local pour le service et accordez à cet utilisateur uniquement les autorisations nécessaires pour effectuer les opérations de flux de travail. Pour créer un utilisateur, installer le service et le démarrer, procédez comme suit :

  1. Utilisez les utilisateurs locaux et le gestionnaire de groupes pour créer un utilisateur local nommé, par exemple, mds_workflow_service.

  2. Utilisez SQL Server Management Studio pour accorder l'autorisation utilisateur mds_workflow_service permettant d'exécuter la procédure stockée [mdm].[udpExternalActionsGet]. Pour ce faire, créez une connexion pour le compte mds_workflow_service, créez un utilisateur dans la base de données Master Data Services, mappez cet utilisateur à la connexion mds_workflow_service et accordez à l’utilisateur l’autorisation EXECUTE sur le [mdm].[ udpExternalActionsGet] procédure stockée.

  3. Octroyez l'autorisation utilisateur mds_workflow_service pour exécuter l'assembly de gestionnaire de flux de travail. Pour cela, ajoutez l’utilisateur mds_workflow_service à l’onglet Sécurité de la boîte de dialogue Propriétés de l’assembly du gestionnaire de flux de travail et accordez à l’utilisateur mds_workflow_service les autorisations READ et EXECUTE.

  4. Accordez l'autorisation utilisateur mds_workflow_service pour exécuter l'exécutable du service d'intégration de flux de travail MDS de SQL Server. Pour ce faire, ajoutez l’utilisateur mds_workflow_service à l’onglet Sécurité des propriétés de Microsoft.MasterDataServices.Workflow.exe, dans <Votre dossier> d’installation\Master Data Services\WebApplication\bin et accordez à l’utilisateur mds_workflow_service les autorisations READ et EXECUTE.

  5. Installez le service d'intégration de flux de travail MDS de SQL Server à l'aide de l'utilitaire d'installation .NET, nommé InstallUtil.exe. InstallUtil.exe se trouve dans le dossier d'installation de .NET, par exemple C:\Windows\Microsoft.NET\Framework\v4.0.30319\. Installez le service d'intégration de flux de travail MDS de SQL Server en entrant la commande suivante à l'invite de commandes avec élévation de privilèges :

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil Microsoft.MasterDataServices.Workflow.exe  
    

    Spécifiez l'utilisateur mds_workflow_service lorsque vous y êtes invité pendant l'installation.

  6. Démarrez le service d'intégration de flux de travail MDS de SQL Server à l'aide du composant logiciel enfichable Services. Pour ce faire, recherchez SQL Server service d’intégration de flux de travail MDS dans le composant logiciel enfichable Services, sélectionnez-le, puis cliquez sur le lien Démarrer.

Créer une règle d'entreprise de flux de travail

Utilisez Master Data Manager pour créer et publier une règle d’entreprise qui démarrera le flux de travail lorsqu’elle sera appliquée. Vous devez vous assurer que votre règle d'entreprise contient des actions qui modifient des valeurs d'attribut, afin que la logique prenne la valeur « false » après avoir été appliquée une fois. Par exemple, votre règle d'entreprise peut avoir la valeur « true » si une valeur d'attribut de prix est supérieure à 500 et la valeur d'attribut approuvée est vide. La règle peut ensuite inclure deux actions : une pour définir la valeur d'attribut approuvée en attente et une pour démarrer le flux de travail. Ou bien, vous pouvez créer une règle qui utilise la condition « has changed » et ajouter vos attributs pour changer les groupes de suivi. Pour plus d’informations sur les règles d’entreprise, consultez Règles d’entreprise (Master Data Services).

Créez une règle d’entreprise qui démarre un workflow personnalisé dans Master Data Manager en procédant comme suit :

  1. Dans l’éditeur de règles d’entreprise de Master Data Manager, après avoir spécifié les conditions de votre règle d’entreprise, faites glisser l’action Démarrer le flux de travail de la liste Actions externes vers l’étiquette Action du volet THEN.

  2. Dans le volet Modifier l’action, dans la zone Type de flux de travail, tapez la balise qui identifie l’assembly de gestionnaire de flux de travail. Il s'agit de la balise que vous avez spécifiée dans le fichier de configuration pour votre assembly, par exemple, TEST.

  3. Éventuellement, cochez la case Inclure les données de membre. Choisissez cette option pour inclure les noms et les valeurs d'attribut dans le code XML passé au gestionnaire de flux de travail.

  4. Dans la zone Site du flux de travail, tapez le nom d’un site web. Pour votre flux de travail personnalisé, cette information peut ne pas s'appliquer, mais elle peut être utilisée pour ajouter du contexte.

  5. Dans la zone Nom du flux de travail, tapez le nom de votre flux de travail dans Visual Studio. Pour votre flux de travail personnalisé, cette information peut ne pas s'appliquer, mais elle peut être utilisée pour ajouter du contexte.

  6. Enregistrez et publiez la règle d'entreprise.

Appliquer des règles d'entreprise pour démarrer un flux de travail

Appliquez la règle d'entreprise à vos données pour démarrer le flux de travail. Pour ce faire, utilisez Master Data Manager pour modifier l’entité qui contient les membres que vous souhaitez valider. Cliquez sur Appliquer les règles d’entreprise. En réponse à la règle métier, Master Data Manager remplit la file d’attente Service Broker de la base de données Master Data Services. Lorsque le service d'intégration de flux de travail MDS de SQL Server vérifie la file d'attente, il envoie les données à l'assembly du gestionnaire de flux de travail spécifié et efface la file d'attente. L'assembly du gestionnaire de flux de travail s'exécute quelles que soient les actions codées qu'il contient.

Dépanner des flux de travail personnalisés

Si votre assembly de gestionnaire de flux de travail ne reçoit pas de données, vous pouvez essayer de déboguer le service d’intégration de flux de travail MDS de SQL Server ou bien afficher la file d’attente Service Broker.

Déboguer le service d'intégration de flux de travail MDS de SQL Server

Pour déboguer le service d'intégration de flux de travail de SQL Server, effectuez les étapes suivantes :

  1. Utilisez le composant logiciel enfichable Services pour arrêter le service.

  2. Ouvrez une invite de commandes, naviguez jusqu'à l'emplacement du service, puis exécutez le service en mode console en entrant : Microsoft.MasterDataServices.Workflow.exe - console.

  3. Dans Master Data Manager, mettez à jour votre membre et appliquez à nouveau des règles métier. Les journaux détaillés sont affichés dans la fenêtre de la console.

Afficher la file d'attente de Service Broker

La file d'attente Service Broker qui contient les données de référence passées dans le cadre du flux de travail est : mdm.microsoft/mdm/queue/externalaction. Les files d’attente se trouvent dans le Explorateur d'objets de SQL Management Studio sous le nœud Service Broker de la base de données Master Data Services. Notez que, si le service a effacé la file d'attente correctement, cette file d'attente est vide.

Voir aussi

Exemple personnalisé de flux de travail (Master Data Services)
Description personnalisée XML de flux de travail (Master Data Services)