Condividi tramite


MQSCorrelationSetOrchestration (esempio di BizTalk Server)

Nell'esempio MQSCorrelationSetOrchestration viene illustrato come utilizzare un identificatore di correlazione MQSeries per la correlazione di messaggi inviati a una coda MQSeries a un'orchestrazione in esecuzione. L'orchestrazione imposta i valori di identificatore e identificatore di correlazione MQSeries usando le proprietà MQMD_CorrelId e MQMD_MsgID . Il gestore code MQSeries copia il valore MessageID nella proprietà CorrelationID del messaggio.

Prerequisiti

Questo esempio presuppone che sia stato installato IBM WebSphere MQSeries nello stesso server in cui si esegue BizTalk Server.

Scopo dell'esempio

In questo esempio viene illustrato come impostare un identificatore di messaggio e un identificatore di correlazione in un messaggio inviato a un server IBM WebSphere MQSeries. Questo metodo può essere utilizzato per correlare un messaggio a un'istanza di orchestrazione in esecuzione. Quando il gestore code MQSeries riceve il messaggio copia il valore MessageID nella proprietà CorrelationID del messaggio. Questo oggetto CorrelationID (MQMD_CorrelId) viene quindi usato nell'orchestrazione per associare il messaggio di risposta in MQSeries all'istanza usata per inviare messaggi a MQSeries.

Progettazione e finalità dell'esempio

In questo esempio viene illustrato uno scenario in cui un documento elaborato da un'orchestrazione può essere inviato a una coda MQSeries (presumibilmente per ulteriore elaborazione) e restituito all'orchestrazione in esecuzione.

Percorso dell'esempio

<>Percorsi di esempio\AdaptersUsage\MQSeriesAdapter\MQSCorrelationSetOrchestration

Nella seguente tabella sono riportati i file inclusi nell'esempio e ne viene descritto lo scopo.

File Descrizione
MQSCorrelationSetOrchestration.btproj,

MQSCorrelationSetOrchestration.sln
File di progetto e soluzione per l'applicazione.
MQSCorrelationSetOrchestration.odx Orchestrazione dell'applicazione.
MQSCorrelationSetOrchestration.snk File di chiave con nome sicuro.
Setup.bat Compila e inizializza l'esempio.

Modalità di utilizzo dell'esempio

Incorporare la logica impiegata in questo esempio se un passaggio del flusso di lavoro globale prevede l'invio di un messaggio a MQSeries Server.

Per creare la coda MQSeries tramite WebSphere MQ Explorer

  1. Fare clic su Start, scegliere Programmi, scegliere IBM WebSphere MQ e quindi fare clic su WebSphere MQ Explorer.

  2. Fare doppio clic su Gestione code e quindi fare doppio clic su Gestione code predefinita. Il gestore code predefinito è in genere denominato QM_<machine_name> dove machine_name è il nome del computer.

  3. Fare clic con il pulsante destro del mouse su Code, scegliere Nuovo e quindi fare clic su Coda locale.

  4. Nella finestra di dialogo Crea coda locale digitare "MQCorrelation" e quindi fare clic su OK.

Per creare l'indirizzo di ricezione e la coda MQSeries

  1. Aprire la Console di amministrazione BizTalk Server.

  2. Espandere BizTalk Server Amministrazione, espandere Gruppo BizTalk, espandere Applicazioni e quindi espandere l'applicazione richiesta.

  3. Fare clic con il pulsante destro del mouse su Porte di ricezione, scegliere Nuovo e quindi fare clic su Porta di ricezione unidirezionale.

  4. Nella finestra di dialogo Proprietà porta di ricezione unidirezionale digitare "MQIn" e fare clic su OK.

  5. Nel riquadro sinistro fare clic sulla scheda Percorsi di ricezione e quindi su Nuovo.

  6. Nella finestra di dialogo Proprietà posizione ricezione digitare "MQIn".

  7. Nella casella Tipo di trasporto selezionare MQSeries.

  8. Nella casella Gestore ricezione selezionare BizTalkServerApplication.

  9. Nella casella Ricezione pipeline selezionare Microsoft.BizTalk.DefaultPipelines.PassThruReceive.

  10. Fare clic su Configure.

  11. Nella finestra di dialogo Proprietà trasporto MQSeries digitare "10" nella casella Intervallo di polling .

  12. Nella casella Definizione coda fare clic sul pulsante con i puntini di sospensione (...) .

  13. Nella finestra di dialogo Definizione coda digitare il nome del computer nella casella Nome server .

  14. Nella casella Gestione code selezionare il gestore code predefinito.

  15. Nella casella Coda digitare "MQCorrelation" e quindi fare clic su Esporta.

  16. Nella finestra di dialogo Esporta fare clic su Crea coda e quindi fare clic suOKo Fine fino a quando non è stata chiusa tutte le finestre di dialogo.

