PartnerManagement (Partnerverwaltung – BizTalk Server-Beispiel)
Das PartnerManagement-Beispiel veranschaulicht, wie Parteien in der BizTalk Server Umgebung mithilfe der ExplorerOM-Verwaltungsobjekte verwaltet werden.
Voraussetzungen
Sie müssen über BizTalk Server Administratorrechte verfügen, um die Administrativen Objekte in diesem Beispiel verwenden zu können.
Für die Skriptausführung erfordert das Windows PowerShell-Skript die Windows PowerShell-Ausführungsrichtlinie. Weitere Informationen finden Sie unter Überprüfen der Ausführungsrichtlinie.
Ziel des Beispiels
In diesem Beispiel wird die Verwendung der Administrativen Klassen aus dem Microsoft.BizTalk.ExplorerOM-Namespace zum Verwalten von Parteien veranschaulicht. Parteien stellen Handelspartner oder Back-End-Anwendungen dar, mit denen ein Geschäftsprozess interagieren kann. Weitere Informationen zu Parteien im Allgemeinen finden Sie in der Dokumentation zu Parteien oder Rollenlinks und Dienstlinkrollen. Das Beispiel ist in Microsoft Visual C# geschrieben. Ein Windows PowerShell-Beispielskript ist ebenfalls Bestandteil dieses Themas. Mit dem Beispiel werden die folgenden Vorgänge veranschaulicht:
Erstellen einer neuen Partei mit einem benutzerdefinierten oder Standardalias und Hinzufügen vorhandener BizTalk Server Senden von Ports an die Partei.
Eintragen der neuen Partei mit einer vorhandenen Rollenverknüpfung auf dem BizTalk-Server.
Austragen der neuen Partei.
Löschen der neuen Partei.
Speicherort dieses Beispiels
Das Beispiel ist im folgenden SDK-Verzeichnis gespeichert:
<Beispielpfad>\Admin\ExplorerOM\PartnerManagement
In der folgenden Tabelle werden die Dateien in diesem Beispiel samt Zweck beschrieben.
Datei(en) | BESCHREIBUNG |
---|---|
PartnerManagement.cs | Visual C#-Quelldatei für Vorgänge, die in diesem Beispiel veranschaulicht werden. |
PartnerManagement.sln und PartnerManagement.csproj | Die Projektmappen- und Projektdateien für das Beispiel. |
Erstellen und Ausführen dieses Beispiels
Bevor Sie das Beispiel erstellen, müssen Sie vier Codeänderungen vornehmen, um das Beispiel für den BizTalk-Server anzupassen. Dies ist erforderlich, weil im Beispiel willkürlich gewählte Namen für Sendeports verwendet werden, die der Partei zugeordnet sind, und ein willkürlich gewählter Rollenname für die Eintragung. Deshalb müssen Sie gültige Namen für das Beispiel angeben. Um dieses Beispiel zu veranschaulichen, wird in diesem Thema das erste Erstellen des PartyResolution-Beispiels aus dem folgenden Verzeichnis beschrieben: <Samples Path>\Orchestrations\PartyResolution. Mithilfe dieses Ansatzes wird sichergestellt, dass ein gültiger Rollenname und Sendeportnamen auf dem BizTalk-Server vorhanden sind, um die Beispielverfahren zu veranschaulichen.
So erstellen Sie dieses Beispiel
Vergewissern Sie sich zunächst, dass das Beispiel „PartyResolution“ erstellt und initialisiert wurde, damit ein gültiger Rollenname und Sendeportnamen verwendet werden können. Dies wird im Abschnitt "Erstellen und Initialisieren dieses Beispiels" in PartyResolution (BizTalk Server Beispiel) dokumentiert.
Öffnen Sie in Visual Studio die Projektmappendatei PartnerManagement.sln.
Öffnen Sie im Projektmappen-Explorer die Quelldatei PartnerManagement.cs.
Scrollen Sie nach unten in die Funktion CreateParty , und fügen Sie die beiden Sendeportnamen aus dem PartyResolution-Beispiel ein, oder verwenden Sie gültige Namen aus der BizTalk-Serverumgebung. Im nachstehenden Beispielcode wird veranschaulicht, wie die Sendeports aus dem Beispiel „PartyResolution“ verwendet werden.
// 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"]);
Scrollen Sie nach unten in die Funktion EnlistParty , und ändern Sie die foreach-Schleife, sodass die Lieferantenassembly nach einer Rolle namens "ShipmentRole" durchsucht wird, die mit der Einlistung verwendet werden soll. Der nachstehende Beispielcode veranschaulicht die Änderung, damit „ShipmentRole“ aus dem Beispiel „PartyResolution“ verwendet wird.
// 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; } }
Scrollen Sie nach unten in die Funktion UnenlistParty , und ändern Sie die foreach-Schleife, um die Supplier Assembly nach ShipmentRole zu durchsuchen. Im folgenden Codebeispiel wird diese Änderung veranschaulicht.
// 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; } }
Nach dem Erstellen und Eintragen der neuen Partei mit „ShipmentRole“ ist das Beispiel so konzipiert, dass die Partei sofort ausgetragen und gelöscht wird. Fügen Sie der Standard-Prozedur die folgende Codeänderung hinzu, um die Ausführung anzuhalten und die erstellte Liste für die neue Partei in der BizTalk Server-Verwaltungskonsole anzuzeigen.
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(); }
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
So führen Sie dieses Beispiel aus
Öffnen Sie ein Befehlsfenster, und navigieren Sie zum folgenden Ordner:
<Beispielpfad>\Admin\ExplorerOM\PartnerManagement\bin\Debug
Führen Sie die Datei PartnerManagement.exe aus.
Wenn im Beispiel die Meldung angezeigt wird, dass die neue Partei erstellt und eingetragen wurde, öffnen Sie die BizTalk Server-Verwaltungskonsole, und zeigen Sie die neue Partei mit dem Namen FedEx unter dem Knoten Parteien an.
Navigieren Sie in der BizTalk Server Verwaltungskonsole in der Strukturansicht zu ShipmentRole unter Anwendungen\BizTalk Application 1\Role Links. Doppelklicken Sie auf ShipmentRole , und beachten Sie,dass ShipmentAgency1 dem SupplierAdvice-Vorgang zugeordnet ist und ShipmentAgency2 dem Vorgang SupplierOrder in der Aufnahme zugeordnet ist.
Drücken Sie im Befehlsfenster die EINGABETASTE, damit die neue Partei ausgetragen und gelöscht werden kann.
Vergewissern Sie sich in der BizTalk Server-Verwaltungskonsole, dass die Partei nicht aus der ShipmentRole-Liste aufgenommen und aus dem Knoten Parteien gelöscht wurde.
Beispiel für ein Windows PowerShell-Skript
Das folgende Windows PowerShell Skriptbeispiel kann verwendet werden, um die gleichen Features der ExplorerOM-Klassen zu veranschaulichen:
#===============================================================#
#=== ===#
#=== 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
Hier die Beispielausgabe aus der Ausführung des PowerShell-Beispielskripts: Wenn die Skriptausführung fehlschlägt, vergewissern Sie sich, dass die PowerShell-Skripterstellung gemäß dem Hinweis zu den Anforderungen am Anfang dieses Themas aktiviert ist.
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...
Weitere Informationen
Parteienrollenlinks und DienstlinkrollenAdmin (BizTalk Server Beispielordner)