Erstellen eines benutzerdefinierten Workflows (Master Data Services)

Gilt für:SQL Server – nur Windows Azure SQL Managed Instance

Master Data Services verwendet Geschäftsregeln, um grundlegende Workflowlösungen zu erstellen, z. B. zum automatischen Aktualisieren und Überprüfen von Daten und zum Senden von E-Mail-Benachrichtigungen basierend auf den von Ihnen angegebenen Bedingungen. Wenn Sie Verarbeitungsfunktionen benötigen, die komplexer als die anhand der integrierten Workflowaktionen bereitgestellten Funktionen sind, verwenden Sie einen benutzerdefinierten Workflow. Ein benutzerdefinierter Workflow ist eine .NET-Assembly, die Sie erstellen. Wenn die Workflowassembly aufgerufen wird, kann der Code jede Aktion ausführen, die in Ihrer Situation erforderlich ist. Wenn Ihr Workflow beispielsweise eine komplexe Ereignisverarbeitung erfordert, z. B. mehrstufige Genehmigungen oder komplizierte Entscheidungsstrukturen, können Sie Master Data Services konfigurieren, um einen benutzerdefinierten Workflow zu starten, der die Daten analysiert und bestimmt, wohin sie zur Genehmigung gesendet werden sollen.

Verarbeitung von benutzerdefinierten Workflows

Zum Verarbeiten benutzerdefinierter Workflows sind drei Standard Komponenten beteiligt: die Master Data Manager-Webanwendung, SQL Server MDS Workflow Integration Service und die Workflowhandlerassembly. Diese Komponenten verarbeiten einen benutzerdefinierten Workflow folgendermaßen:

  1. Sie verwenden Master Data Manager, um eine Entität zu überprüfen, die einen Workflow startet.

  2. Master Data Manager sendet Mitglieder, die die Geschäftsregelbedingungen erfüllen, an eine Service Broker-Warteschlange in der Master Data Services Datenbank.

  3. In regelmäßigen Abständen ruft SQL Server MDS Workflow Integration Service eine gespeicherte Prozedur in der Master Data Services-Datenbank auf.

  4. Wenn diese gespeicherte Prozedur Datensätze in der Service Broker-Warteschlange findet, gibt sie diese an den SQL Server MDS Workflow Integration Service zurück.

  5. Der SQL Server-MDS Workflow Integration Service leitet die Daten an die Workflowhandlerassembly weiter.

Hinweis

Hinweis: Der SQL Server MDS Workflow Integration Service ist für das Auslösen von einfachen Prozessen konzipiert. Wenn der benutzerdefinierte Code komplexe Verarbeitungsvorgänge erfordert, führen Sie die Verarbeitung entweder in einem separaten Thread oder außerhalb des Workflowprozesses aus.

Konfigurieren von Master Data Services für benutzerdefinierte Workflows

Zum Erstellen eines benutzerdefinierten Workflows müssen Sie benutzerdefinierten Code schreiben und Master Data Services konfigurieren, um Workflowdaten an Ihren Workflowhandler zu übergeben. Gehen Sie folgendermaßen vor, um die Verarbeitung von benutzerdefinierten Workflows zu aktivieren:

  1. Erstellen Sie eine .NET-Assembly, die Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender implementiert.

  2. Konfigurieren Sie SQL Server MDS Workflow Integration Service, um eine Verbindung mit Ihrer Master Data Services Datenbank herzustellen und Ihrem Workflowhandler ein Tag zuzuordnen.

  3. Starten Sie den SQL Server MDS Workflow Integration Service.

  4. Erstellen Sie eine Geschäftsregel in Master Data Manager, die einen Workflow startet, der mit dem Namen Ihres Workflowhandlers markiert ist.

  5. Wenden Sie die Geschäftsregel auf ein Element an, das den benutzerdefinierten Workflow auslöst.

Erstellen der Workflowhandlerassembly

Ein benutzerdefinierter Workflow ist eine .NET-Klassenbibliothekassembly, die die Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender-Schnittstelle implementiert. SQL Server MDS Workflow Integration Service ruft die Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow*-Methode auf, um Ihren Code auszuführen. Beispielcode, der Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* implementiert, finden Sie unter Benutzerdefiniertes Workflowbeispiel (Master Data Services).

