Erstellen eines benutzerdefinierten Workflows (Master Data Services)
Gilt für: SQL Server – Nur Windows Azure SQL verwaltete Instanz
Master Data Services verwendet Geschäftsregeln zum Erstellen grundlegender Workflowlösungen, z. B. zum automatischen Aktualisieren und Überprüfen von Daten und zum Senden von E-Mail-Benachrichtigungen basierend auf 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 so konfigurieren, dass ein benutzerdefinierter Workflow gestartet wird, der die Daten analysiert und bestimmt, wo sie zur Genehmigung gesendet werden soll.
Verarbeitung von benutzerdefinierten Workflows
Zum Verarbeiten von benutzerdefinierten Workflows sind drei Hauptkomponenten beteiligt: die Master Data Manager-Webanwendung, der SQL Server MDS-Workflowintegrationsdienst und die Workflowhandlerassembly. Diese Komponenten verarbeiten einen benutzerdefinierten Workflow folgendermaßen:
Sie verwenden master Data Manager, um eine Entität zu überprüfen, die einen Workflow startet.
Master Data Manager sendet Mitglieder, die die Geschäftsregelbedingungen erfüllen, an eine Service Broker-Warteschlange in der Master Data Services-Datenbank.
In regelmäßigen Abständen ruft der SQL Server MDS-Workflowintegrationsdienst eine gespeicherte Prozedur in der Master Data Services-Datenbank auf.
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.
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 so konfigurieren, dass Workflowdaten an Den Workflowhandler übergeben werden. Gehen Sie folgendermaßen vor, um die Verarbeitung von benutzerdefinierten Workflows zu aktivieren:
Erstellen Sie eine .NET-Assembly, die Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender implementiert.
Konfigurieren Sie den SQL Server MDS-Workflowintegrationsdienst, um eine Verbindung mit Ihrer Master Data Services-Datenbank herzustellen und einen Tag ihrem Workflowhandler zuzuordnen.
Starten Sie den SQL Server MDS Workflow Integration Service.
Erstellen Sie eine Geschäftsregel im Master Data Manager, die einen Workflow startet, der mit dem Namen des Workflowhandlers markiert ist.
Wenden Sie die Geschäftsregel auf ein Element an, das den benutzerdefinierten Workflow auslöst.
Erstellen der Workflowhandlerassembly
Ein benutzerdefinierter Workflow ist eine .NET-Klassenbibliotheksassembly, 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 Custom Workflow Example (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:
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.
Fügen Sie einen Verweis auf Microsoft.MasterDataServices.WorkflowTypeExtender.dll hinzu. Diese Assembly befindet sich im <Installationsordner>\Master Data Services\WebApplication\bin.
Fügen Sie „using Microsoft.MasterDataServices.Core.Workflow;“ der C#-Codedatei hinzu.
Erben Sie von Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender in Ihrer Klassendeklaration. Die Klassendeklaration sollte in etwa wie folgt aussehen: „public class WorkflowTester : IWorkflowTypeExtender“.
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.
Kopieren Sie die Assembly an den Speicherort der ausführbaren Sql Server MDS-Workflowintegrationsdienst-Datei namens Microsoft.MasterDataServices.Workflow.exe im <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 eine Kategorie mit der Workflowhandlerassembly zu verknüpfen, indem Sie die folgenden Schritte ausführen:
Suchen Sie Microsoft.MasterDataServices.Workflow.exe.config im <Installationsordner>\Master Data Services\WebApplication\bin.
Fügen Sie die Verbindungsinformationen der Master Data Services-Datenbank zur Einstellung "ConnectionString" hinzu. Wenn bei der SQL Server-Installation die Sortierung zwischen Groß- und Kleinschreibung verwendet wird, 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>
Fügen Sie unter der Einstellung „ConnectionString“ eine Einstellung „WorkflowTypeExtenders“ hinzu, um der Workflowhandlerassembly einen Tagnamen zuzuordnen. Zum Beispiel:
<setting name="WorkflowTypeExtenders" serializeAs="String"> <value>TEST=MDSWorkflowTestLib.WorkflowTester, MDSWorkflowTestLib</value> </setting>
Der innere Text des <Werttags> ist in Form des <Workflowtags>=<assemblyqualifizierter Workflowtypname>. <Das Workflowtag> ist ein Name, den Sie zum Identifizieren der Workflowhandlerassembly verwenden, wenn Sie eine Geschäftsregel im 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:
Erstellen Sie mit dem Manager für lokale Benutzer und Gruppen einen lokalen Benutzer, beispielsweise mit dem Namen "mds_workflow_service".
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 dazu 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 EXECUTE die Berechtigung [mdm]. [udpExternalActionsGet] gespeicherte Prozedur.
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.
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 zur Registerkarte "Sicherheit " der Eigenschaften von Microsoft.MasterDataServices.Workflow.exe in <Ihrem Installationsordner>\Master Data Services\WebApplication\bin hinzu, und erteilen Sie dem mds_workflow_service Benutzer LESE- und AUSFÜHRUNGsberechtigung.
Installieren Sie SQL Server MDS Workflow Integration Service mithilfe des .NET-Installationshilfsprogramms (InstallUtil.exe). InstallUtil.exe finden Sie im .NET-Installationsordner, z. B. "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.
Starten Sie SQL Server MDS Workflow Integration Service mithilfe des Dienst-Snap-Ins. Suchen Sie dazu SQL Server MDS Workflow Integration Service im Dienst-Snap-In, wählen Sie den Dienst aus, und klicken Sie auf den Link Starten.
Erstellen einer Workflowgeschäftsregel
Verwenden Sie Master Data Manager, um eine Geschäftsregel zu erstellen und zu veröffentlichen, die den Workflow bei Anwendung 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).For more information about business rules, see Business Rules (Master Data Services).
Erstellen Sie eine Geschäftsregel, die einen benutzerdefinierten Workflow im Master Data Manager startet, indem Sie die folgenden Schritte ausführen:
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" in die Bezeichnung "Aktion" des BEREICHs "Aktion" aus.
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.
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.
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.
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.
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 dazu den 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:
Verwenden Sie das Dienst-Snap-In, um den Dienst zu beenden.
Ö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.
Aktualisieren Sie im Master Data Manager Ihr Mitglied, und wenden Sie geschäftsregeln erneut 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 Dienstbrokerknoten der Master Data Services-Datenbank. Wenn der Dienst die Warteschlange ordnungsgemäß geleert hat, ist diese Warteschlange leer.
Weitere Informationen
Benutzerdefiniertes Workflowbeispiel (Master Data Services)
Benutzerdefinierte Workflow-XML-Beschreibung (Master Data Services)