Condividi tramite


UnenlistParties (esempio di BizTalk Server)

Nell'esempio UnenlistParties viene illustrato come rimuovere tutte le entità associate a un assembly BizTalk Server distribuito.

Avviso

Dopo la distribuzione, rimuovere gli script di distribuzione se non sono necessari. Gli script di amministrazione e gli altri script da non rimuovere devono essere protetti mediante elenchi di controllo di accesso (ACL, Access Control List) e accuratamente monitorati.

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 altre informazioni, vedere about_Execution_Policies.

Progettazione e finalità dell'esempio

Questo esempio, scritto in Visual C# utilizzando oggetti del modello a oggetti di BizTalk Explorer, consente di eseguire le operazioni seguenti:

  • Esecuzione di una query per un determinato assembly.

  • Recupero di tutti i ruoli associati all'assembly.

  • Rimozione di tutte le entità associate a ognuno di tali ruoli.

  • Gestire gli eventuali errori in modo che all'utente vengano restituite informazioni significative.

Percorso dell'esempio

L'esempio è disponibile nel seguente percorso dell'SDK:

<Percorso> esempi\Amministrazione\ExplorerOM\UnenlistParties\

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

File Descrizione
App.ico, AssemblyInfo.cs, UnenlistParties.csproj, UnenlistParties.sln, UnenlistParties.cs File di progetto, soluzione e origine per la compilazione di un'applicazione da riga di comando in Visual C# che rimuove tutte le entità per un determinato assembly.

Compilare e inizializzare questo esempio

  1. In Visual Studio aprire il file di soluzione UnenlistParties.sln.

  2. Scegliere Compila soluzione dal menu Compila.

Esegui questo esempio

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

    <Percorso> esempi\Amministrazione\ExplorerOM\UnenlistParties\bin\Debug\

  2. Eseguire il file UnenlistParties.exe passando uno dei due argomenti della riga di comando seguenti:

    • <AssemblyName>. Nome dell'assembly da cui devono essere rimosse tutte le entità associate. Se il nome dell'assembly include spazi, racchiuderlo tra virgolette.

    • /?. Visualizza la Guida.

      Ad esempio:

    UnenlistParties "My BizTalk Assembly.dll"
    

    -OPPURE-

    UnenlistParties /?
    

Esempio di script di Windows PowerShell

Il frammento di script di Windows PowerShell seguente può essere usato per illustrare le stesse funzionalità delle classi ExplorerOM :

#===================#
#=== 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"

#=====================================================#
#=== If no assembly name is specified, just list   ===#
#=== the assemblies, roles and partyies enlisted.  ===#
#=====================================================#

if ($args[0] -eq $null)
{
  Write-Host `r`n===========================================================
  Write-Host No assembly name provided for party unenlist operation.
  Write-Host Listing Parties for each assembly on local BizTalk Server:
  Write-Host ===========================================================`r`n

  foreach ($assembly in $Catalog.Assemblies)
  {
    write-host $Assembly.Name`r`n

    foreach ($role in $Assembly.Roles)
    {
      write-host `t($role.name)

      foreach($party in $role.EnlistedParties)
      {
        Write-Host `t`t($party.Party.Name)
      }
      write-host
    }
  }

  write-host
}

#=====================================================#
#=== If assembly name is specified, remove parties ===#
#=== enlisted in all roles for the assembly.       ===#
#=====================================================#

else
{
  $Assembly = $Catalog.Assemblies[$args[0]]

  if ($assembly -eq $null)
  {
    write-host Assembly named $args[0] not found.`r`n
  }

  else
  {
    write-host `r`nUnenlisting parties from all roles in ($Assembly.Name)`r`n

    foreach ($role in $Assembly.Roles)
    {

      $count = $role.EnlistedParties.count

      for($c=0; $c -lt $count; $c++)
      {
        #==========================================================#
        #=== Array index stays at zero because the collection   ===#
        #=== changes after each item is removed.                ===#
        #==========================================================#

        $party = $role.EnlistedParties[0]

        Write-Host Unenlisting ($party.Party.Name) from ($role.Name)...
        $role.RemoveEnlistedParty($party)
        Write-Host done.`r`n
      }
    }

    write-Host Comitting changes...
    $catalog.SaveChanges()
    Write-Host done.`r`n
  }
}

L'output di script seguente è stato generato dalla rimozione di entità dall'assembly Supplier, che fa parte dell'esempio PartyResolution. L'esempio < PartyResolution si trova nella directory Samples Path>\Amministrazione\Orchestrations\PartyResolution.

PS C:\> .\UnenlistParties.ps1 Supplier

Unenlisting parties from all roles in Supplier

Unenlisting ShipmentAgency1 from ShipmentRole ...
done.

Unenlisting ShipmentAgency2 from ShipmentRole ...
done.

Unenlisting BuyerAgency from Buyer ...
done.

Comitting changes...
done.

Vedere anche

Admin-ExplorerOM (cartella di esempi di BizTalk Server)