Per creare la porta di trasmissione a MQSeries

  1. Fare clic con il pulsante destro del mouse su Invia porte, scegliere Nuovo e quindi fare clic su Porta di invio statica unidirezionale.

  2. Nella finestra di dialogo Proprietà porta di invio digitare "MQOut" nella casella Nome .

  3. Nella casella Tipo di trasporto selezionare MQSeries.

  4. Nella casella Invia pipeline selezionare Microsoft.BizTalk.DefaultPipelines.PassThruTransmit.

  5. Fare clic su Configure.

  6. Nella finestra di dialogo Proprietà trasporto MQSeries fare clic sul pulsante con i puntini di sospensione (...) nella casella Definizione coda .

  7. Nella finestra di dialogo Definizione coda digitare il nome del computer nella casella Nome server .

  8. Nella casella Gestione code selezionare il gestore code predefinito.

  9. Nella casella Coda digitare "MQCorrelation" e quindi fare clic su OK.

  10. Fare clic su OK finché non sono state completate tutte le finestre di dialogo.

Per abilitare l'indirizzo di ricezione e avviare la porta di trasmissione

  1. Nella console di amministrazione BizTalk Server fare clic su Porte di ricezione.

  2. Nel riquadro dei dettagli fare clic con il pulsante destro del mouse sul percorso di ricezione MQIn e scegliere Abilita.

  3. Nel riquadro dei dettagli fare clic con il pulsante destro del mouse sulla porta di invio MQOut e scegliere Avvia.

Per creare le cartelle utilizzate dall'applicazione

  1. Nell'unità C:\ creare una cartella denominata "temp" se non esiste già.

  2. Nella directory C:\temp creare cartelle denominate "Pickup" e "Dropit".

Compilazione e distribuzione dell'esempio

  1. In una finestra di comando passare alla seguente cartella:

    <Samples Path>\AdaptersUsage\MQSeriesAdapter\MQSCorrelationSetOrchestration

  2. Eseguire il file Setup.bat. Verranno eseguite le operazioni seguenti:

    1. Crea una chiave con nome sicuro per il progetto.

    2. Compila e distribuisce il progetto di orchestrazione.

    3. Creazione di una porta di trasmissione e di una porta di ricezione con l'adapter FILE.

Eseguire il binding e avviare l'orchestrazione

  1. Nella console di amministrazione di BizTalk Server espandere la cartella Orchestrations.

  2. Nel riquadro dei dettagli fare clic con il pulsante destro del mouse sull'orchestrazione MQSCorrelationSetOrchestration e quindi scegliere Associa.

  3. Associare le porte dell'orchestrazione ai seguenti indirizzi di ricezione e porte di trasmissione:

    Porta dell'orchestrazione Porta di messaggistica / indirizzo di ricezione
    FileReceivePort MQSCorrelationSetOrchestration.FileReceivePort
    MQSeriesResponseReceivePort MQIn
    MQSeriesRequestSendPort MQOut
    FileSendPort MQSCorrelationSetOrchestration.FileSendPort
  4. Fare clic su Host.

  5. Nella casella Host selezionare BizTalkServerApplication e fare clic su OK.

  6. In Invia porte fare clic con il pulsante destro del mouse su MQSCorrelationSetOrchestration.FileSendPort e quindi scegliere Avvia.

  7. In Posizioni di ricezione fare clic con il pulsante destro del mouse su MQSCorrelationSetOrchestration.FileReceivePort e quindi scegliere Abilita.

  8. Fare clic con il pulsante destro del mouse sull'orchestrazione e scegliere Start.

    Nota

    L'avvio dell'orchestrazione ne determina anche l'integrazione automatica.