Gehen Sie wie folgt vor, um mit Visual Studio 2010 eine Assembly zu erstellen, die der SQL Server MDS Workflow Integration Service aufrufen kann, um einen benutzerdefinierten Workflow zu behandeln:

  1. Erstellen Sie in Visual Studio 2010 ein neues Klassenbibliotheksprojekt, das Ihre gewünschte Sprache verwendet. Um eine C#-Klassenbibliothek zu erstellen, wählen Sie die Visual C#\Windows-Projekttypen sowie die Klassenbibliotheksvorlage aus. Geben Sie einen Namen für das Projekt ein, z.B. MDSWorkflowTest, und klicken Sie auf OK.

  2. Fügen Sie einen Verweis auf Microsoft.MasterDataServices.WorkflowTypeExtender.dll hinzu. Diese Assembly finden Sie unter <Ihr Installationsordner>\Master Data Services\WebApplication\bin.

  3. Fügen Sie „using Microsoft.MasterDataServices.Core.Workflow;“ der C#-Codedatei hinzu.

  4. Erben Sie von Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender in Ihrer Klassendeklaration. Die Klassendeklaration sollte in etwa wie folgt aussehen: „public class WorkflowTester : IWorkflowTypeExtender“.

  5. Implementieren Sie die Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender-Schnittstelle . Die Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow*-Methode wird von SQL Server MDS Workflow Integration Service aufgerufen, um Ihren Workflow zu starten.

  6. Kopieren Sie Ihre Assembly an den Speicherort der ausführbaren SQL Server MDS Workflow Integration Service mit dem Namen Microsoft.MasterDataServices.Workflow.exe unter <Ihr Installationsordner>\Master Data Services\WebApplication\bin.

Konfigurieren des SQL Server MDS Workflow Integration Service

Bearbeiten Sie die Master Data Services Konfigurationsdatei, um Verbindungsinformationen für Ihre Master Data Services-Datenbank einzuschließen und ihrer Workflowhandlerassembly ein Tag zuzuordnen, indem Sie die folgenden Schritte ausführen:

  1. Suchen Sie Microsoft.MasterDataServices.Workflow.exe.config im <Installationsordner>\Master Data Services\WebApplication\bin.

  2. Fügen Sie der Einstellung "ConnectionString" die Master Data Services Datenbankverbindungsinformationen hinzu. Wenn ihre SQL Server Installation die Sortierung zwischen Groß- und Kleinschreibung verwendet, muss der Name der Datenbank in demselben Fall wie in der Datenbank eingegeben werden. Beispielsweise kann das vollständige Einstellungstag wie folgt aussehen:

    <setting name="ConnectionString" serializeAs="String">  
        <value>Server=myServer;Database=myDatabase;Integrated Security=True</value>  
    </setting>  
    
  3. Fügen Sie unter der Einstellung „ConnectionString“ eine Einstellung „WorkflowTypeExtenders“ hinzu, um der Workflowhandlerassembly einen Tagnamen zuzuordnen. Beispiel:

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

    Der innere Text des <Werttags> hat die Form <Workflowtag>=<Assembly-qualifizierter Workflowtypname>. <Workflowtag> ist ein Name, den Sie verwenden, um die Workflowhandlerassembly zu identifizieren, wenn Sie eine Geschäftsregel in Master Data Manager erstellen. <Der Name> des assemblyqualifizierten Workflowtyps ist der namespacequalifizierte Name Ihrer Workflowklasse, gefolgt von einem Komma, gefolgt vom Anzeigenamen der Assembly. Verfügt die Assembly über einen starken Namen, binden Sie zudem Versionsinformationen und sowie das zugehörige PublicKeyToken ein. Sie können mehrere <Einstellungstags> einschließen, wenn Sie mehrere Workflowhandler für verschiedene Arten von Workflows erstellt haben.

Hinweis

Je nach Serverkonfiguration wird möglicherweise der Fehler „Der Zugriff wurde verweigert“ angezeigt, wenn Sie versuchen, die Datei „Microsoft.MasterDataServices.Workflow.exe.config“ zu speichern. Tritt dieser Fehler auf, deaktivieren Sie vorübergehend die Benutzerkontensteuerung (UAC) auf dem Server. Öffnen Sie dazu die Systemsteuerung, und klicken Sie auf System und Sicherheit. Klicken Sie unter Wartungscenter auf Einstellungen der Benutzerkontensteuerung ändern. Schieben Sie im Dialogfeld Einstellungen zur Benutzerkontensteuerung den Balken nach unten, damit Sie keine Benachrichtigung erhalten. Starten Sie den Computer neu, und wiederholen Sie die vorherigen Schritte, um die Konfigurationsdatei zu bearbeiten. Setzen Sie nach dem Speichern der Datei die UAC-Einstellungen auf die Standardebene zurück.

