PartnerManagement (esempio di BizTalk Server)
L'esempio PartnerManagement illustra come gestire le parti nell'ambiente BizTalk Server usando gli oggetti di amministrazione ExplorerOM.
Prerequisiti
È necessario disporre di BizTalk Server privilegi amministrativi per usare gli oggetti amministrativi in questo esempio.
L'esecuzione dello script di Windows PowerShell richiede i criteri di esecuzione di Windows PowerShell. Per ulteriori informazioni, vedere la pagina relativa all' analisi dei criteri di esecuzione.
Scopo dell'esempio
Questo esempio illustra l'uso delle classi amministrative dello spazio dei nomi Microsoft.BizTalk.ExplorerOM per gestire le parti. Le entità rappresentano i partner commerciali o le applicazioni back-end con cui un processo di business può interagire. Per altre informazioni sulle parti in generale, vedere la documentazione relativa a parti o collegamenti ai ruoli e ai ruoli del servizio. L'esempio viene scritto in Microsoft Visual C#. In questo argomento è inoltre incluso uno script di esempio Windows PowerShell. Nell'esempio vengono illustrate le operazioni seguenti:
Creazione di una nuova parte con un alias personalizzato o standard e l'aggiunta di porte di invio esistenti BizTalk Server alla parte.
Integrazione della nuova entità con un collegamento ruolo esistente nel server BizTalk.
Rimozione dell'integrazione della nuova entità.
Eliminazione della nuova entità.
Percorso dell'esempio
L'esempio è disponibile nel seguente percorso dell'SDK:
<Percorso> esempi\Amministrazione\ExplorerOM\PartnerManagement
Nella seguente tabella sono riportati i file inclusi nell'esempio e ne viene descritto lo scopo.
File | Descrizione |
---|---|
PartnerManagement.cs | File di origine visual C# per le operazioni illustrate in questo esempio. |
PartnerManagement.sln e PartnerManagement.csproj | File di soluzione e di progetto per l'esempio. |
Compilazione ed esecuzione dell'esempio
Prima di compilare l'esempio, è necessario apportare quattro modifiche al codice per personalizzare l'esempio per il server BizTalk. Questa operazione è necessaria perché nell'esempio vengono utilizzati nomi arbitrari per le porte di trasmissione associate all'entità e un nome di ruolo arbitrario per l'integrazione. È pertanto necessario fornire nomi validi per l'esempio. Per illustrare questo esempio, questo argomento descrive prima di tutto la creazione dell'esempio PartyResolution dalla directory seguente: <Path>\Orchestrations\PartyResolution. Questo approccio assicura la presenza nel server BizTalk di nomi validi per il ruolo e le porte di trasmissione ai fini dell'illustrazione delle procedure dell'esempio.
Per generare l'esempio
Verificare innanzitutto che l'esempio PartyResolution sia stato compilato e inizializzato in modo che vengano utilizzati nomi validi per il ruolo e le porte di trasmissione. Questa operazione è documentata nella sezione intitolata "Compilazione e inizializzazione di questo esempio" in PartyResolution (BizTalk Server Esempio).
In Visual Studio aprire il file di soluzione PartnerManagement.sln.
In Esplora soluzioni aprire il file di origine PartnerManagement.cs.
Scorrere verso il basso nella funzione denominata CreateParty e inserire i due nomi di porta di invio dall'esempio PartyResolution o usare nomi validi dall'ambiente del server BizTalk. Nell'esempio di codice riportato di seguito viene illustrato l'inserimento dei nomi delle porte di trasmissione utilizzati nell'esempio PartyResolution.
// Replacing arbitrary send port names with PartyResolution send port names === // myParty.SendPorts.Add(catalog.SendPorts["NormalDelivery"]); // myParty.SendPorts.Add(catalog.SendPorts["ExpressDelivery"]); myParty.SendPorts.Add(catalog.SendPorts["SP_FilesToShipmentAgency1"]); myParty.SendPorts.Add(catalog.SendPorts["SP_FilesToShipmentAgency2"]);
Scorrere verso il basso nella funzione denominata EnlistParty e modificare il ciclo foreach in modo da cercare l'assembly Fornitore per un ruolo denominato "ShipmentRole" da usare con l'inserimento. Nell'esempio di codice riportato di seguito viene illustrata la modifica apportata per utilizzare il ruolo ShipmentRole dell'esempio PartyResolution.
// Search for the “Shipmentrole” instead of “shipperRole” Role svcRole = null; //=== foreach (Role role in catalog.Assemblies[0].Roles) foreach (Role role in catalog.Assemblies["Supplier"].Roles) { //=== if (role.Name == "ShipperRole") if (role.Name == "ShipmentRole") { svcRole = role; break; } }
Scorrere verso il basso nella funzione denominata UnenlistParty e modificare il ciclo foreach per cercare l'assembly Fornitore per La spedizioneRole. Nell'esempio di codice riportato di seguito viene illustrata questa modifica.
// Search for the “ShipmentRole” instead of “shipperRole” Role svcRole = null; //=== foreach (Role role in catalog.Assemblies[0].Roles) foreach (Role role in catalog.Assemblies["Supplier"].Roles) { //=== if (role.Name == "ShipperRole") if (role.Name == "ShipmentRole") { svcRole = role; break; } }
Dopo la creazione e l'integrazione della nuova entità con il ruolo ShipmentRole, l'esempio è progettato per rimuovere immediatamente l'integrazione entità ed eliminarla. Aggiungere la modifica del codice seguente alla procedura principale per sospendere l'esecuzione e consentire di visualizzare l'inserimento creato per la nuova parte nella console di amministrazione BizTalk Server.
static void Main(string[] args) { CreateParty(); EnlistParty(); Console.WriteLine("\nNew Party created and enlisted.\n\nPress <Enter> to unenlist and delete.\n"); Console.ReadLine(); UnenlistParty(); DeleteParty(); }
Nel menu Compila scegliere Compila soluzione.
Per eseguire questo esempio
Aprire una finestra di comando e passare alla cartella seguente:
<Percorso> esempi\Amministrazione\ExplorerOM\PartnerManagement\bin\Debug
Eseguire il file PartnerManagement.exe.
Quando l'esempio visualizza il messaggio che la nuova parte viene creata ed inserita, aprire la console di amministrazione BizTalk Server e visualizzare la nuova parte denominata FedEx nel nodo Parti.
Nella console di amministrazione di BizTalk Server passare alla visualizzazione albero in ShipmentRole in Applications\BizTalk Application 1\Role Links. Fare doppio clic su ShipmentRole e notare Il mapping di ShipmentAgency1 all'operazione SupplierAdvice e La spedizioneAgency2 mappata all'operazione SupplierOrder nell'elenco.
Nella finestra di comando premere INVIO per consentire all'esempio di rimuovere l'integrazione ed eliminare la nuova entità.
Nella console di amministrazione di BizTalk Server verificare che la parte non sia stata inserita nel nodo ShipmentRole ed eliminata dal nodo Party.
Esempio di script di Windows PowerShell
L'esempio di script di Windows PowerShell seguente può essere usato per illustrare le stesse funzionalità delle classi ExplorerOM:
#===============================================================#
#=== ===#
#=== Create a new party named "FedEx" as an example. ===#
#=== ===#
#=== Two Shipment agency send ports from the PartyResolution ===#
#=== sample will be added to the party. ===#
#=== ===#
#===============================================================#
Function CreateParty
{
#=== Create a party =====================#
$myParty = $Catalog.AddNewParty()
$myParty.Name = "FedEx"
#=== create a standard alias ==========================#
$standardAlias = $myParty.AddNewAlias()
$standardAlias.Name = "D-U-N-S (Dun & Bradstreet)"
$standardAlias.Value = "Value1"
#=== Create a custom alias ==================#
$customAlias = $myParty.AddNewAlias()
$customAlias.Name = "Telephone"
$customAlias.Qualifier = "100"
$customAlias.Value = "4255550234"
#=== Add party send ports =====================================================#
#===============================================================#
#=== Have to use IList directly on this sendports collection ===#
#=== to work around a PowerShell issue. ===#
#===============================================================#
$iList = [System.Collections.IList]
$sendport1 = $Catalog.SendPorts["SP_FilesToShipmentAgency1"]
[void] $iList.GetMethod("Add").Invoke($myParty.SendPorts,$sendport1)
$sendport2 = $Catalog.SendPorts["SP_FilesToShipmentAgency2"]
[void] $iList.GetMethod("Add").Invoke($myParty.SendPorts,$sendport2)
#=== Specify a signature certificate, make sure the certificate is available ===#
#=== in the AddressBook store of the Local Machine ===#
foreach ($certificate in $Catalog.Certificates)
{
if ($certificate.ShortName -eq "BR, Certisign Certificadora Digital Ltda., Certisign - Autoridade Certificadora - AC2")
{
$myParty.SignatureCert = $certificate
}
}
#=== Commit the changes ===#
$catalog.SaveChanges()
}
#===============================================================#
#=== ===#
#=== Delete the party named "FedEx" ===#
#=== ===#
#===============================================================#
Function DeleteParty
{
$Catalog.RemoveParty($Catalog.Parties["FedEx"])
#=== Commit the changes ===#
$catalog.SaveChanges()
}
#===============================================================#
#=== ===#
#=== Enlist the "FedEx" party with the "ShipmentRole" ===#
#=== ===#
#===============================================================#
Function EnlistParty
{
$myParty = $Catalog.Parties["FedEx"]
#=== Get the "ShipmentRole" in the Supplier assembly. ===#
$svcRole = $Catalog.Assemblies["Supplier"].Roles["ShipmentRole"]
#=== Enlist the party under the shipper role ===#
$enlistedParty = $svcRole.AddNewEnlistedParty($myParty)
#===============================================================#
#=== Have to use IList directly on this sendports collection ===#
#=== to work around a PowerShell issue. ===#
#===============================================================#
$iList = [System.Collections.IList]
#===============================================================#
#=== Example port to be used for the role's "SupplierAdvice" ===#
#=== operation. ===#
#=== Using the first send port added to the new party which ===#
#=== is "SP_FilesToShipmentAgency1" at index 0 in the ===#
#=== sendports collection. ===#
#===============================================================#
$enlistedParty.Mappings[0].SendPort = $iList.GetProperty("Item").GetValue($myParty.SendPorts,0)
#===============================================================#
#=== Example port to be used for the role's "SupplierOrder" ===#
#=== operation. ===#
#=== Using the second send port added to the new party which ===#
#=== is "SP_FilesToShipmentAgency2" at index 1 in the ===#
#=== sendports collection. ===#
#===============================================================#
$enlistedParty.Mappings[1].SendPort = $iList.GetProperty("Item").GetValue($myParty.SendPorts,1)
#=== Commit the changes ===#
$Catalog.SaveChanges()
}
#===============================================================#
#=== ===#
#=== Unenlist the "FedEx" party from the ShipmentRole ===#
#=== ===#
#===============================================================#
Function UnenlistParty
{
#=== Get the "ShipmentRole" from the Supplier assembly. ===#
$svcRole = $Catalog.Assemblies["Supplier"].Roles["ShipmentRole"]
#=== Remove the "FedEx" party ===#
foreach ($enlistedparty in $svcRole.EnlistedParties)
{
if ($enlistedparty.Party.Name -eq "FedEx")
{
$svcRole.RemoveEnlistedParty($enlistedparty)
break
}
}
#=== Commit the changes ===#
$Catalog.SaveChanges()
}
#===================#
#=== Main Script ===#
#===================#
#=== Make sure the ExplorerOM assembly is loaded ===#
[void] [System.reflection.Assembly]::LoadWithPartialName("Microsoft.BizTalk.ExplorerOM")
#=== Connect to the BizTalk Management database ===#
$Catalog = New-Object Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer
$Catalog.ConnectionString = "SERVER=.;DATABASE=BizTalkMgmtDb;Integrated Security=SSPI"
#=== This sample expects the PartyResolution sample to be built and deployed ===#
#=== to the BizTalk Server. ===#
write-host `r`nMake sure the "PartyResolution" sample application from the Orchestrations
write-host sample directory is deployed and running.
write-host By default it will be listed in the BizTalk Server Administration Console
write-host with the application name: `"BizTalk.Application.1`"`r`n
$SupplierAssembly = $Catalog.Assemblies["Supplier"]
#==================================================================#
#=== Register a trap handler to discard changes on exceptions ===#
#=== Execution will continue in the event we want to unenlist, ===#
#=== and delete the party. ===#
#==================================================================#
$Script:NoExceptionOccurred = $true
$ErrorActionPreference="silentlycontinue"
trap
{
$Script:NoExceptionOccurred = $false
"Exception encountered:`r`n"; $_; "`r`nDiscarding Changes and continuing execution so we can attempt to clean up the party...`r`n"
$Catalog.DiscardChanges()
}
CreateParty
EnlistParty
if ($Script:NoExceptionOccurred)
{
Write-Host "`r`nExample Party `"FedEx`" should be created and enlisted with the `"ShipmentRole`".`r`n"
Write-Host You can view the results in the BizTalk Server Administration console.`r`n
Write-Host "Press <Enter> to unenlist and delete...`r`n"
Read-Host
}
UnenlistParty
DeleteParty
Di seguito è riportato l'output di esempio in seguito all'esecuzione dell'esempio di script Windows PowerShell. Se l'esecuzione dello script non riesce, assicurarsi che la funzionalità di script PowerShell sia abilitata in base ai requisiti indicati all'inizio dell'argomento.
PS C:\> .\PartnerManagement.ps1
Make sure the PartyResolution sample application from the Orchestrations
sample directory is deployed and running.
By default it will be listed in the BizTalk Server Administration Console
with the application name: "BizTalk.Application.1"
Example Party "FedEx" should be created and enlisted with the "ShipmentRole".
You can view the results in the BizTalk Server Administration console.
Press <Enter> to unenlist and delete...
Vedere anche
Collegamenti ai ruoli delle partie ruoli di collegamento al servizioAmministrazione (BizTalk Server cartella esempi)