Creare un flusso di lavoro personalizzato (Master Data Services)
Si applica a: SQL Server - Solo Windows Istanza gestita di SQL di Azure
Master Data Services usa regole business per creare soluzioni di flusso di lavoro di base, ad esempio per aggiornare e convalidare automaticamente i dati e inviare notifiche tramite posta elettronica, in base alle condizioni specificate. Quando è necessaria un'elaborazione più complessa di quella fornita dalle azioni predefinite del flusso di lavoro, utilizzare un flusso di lavoro personalizzato. Un flusso di lavoro personalizzato è un assembly .NET che viene creato. Quando viene chiamato l'assembly del flusso di lavoro, il codice può eseguire qualsiasi azione richiesta dalla situazione. Ad esempio, se il flusso di lavoro richiede un'elaborazione di eventi complessa, ad esempio approvazioni multilivello o alberi delle decisioni complicati, è possibile configurare Master Data Services per avviare un flusso di lavoro personalizzato che analizza i dati e determina dove inviarli per l'approvazione.
Elaborazione di flussi di lavoro personalizzati
Sono necessari tre componenti principali per elaborare flussi di lavoro personalizzati: l'applicazione Web Master Data Manager, SQL Server MDS Workflow Integration Service e l'assembly del gestore del flusso di lavoro. Di seguito è riportata la procedura di elaborazione di un flusso di lavoro personalizzato mediante tali componenti:
Si usa Gestione dati master per convalidare un'entità che avvia un flusso di lavoro.
Master Data Manager invia membri che soddisfano le condizioni delle regole business a una coda di Service Broker nel database master data services.
A intervalli regolari, SQL Server MDS Workflow Integration Service chiama una stored procedure nel database Master Data Services.
Quando questa stored procedure trova i record nella coda di Service Broker, li restituisce a SQL Server MDS Workflow Integration Service.
SQL Server MDS Workflow Integration Service instrada i dati all'assembly del gestore del flusso di lavoro.
Nota
Nota: SQL Server MDS Workflow Integration Service deve attivare processi semplici. Se il codice personalizzato richiede un'elaborazione complessa, completare l'elaborazione in un thread separato o all'esterno del processo del flusso di lavoro.
Configurare Master Data Services per i flussi di lavoro personalizzati
La creazione di un flusso di lavoro personalizzato richiede la scrittura di codice personalizzato e la configurazione di Master Data Services per passare i dati del flusso di lavoro al gestore del flusso di lavoro. Per consentire l'elaborazione del flusso di lavoro personalizzato, effettuare i passaggi seguenti:
Creare un assembly .NET che implementa Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.
Configurare SQL Server MDS Workflow Integration Service per connettersi al database master data services e associare un tag al gestore del flusso di lavoro.
Avviare SQL Server MDS Workflow Integration Service.
Creare una regola business in Gestione dati master che avvia un flusso di lavoro contrassegnato con il nome del gestore del flusso di lavoro.
Applicare la regola business a un membro che attiva il flusso di lavoro personalizzato.
Creare l'assembly del gestore del flusso di lavoro
Un flusso di lavoro personalizzato è un assembly di libreria di classi .NET che implementa l'interfaccia Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender . SQL Server MDS Workflow Integration Service chiama il metodo Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* per eseguire il codice. Ad esempio di codice che implementa Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* , vedere Esempio di flusso di lavoro personalizzato (Master Data Services).
Per creare con Visual Studio 2010 un assembly che SQL Server MDS Workflow Integration Service può chiamare per gestire un flusso di lavoro personalizzato, effettuare i passaggi seguenti:
In Visual Studio 2010 creare un nuovo progetto Libreria di classi che usa il linguaggio scelto. Per creare una Libreria di classi C# selezionare i tipi di progetto Visual C#\Windows e selezionare il modello Libreria di classi. Immettere un nome per il progetto, ad esempio MDSWorkflowTest e fare clic su OK.
Aggiungere un riferimento a Microsoft.MasterDataServices.WorkflowTypeExtender.dll. Questo assembly è disponibile nella <cartella> di installazione\Master Data Services\WebApplication\bin.
Aggiungere 'using Microsoft.MasterDataServices.Core.Workflow;' al file di codice C#.
Ereditare da Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender nella dichiarazione di classe. La dichiarazione di classe deve essere simile a: 'public class WorkflowTester : IWorkflowTypeExtender'.
Implementare l'interfaccia Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender . Il metodo Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* viene chiamato da SQL Server MDS Workflow Integration Service per avviare il flusso di lavoro.
Copiare l'assembly nel percorso dell'eseguibile di SQL Server MDS Workflow Integration Service, denominato Microsoft.MasterDataServices.Workflow.exe, nella <cartella> di installazione\Master Data Services\WebApplication\bin.
Configurare SQL Server MDS Workflow Integration Service
Modificare il file di configurazione di Master Data Services per includere le informazioni di connessione per il database master data services e associare un tag all'assembly del gestore del flusso di lavoro seguendo questa procedura:
Trovare Microsoft.MasterDataServices.Workflow.exe.config nella <cartella> di installazione\Master Data Services\WebApplication\bin.
Aggiungere le informazioni di connessione al database master data services all'impostazione "ConnectionString". Se l'installazione di SQL Server usa regole di confronto con distinzione tra maiuscole e minuscole, il nome del database deve essere immesso nello stesso caso del database. Il tag di impostazione completo, ad esempio, potrebbe essere analogo al seguente:
<setting name="ConnectionString" serializeAs="String"> <value>Server=myServer;Database=myDatabase;Integrated Security=True</value> </setting>
Sotto l'impostazione "ConnectionString" aggiungere l'impostazione "WorkflowTypeExtenders" per associare il nome di un tag all'assembly del gestore del flusso di lavoro. Ad esempio:
<setting name="WorkflowTypeExtenders" serializeAs="String"> <value>TEST=MDSWorkflowTestLib.WorkflowTester, MDSWorkflowTestLib</value> </setting>
Il testo interno del <tag valore> è sotto forma di nome del tipo di> flusso di <lavoro qualificato dall'assembly.>< <Il tag> del flusso di lavoro è un nome usato per identificare l'assembly del gestore del flusso di lavoro quando si crea una regola business in Gestione dati master. <il nome> del tipo di flusso di lavoro qualificato dall'assembly è il nome completo dello spazio dei nomi della classe del flusso di lavoro, seguito da una virgola, seguito dal nome visualizzato dell'assembly. Se il nome dell'assembly è sicuro, è necessario includere anche le informazioni sulla versione e l'oggetto PublicKeyToken. È possibile includere più <tag di impostazione> se sono stati creati più gestori del flusso di lavoro per diversi tipi di flussi di lavoro.
Nota
A seconda della configurazione del server, è possibile che venga visualizzato l'errore "Accesso negato" quando si tenta di salvare il file Microsoft.MasterDataServices.Workflow.exe.config. In tal caso, disabilitare temporaneamente la funzionalità Controllo dell'account utente nel server. A tale scopo, aprire il Pannello di controllo e fare clic su Sistema e sicurezza. In Centro notifiche fare clic su Modifica impostazioni di Controllo dell'account utente. Nella finestra di dialogo Impostazioni di Controllo account utente far scorrere la barra verso il basso in modo da non ricevere alcuna notifica. Riavviare il computer e ripetere i passaggi precedenti per modificare il file di configurazione. Dopo avere salvato il file, reimpostare le impostazioni del Controllo dell'account utente sul livello predefinito.
Avviare SQL Server MDS Workflow Integration Service
Per impostazione predefinita, SQL Server MDS Workflow Integration Service non è installato. Per poter utilizzare il servizio, è necessario prima installarlo. Per una maggiore sicurezza, creare un utente locale per il servizio e concedere all'utente solo le autorizzazioni necessarie per eseguire le operazioni del flusso di lavoro. Per creare un utente e per installare e avviare il servizio, effettuare i passaggi seguenti:
Utilizzare Utenti e gruppi locali per creare un utente locale denominato, ad esempio, mds_workflow_service.
Utilizzare SQL Server Management Studio per concedere all'utente mds_workflow_service l'autorizzazione per eseguire la stored procedure [mdm].[udpExternalActionsGet]. A tale scopo, creare un nuovo account di accesso per l'account mds_workflow_service, creare un nuovo utente nel database master data services, eseguire il mapping dell'utente all'account di accesso mds_workflow_service e concedere all'utente l'autorizzazione EXECUTE per [mdm]. Stored procedure [udpExternalActionsGet].
Concedere all'utente mds_workflow_service l'autorizzazione per eseguire l'assembly del gestore del flusso di lavoro. A tale scopo, aggiungere l'utente mds_workflow_service alla scheda Sicurezza nelle Proprietà dell'assembly del gestore del flusso di lavoro e concedere all'utente mds_workflow_service le autorizzazioni READ ed EXECUTE.
Concedere all'utente mds_workflow_service l'autorizzazione per eseguire l'eseguibile di SQL Server MDS Workflow Integration Service. A tale scopo, aggiungere l'utente mds_workflow_service alla scheda Sicurezza delle proprietà di Microsoft.MasterDataServices.Workflow.exe, nella <cartella> di installazione\Master Data Services\WebApplication\bin e concedere all'utente mds_workflow_service l'autorizzazione READ e EXECUTE.
Installare SQL Server MDS Workflow Integration Service mediante l'utilità di installazione .NET, denominata InstallUtil.exe. InstallUtil.exe sono disponibili nella cartella di installazione di .NET, ad esempio C:\Windows\Microsoft.NET\Framework\v4.0.30319\. Installare SQL Server MDS Workflow Integration Service immettendo in un prompt dei comandi con privilegi elevati il comando seguente:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil Microsoft.MasterDataServices.Workflow.exe
Quando richiesto durante l'installazione, specificare l'utente mds_workflow_service.
Avviare SQL Server MDS Workflow Integration Service mediante lo snap-in Servizi. A tale scopo, trovare SQL Server MDS Workflow Integration Service nello snap-in Servizi, selezionarlo e fare clic sul collegamento Avvia.
Creare una regola business del flusso di lavoro
Usare Gestione dati master per creare e pubblicare una regola business che avvierà il flusso di lavoro quando applicato. È necessario assicurarsi che la regola business contenga le azioni che modificano i valori dell'attributo, in modo tale che una volta applicata la regola restituisca false. Ad esempio, la regola business potrebbe restituire true quando un valore dell'attributo Price è maggiore di 500 e il valore dell'attributo Approved è vuoto. La regola può includere quindi due azioni: una per impostare il valore dell'attributo Approved su Pending e l'altra per avviare il flusso di lavoro. In alternativa, è possibile creare una regola che utilizzi la condizione "has changed" e aggiungere gli attributi ai gruppi rilevamento modifiche. Per altre informazioni sulle regole business, vedere Regole business (Master Data Services).
Creare una regola business che avvia un flusso di lavoro personalizzato in Gestione dati master seguendo questa procedura:
Nell'editor delle regole business di Master Data Manager, dopo aver specificato le condizioni della regola business, trascinare l'azione Avvia flusso di lavoro dall'elenco Azioni esterne all'etichetta Azione del riquadro THEN.
Nella casella Tipo di flusso di lavoro del riquadro Modifica azione digitare il tag che identifica l'assembly del gestore del flusso di lavoro. Si tratta del tag specificato nel file di configurazione per l'assembly, ad esempio TEST.
Facoltativamente, selezionare la casella di controllo Includi dati membro. Questa opzione consente di includere i nomi e i valori degli attributi nel codice XML passato al gestore del flusso di lavoro.
Nella casella Sito flusso di lavoro digitare il nome di un sito Web. Questa opzione potrebbe non essere valida per il flusso di lavoro personalizzato, ma può essere utilizzata per il contesto aggiunto.
Nella casella Nome flusso di lavoro digitare il nome del flusso di lavoro di Visual Studio. Questa opzione potrebbe non essere valida per il flusso di lavoro personalizzato, ma può essere utilizzata per il contesto aggiunto.
Salvare e pubblicare la regola business.
Applicare le regole business per avviare un flusso di lavoro
Applicare la regola business ai dati per avviare il flusso di lavoro. A tale scopo, usare Gestione dati master per modificare l'entità contenente i membri da convalidare. Fare clic su Applica regole business. In risposta alla regola business, Master Data Manager popola la coda di Service Broker del database Master Data Services. Quando SQL Server MDS Workflow Integration Service controlla la coda, invia i dati all'assembly del gestore del flusso di lavoro specificato e cancella la coda. L'assembly del gestore del flusso di lavoro esegue qualsiasi azione in esso codificata.
Risolvere i problemi relativi ai flussi di lavoro personalizzati
Se l'assembly del gestore del flusso di lavoro non riceve dati, è possibile provare a eseguire il debug di SQL Server MDS Workflow Integration Service o a visualizzare la coda di Service Broker.
Eseguire il debug di SQL Server MDS Workflow Integration Service
Per eseguire il debug di SQL Server Workflow Integration Service, effettuare i passaggi seguenti:
Utilizzare lo snap-in Servizi per arrestare il servizio.
Aprire un prompt dei comandi, passare al percorso del servizio ed eseguire il servizio in modalità console immettendo Microsoft.MasterDataServices.Workflow.exe -console.
In Gestione dati master aggiornare il membro e applicare di nuovo le regole business. I log dettagliati vengono visualizzati nella finestra della console.
Visualizzare la coda di Service Broker
La coda di Service Broker che contiene i dati master passati come parte del flusso di lavoro è mdm.microsoft/mdm/queue/externalaction. Le code sono disponibili nella Esplora oggetti di SQL Management Studio nel nodo Service Broker del database Master Data Services. Tenere presente che, se il servizio ha cancellato correttamente la coda, questa sarà vuota.
Vedi anche
Esempio di flusso di lavoro personalizzato (Master Data Services)
Descrizione XML del flusso di lavoro personalizzato (Master Data Services)