Starten des SQL Server MDS Workflow Integration Service

Standardmäßig ist SQL Server MDS Workflow Integration Service nicht installiert. Sie müssen den Dienst installieren, bevor er verwendet werden kann. Erstellen Sie für eine maximale Sicherheit einen lokalen Benutzer für den Dienst, und weisen Sie diesem Benutzer nur die zum Ausführen von Workflowvorgängen erforderlichen Berechtigungen zu. Gehen Sie wie folgt vor, um einen Benutzer zu erstellen sowie den Dienst zu installieren und zu starten:

  1. Erstellen Sie mit dem Manager für lokale Benutzer und Gruppen einen lokalen Benutzer, beispielsweise mit dem Namen "mds_workflow_service".

  2. Weisen Sie mithilfe von SQL Server Management Studio dem Benutzer "mds_workflow_service" die Berechtigung zum Ausführen der gespeicherten Prozedur "[mdm].[udpExternalActionsGet]" zu. Erstellen Sie hierzu eine neue Anmeldung für das mds_workflow_service-Konto, erstellen Sie einen neuen Benutzer in der Master Data Services-Datenbank, ordnen Sie diesen Benutzer der mds_workflow_service Anmeldung zu, und erteilen Sie dem Benutzer die EXECUTE-Berechtigung für [mdm].[ gespeicherte Prozedur udpExternalActionsGet]

  3. Gewähren Sie dem Benutzer "mds_workflow_service" die Berechtigung zum Ausführen der Workflowhandlerassembly. Fügen Sie dazu den Benutzer „mds_workflow_service“ der Registerkarte Sicherheit im Bereich Eigenschaften der Workflowhandlerassembly hinzu, und gewähren Sie dem Benutzer „mds_workflow_service“ die READ- und EXECUTE-Berechtigung.

  4. Gewähren Sie dem Benutzer "mds_workflow_service" die Berechtigung zum Ausführen der ausführbaren Datei des SQL Server MDS Workflow Integration Service. Fügen Sie dazu den mds_workflow_service Benutzer der Registerkarte Sicherheit der Eigenschaften von Microsoft.MasterDataServices.Workflow.exe unter <Ihr Installationsordner>\Master Data Services\WebApplication\bin hinzu, und erteilen Sie dem mds_workflow_service Benutzer die Berechtigung READ und EXECUTE.

  5. Installieren Sie SQL Server MDS Workflow Integration Service mithilfe des .NET-Installationshilfsprogramms (InstallUtil.exe). Die Datei "InstallUtil.exe" befindet sich im .NET-Installationsordner, z. B. unter "C:\Windows\Microsoft.NET\Framework\v4.0.30319\". Installieren Sie den SQL Server MDS Workflow Integration Service durch folgende Eingabe in einer Eingabeaufforderung für erhöhte Rechte:

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

    Geben Sie während der Installation bei entsprechender Aufforderung den Benutzer "mds_workflow_service" an.

  6. Starten Sie SQL Server MDS Workflow Integration Service mithilfe des Dienst-Snap-Ins. Suchen Sie hierzu SQL Server MDS Workflow Integration Service im Snap-In Dienste, wählen Sie ihn aus, und klicken Sie auf den Link Start.

Erstellen einer Workflowgeschäftsregel

Verwenden Sie Master Data Manager, um eine Geschäftsregel zu erstellen und zu veröffentlichen, die den Workflow beim Anwenden startet. Die Geschäftsregel muss Aktionen enthalten, die Attributwerte ändern, damit die Regel den Wert "false" ergibt, nachdem sie einmal übernommen wurde. Beispielsweise kann die Geschäftsregel den Wert "true" ergeben, wenn ein Preisattributwert größer als 500 und der Approved-Attributwert leer ist. Die Regel kann dann zwei Aktionen umfassen, und zwar eine zum Festlegen des Approved-Attributwerts auf "Ausstehend" und eine zum Starten des Workflows. Sie können alternativ eine Regel erstellen, die auf die Bedingung „has changed“ (wurde geändert) zurückgreift, und Ihre Attribute hinzufügen, um die Nachverfolgungsgruppen zu ändern. Weitere Informationen zu Geschäftsregeln finden Sie unter Geschäftsregeln (Master Data Services).