Per testare l'applicazione

  1. Inserire un file nella cartella C:\Temp\Pickup .

  2. Esaminare il file nella cartella C:\Temp\Dropit .

    Nota

    Se si disabilita la posizione di ricezione MQIn , è possibile esaminare il messaggio in WebSphere MQ Explorer e vedere che vengono impostati i messaggi e gli identificatori di correlazione. A tale scopo, avviare WebSphere MQ Explorer ed esaminare il messaggio inserito nella coda MQCorrelation . I messaggi e gli identificatori di correlazione vengono visualizzati nella scheda Identificatori della finestra di dialogo Proprietà messaggio .

    Nota

    In uno scenario di produzione è consigliabile assegnare un ID univoco per ogni messaggio inviato alla coda MQSeries. È possibile eseguire questa operazione modificando una forma espressione nell'orchestrazione. Modificare le righe seguenti per impostare queste proprietà in un ID univoco a 24 byte:

    MQSeriesRequestSendMessageModified(MQSeries.MQMD_MsgId) = "111213141516171819202122232425262728293031323334";

    MQSeriesRequestSendMessageModified(MQSeries.MQMD_CorrelId) = "111213141516171819202122232425262728293031323334";

    Se si vuole impostare un ID univoco da 24 byte per queste proprietà, vedere la sezione Per creare un ID univoco da 24 byte per i messaggi inviati a MQSeries.

Per creare un ID univoco a 24 byte per i messaggi inviati a MQSeries

  1. Creare un nuovo progetto di libreria di classi C# in Visual Studio.

  2. Incollare il codice seguente nel file con estensione cs per la classe:

    using System;  
    using System.Collections.Generic;  
    using System.Text;  
    using System.Security.Cryptography;  
    
    namespace MQId  
    {[Serializable]  
        public class GetId  
        {  
            RNGCryptoServiceProvider randomCryptoString = new RNGCryptoServiceProvider();  
    
            public string getGuidstr()  
            {  
                byte[] newGuid = GetRandomData(24);  
                return ConvertToHex(newGuid);  
            }  
    
            private byte[] GetRandomData(int keySize)  
            {  
                byte[] randomData = new byte[keySize];  
                randomCryptoString.GetBytes(randomData);  
                return randomData;  
            }  
    
            private string ConvertToHex(byte[] key)  
            {  
                StringBuilder hexString = new StringBuilder();  
                for (int i = 0; i < key.Length; ++i)  
                {  
                    hexString.Append(String.Format("{0:X2}", key[i]));  
                }  
                return hexString.ToString();  
            }  
        }  
    }  
    
  3. Specificare uno spazio dei nomi predefinito di MQId e un nome assembly di GetId nella pagina Delle proprietà del progetto Application.

  4. Specificare un file di chiave di nome sicuro per firmare l'assembly nella pagina firma delle proprietà del progetto e quindi compilare il progetto.

  5. Usare lo strumento global assembly cache (gacutil.exe) per caricare l'assembly compilato nella gaC (gacutil /i <name del file> dll compilato).

  6. Aggiungere un riferimento all'assembly GetId nel progetto BizTalk per questo esempio.

  7. Aggiungere due variabili all'orchestrazione utilizzata in questo esempio.

    Nome della variabile (Identificatore) Tipo
    GetId MQId.GetId
    strGuid System.String
  8. Incollare il codice seguente nella forma Espressione utilizzata nell'orchestrazione per questo esempio. Il codice sovrascriverà il codice esistente:

    GetId = new MQId.GetId();  
    strGuid = GetId.getGuidstr();  
    MQSeriesRequestSendMessageModified = MQSeriesRequestSendMessage;  
    MQSeriesRequestSendMessageModified(MQSeries.MQMD_MsgId) = strGuid;  
    MQSeriesRequestSendMessageModified(MQSeries.MQMD_CorrelId) = strGuid;  
    
  9. Arrestare e rimuovere l'orchestrazione nella console di amministrazione BizTalk Server se è già distribuita. Seguire quindi la procedura descritta nelle sezioni Compilazione e distribuzione di questo esempio, Associare e avviare orchestrazione eper testare l'applicazione.

    Nota

    L'utilizzo di questo metodo per creare un ID univoco a 24 byte per i messaggi inviati a MQSeries non garantisce ID univoci per tutti i messaggi inviati, ma la probabilità di ID messaggio duplicati è molto bassa. Se per le esigenze aziendali è necessaria la garanzia che non vi siano ID messaggio duplicati, è necessario utilizzare un codice personalizzato diverso per assicurare questa funzionalità.

Classi o metodi utilizzati nell'esempio

In questo esempio non vengono utilizzati in modo esplicito classi o metodi.

Vedere anche

Correlazione di messaggi mediante richiesta-risposta
Esempi di adapter MQSeries