Extending Mapper (esempio di BizTalk Server)
Nell'esempio Extending Mapper viene illustrato come utilizzare ed estendere BizTalk Mapper. L'esempio include diversi file di mapping BizTalk Server (con estensione btm), ognuno dei quali illustra diverse funzionalità di BizTalk Mapper.
Scopo dell'esempio
Nell'esempio Extending Mapper viene utilizzato il routing basato sul contenuto e non un'orchestrazione. Specificando un filtro sulla porta di trasmissione dell'esempio, quest'ultima viene connessa direttamente alla porta di ricezione dell'esempio. Nella porta di trasmissione viene specificata una mappa da applicare al documento elaborato.
Percorso dell'esempio
<Esempi path>\XmlTools\ExtendingMapper
Nella seguente tabella sono riportati i file inclusi nell'esempio e ne viene descritto lo scopo.
File | Descrizione |
---|---|
MapperClassLibrary\AssemblyInfo.cs, MapperClassLibrary\MapperClassLibrary.csproj, MapperClassLibrary\MapperHelper.cs, MapperClassLibrary\MapperClassLibrary.sln | File di progetto di Microsoft® Visual Studio® e file di origine visual C#®. |
Cleanup.bat | Viene utilizzato per annullare la distribuzione degli assembly e rimuoverli dalla Global Assembly Cache. |
Destination.xsd | File di schema. |
ExtendingMapper.btproj, ExtendingMapper.sln | File di progetto e di soluzione di BizTalk per questo esempio. |
ExtendingMapper.xml | XML di origine. |
ExtendingMapperBinding.xml | XML di binding. |
ExternalAssembly.xml | XML di assembly esterno. |
OverridingMapXslt.btm | File di mappa. |
OverridingMapXslt.xml | XML di mappa di override. |
OverridingMapXslt.xslt | Foglio di stile di mappa di override. |
Scriptor_CallExternalAssembly.btm | File di mappa di esempio. |
Scriptor_GlobalVariableInInlineScript.btm | File di mappa di esempio. |
Scriptor_InlineScripts.btm | File di mappa di esempio. |
Scriptor_InlineXslt.btm | File di mappa di esempio. |
Scriptor_InlineXsltCallingExternalAssembly.btm | File di mappa di esempio. |
Scriptor_XsltCalltemplate.btm | File di mappa di esempio. |
Setup.bat | Viene utilizzato per compilare e inizializzare l'esempio. |
Source.xsd | File di schema. |
Compilazione e inizializzazione dell'esempio
Utilizzare la procedura seguente per compilare e inizializzare l'esempio Extending Mapper.
Per compilare e inizializzare l'esempio
In una finestra dei comandi modificare la directory (cd) nella cartella seguente:
<Esempi path>\XmlTools\ExtendingMapper
Eseguire il file Setup.bat. Verranno eseguite le operazioni seguenti:
Creazione delle cartelle di input (\In) e di output (\Out) per l'esempio.
Compila e distribuisce il progetto di Visual Studio per questo esempio.
Creazione e binding dell'indirizzo di ricezione di BizTalk e delle porte di trasmissione e ricezione.
Se si desidera utilizzare le mappe Scriptor_CallExternalAssembly.btm o Scriptor_InlineXsltCallingExternalAssembly.btm, aprire ExtendingMapper.sln in Visual Studio ed effettuare le modifiche seguenti (in caso contrario, andare al passaggio 3):
In Esplora soluzioni aprire Scriptor_CallExternalAssembly.btm.
Nella griglia di BizTalk Mapper selezionare il functoid Esecuzione script.
Nella griglia delle proprietà selezionare la proprietà Script e fare clic sul pulsante con i puntini di sospensione (...) per configurare lo script functoid.
Nella finestra di dialogo Configura functoid scripting selezionare La configurazione functoid script e specificare quanto segue:
Impostare Su Tipo di script Assembly esterno Script Assembly Microsoft.Samples.BizTalk.ExtendingMapper.MapperClassLibrary Classe Script Microsoft.Samples.BizTalk.ExtendingMapper.MapperHelper Metodo script MyConcat Dal menuFile di Visual Studio scegliere Salva per salvare le modifiche nel file di mappa e chiudere la soluzione.
Premere un tasto qualsiasi per continuare con il file Setup.bat.
Importante
Se si desidera utilizzare Scriptor_InlineXsltCallingExternalAssembly.btm, è necessario modificare il file ExternalAssembly.xml. Questo file viene utilizzato da BizTalk per il mapping di uno spazio di nomi registrato di oggetti estensione di BizTalk Mapper con un assembly .NET. Poiché all'assembly dipendente viene fatto riferimento in base al relativo nome completo (incluso il token di chiave pubblica, generato automaticamente), è necessario aggiornare questo valore. Se non si desidera utilizzare Scriptor_InlineXsltCallingExternalAssembly.btm, non è necessario completare i passaggi a - e.
In Esplora risorse passare alla <cartella> di Windows\assembly\.
Fare clic con il pulsante destro del mouse su Microsoft.Samples.BizTalk.ExtendingMapper.MapperClassLibrary e selezionare Proprietà.
Copiare il valore del token di chiave pubblica.
In un editor di testo aprire <Percorso>\XML Tools\ExtendingMapper\ExternalAssembly.xml esempi.
Selezionare AssemblyName="Microsoft.Samples.BizTalk.ExtendingMapper.MapperClassLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=68496d20c737d84b"attribute e sostituire il valore publicKeyToken con il valore del token di chiave pubblica copiato nel passaggio c.
Salvare e chiudere ExternalAssembly.xml.
Nota
Prima di tentare di eseguire l'esempio, verificare che non siano stati segnalati errori durante il processo di compilazione e inizializzazione.
Per configurare, integrare e avviare la porta di trasmissione
Fare clic su Start, selezionare Tutti i programmi, selezionare Microsoft BizTalk Server e quindi selezionare amministrazione BizTalk Server.
Nella console di amministrazione BizTalk Server fare clic per espandere amministrazione BizTalk Server, fare clic per espandere Il gruppo BizTalk [<servername>:<management database>], quindi fare clic per espandere Applicazioni.
Fare clic per espandere ExtendingMapperApplication e quindi fare clic su Invia porte.
Nel riquadro destro fare clic con il pulsante destro del mouse su Invia porte e quindi scegliere Proprietà.
Nella finestra di dialogo EstensioneMapperSP - Invia proprietà porta fare clic sulla pagina Mappe in uscita .
Nella colonna Mappa selezionare la mappa necessaria nell'elenco a discesa e quindi fare clic su OK. Le mappe sono descritte nella tabella riportata di seguito.
Proprietà di Mappa da applicare Descrizione Microsoft.Samples.BizTalk.ExtendingMapper. Scriptor_CallExternalAssembly Illustra come chiamare una funzione in un assembly .NET esterno da un functoid scripting in una mappa, in base ai parametri di input a questo functoid. I questo modo è possibile separare correttamente la logica di elaborazione dal file di mappa. Il file di mappa utilizza l'assembly MapperClassLibrary.dll fornito con questo esempio. Microsoft.Samples.BizTalk.ExtendingMapper. Scriptor_InlineScripts Viene illustrato come scrivere script inline semplici all'interno di functoid di scripting in un file di mappa usando linguaggi .NET, ad esempio C#, Visual Basic.NET e JScript.NET. Microsoft.Samples.BizTalk.ExtendingMapper. Scriptor_GlobalVariableInInlineScript Viene illustrato come usare le variabili globali negli script inline dei functoid di scripting . Le variabili globali vengono in genere usate per mantenere le informazioni sullo stato in un file di mapping tra functoid di script diversi . Microsoft.Samples.BizTalk.ExtendingMapper. Scriptor_InlineXslt Viene illustrato come costruire struttura nel documento di destinazione usando XSLT non elaborati all'interno di un functoid scripting nella mappa. È possibile costruire alcune parti del documento di destinazione usando functoid scripting con XSLT inline ogni volta che non è possibile farlo in BizTalk Mapper usando altri functoid. Microsoft.Samples.BizTalk.ExtendingMapper. Scriptor_XsltCalltemplate Illustra come creare struttura nel documento di destinazione usando un modello di chiamata XSLT all'interno di un functoid scripting nella mappa. Il vantaggio di un modello di chiamata XSLT su XSLT inline è che il modello di chiamata può accettare parametri, quindi è possibile creare la struttura in base ai parametri di input al functoid scripting . È possibile costruire alcune parti del documento di destinazione usando functoid scripting con XSLT inline ogni volta che non è possibile farlo in BizTalk Mapper usando altri functoid. Microsoft.Samples.BizTalk.ExtendingMapper. Scriptor_InlineXsltCallingExternalAssembly Viene illustrato come chiamare in un assembly .NET esterno dall'interno dell'oggetto XSLT inline di un functoid scripting in una mappa. Viene illustrato come eseguire l'override della proprietà XML estensione personalizzata della griglia BizTalk Mapper con il file di estensione personalizzato ExternalAssembly_extxml.xml contenente i dettagli dell'assembly .NET esterno da richiamare. È possibile costruire alcune parti del documento di destinazione usando functoid scripting con XSLT inline ogni volta che non è possibile farlo nell'interfaccia utente di Mapper usando altri functoid. Microsoft.Samples.BizTalk.ExtendingMapper. Override diMapXslt Illustra come eseguire completamente l'override dell'XSLT compilato del file di BizTalk Mapper con un file XSLT personalizzato. A tale scopo, è possibile eseguire l'override della proprietà Custom XSL Pathe facoltativamente la proprietà XML estensione personalizzata della griglia BizTalk Mapper. Il file XSLT personalizzato fornito è incluso nell'assembly compilato BizTalk Server del progetto che si vuole usare in fase di esecuzione. In questo caso, il contenuto del file di mappa (con estensione btm) viene ignorato. Questo file di mapping usa rispettivamente OverridingMapXslt.xslt e OverridingMapXslt.xml per le proprietà XML di estensione XSL personalizzate e estensione personalizzata .
È possibile convalidare un file di mappa in Esplora soluzioni. È quindi possibile usarlo come file di modello che è possibile modificare e usare per la proprietà Custom XSL Path della griglia BizTalk Mapper. Questa opzione può essere utilizzata ogni volta che non è possibile produrre questo XSLT tramite BizTalk Mapper.
Esecuzione dell'esempio
Per eseguire l'esempio Extending Mapper, eseguire la procedura seguente.
Per eseguire questo esempio
Copiare il file di input ExtendingMapper.xml nella cartella di input in <Samples Path>\XmlTools\ExtendingMapper\In.
Si noti come il file viene trasformato e instradato alla <cartella Samples Path>\XmlTools\ExtendingMapper\Out. La trasformazione che si verifica è basata sulla mappa applicata.