Erstellen Sie eine Geschäftsregel, die einen benutzerdefinierten Workflow in Master Data Manager startet, indem Sie die folgenden Schritte ausführen:

  1. Ziehen Sie im Geschäftsregel-Editor von Master Data Manager, nachdem Sie die Bedingungen Ihrer Geschäftsregel angegeben haben, die Aktion Workflow starten aus der Liste Externe Aktionen auf die Bezeichnung Aktion des THEN-Bereichs.

  2. Geben Sie im Bereich Aktion bearbeiten im Feld Workflowtyp das Tag ein, mit dem die Workflowhandlerassembly identifiziert wird. Hierbei handelt es sich um das Tag, das Sie in der Konfigurationsdatei für die Assembly angegeben haben, beispielsweise TEST.

  3. Aktivieren Sie optional das Kontrollkästchen zum Einschließen von Elementdaten. Wählen Sie diese Option aus, um Attributnamen und Werte in der XML einzuschließen, die an den Workflowhandler übergeben wird.

  4. Geben Sie im Feld Workflowsite den Namen einer Website ein. Dies gilt u. U. nicht für den benutzerdefinierten Workflow, kann jedoch für zusätzlichen Kontext angewendet werden.

  5. Geben Sie im Feld Workflowname den Namen des Workflows von Visual Studio ein. Dies gilt u. U. nicht für den benutzerdefinierten Workflow, kann jedoch für zusätzlichen Kontext angewendet werden.

  6. Speichern und veröffentlichen Sie die Geschäftsregel.

Anwenden von Geschäftsregeln zum Starten eines Workflows

Wenden Sie zum Starten des Workflows die Geschäftsregel auf die Daten an. Verwenden Sie hierzu Master Data Manager, um die Entität zu bearbeiten, die die Elemente enthält, die Sie überprüfen möchten. Klicken Sie auf Geschäftsregeln anwenden. Als Reaktion auf die Geschäftsregel füllt Master Data Manager die Service Broker-Warteschlange der Master Data Services Datenbank auf. Überprüft der SQL Server MDS Workflow Integration Service die Warteschlange, werden die Daten an die angegebene Workflowhandlerassembly gesendet, und die Warteschlange wird geleert. Die Workflowhandlerassembly führt die Aktionen aus, die Sie darin codiert haben.

Beheben von Fehlern bei benutzerdefinierten Workflows

Wenn die Workflowhandlerassembly keine Daten empfängt, versuchen Sie, SQL Server MDS Workflow Integration Service zu debuggen oder die Service Broker-Warteschlange anzuzeigen.

Debuggen von SQL Server MDS Workflow Integration Service

So debuggen Sie SQL Server Workflow Integration Service:

  1. Verwenden Sie das Dienst-Snap-In, um den Dienst zu beenden.

  2. Öffnen Sie eine Eingabeaufforderung, navigieren Sie zum Speicherort des Diensts, und führen Sie den Dienst im Konsolenmodus aus. Geben Sie dazu Folgendes ein: Microsoft.MasterDataServices.Workflow.exe -console.

  3. Aktualisieren Sie in Master Data Manager Ihr Mitglied, und wenden Sie erneut Geschäftsregeln an. Ausführliche Protokolle werden im Konsolenfenster angezeigt.

Anzeigen der Service Broker-Warteschlange

Die Service Broker-Warteschlange, die die als Teil des Workflows übergebenen Masterdaten enthält, lautet folgendermaßen: mdm.microsoft/mdm/queue/externalaction. Warteschlangen finden Sie im Objekt-Explorer von SQL Management Studio unter dem Knoten Service Broker der Master Data Services-Datenbank. Wenn der Dienst die Warteschlange ordnungsgemäß geleert hat, ist diese Warteschlange leer.

Weitere Informationen

Beispiel für einen benutzerdefinierten Workflow (Master Data Services)
Benutzerdefinierte Workflow-XML-Beschreibung (Master Data Services)