Gibt es eine Möglichkeit ein BizTalk Receive Location ein- oder ausgeschaltet durch den Code zu automatisieren drehen?

StackOverflow https://stackoverflow.com/questions/1515305

  •  19-09-2019
  •  | 
  •  

Frage

Gibt es eine Möglichkeit, das Ein- oder Ausschalten von einem Empfangsort in BizTalk zu automatisieren? Es scheint, wie es sollte eine gewisse Art von API oder so für diese Art der Sache sein. Ich würde in C # zu arbeiten bevorzugen, aber WMI oder irgendeine Art von Skript funktionieren würde.

War es hilfreich?

Lösung

Neben ExplorerOM, wie Sie herausgefunden haben, können Sie auch aktivieren / deaktivieren Empfangsstellen (und Steuersendeports) unter Verwendung von WMI.

ich eine Probe Powershell-Skript, das zeigt, wie die Dinge zu tun, hier , wenn Sie interessiert sind.

Andere Tipps

ich eine Lösung gefunden. Es scheint, dass die Microsoft.BizTalk.ExplorerOM.dll ist das, was ich wollte. Hier ist ein Auszug aus der BizTalk-Dokumentation, die bekommen sollte jemand anderes gestartet:

using System;
using Microsoft.BizTalk.ExplorerOM;
public static void EnumerateOrchestrationArtifacts()
{
    // Connect to the local BizTalk Management database
    BtsCatalogExplorer catalog = new BtsCatalogExplorer();
    catalog.ConnectionString = "Server=.;Initial Catalog=BizTalkMgmtDb;Integrated Security=SSPI;";

    // Enumerate all orchestrations and their ports/roles
    Console.WriteLine("ORCHESTRATIONS: ");
    foreach(BtsAssembly assembly in catalog.Assemblies)
    {
        foreach(BtsOrchestration orch in assembly.Orchestrations)
        {

            Console.WriteLine(" Name:{0}\r\n Host:{1}\r\n Status:{2}",
                orch.FullName, orch.Host.Name, orch.Status);

            // Enumerate ports and operations
            foreach(OrchestrationPort port in orch.Ports)
            {
                Console.WriteLine("\t{0} ({1})", 
                    port.Name, port.PortType.FullName);

                foreach(PortTypeOperation operation in port.PortType.Operations)
                {
                    Console.WriteLine("\t\t" + operation.Name);
                }
            }

            // Enumerate used roles
            foreach(Role role in orch.UsedRoles)
            {
                Console.WriteLine("\t{0} ({1})", 
                    role.Name, role.ServiceLinkType);

                foreach(EnlistedParty enlistedparty in role.EnlistedParties)
                {
                    Console.WriteLine("\t\t" + enlistedparty.Party.Name);
                }
            }

            // Enumerate implemented roles
            foreach(Role role in orch.ImplementedRoles)
            {
                Console.WriteLine("\t{0} ({1})", 
                    role.Name, role.ServiceLinkType);
            }
        }
    }
}

Eine Einschränkung, anscheinend diese DLL nicht unterstützt 64-Bit. Da ich nur ein einfaches Programm zu schreiben, es ist keine große Sache für mich (nur als 32-Bit kompiliert), aber es ist etwas bewusst zu sein.

Schön zu sehen, dass Sie scheinen, eine Lösung gefunden zu haben.

Wollte eine ähnliche Alternative zu erwähnen, die auch Powershell, ExplorerOM und die BizTalk-API-Set BizTalk Artefakte zu verschiedenen Status.

verwendet

Standorte Empfangen einer von ihnen zu sein.

Das Skript akzeptiert XML-Konfigurationsdateien, in dem Sie die Artefakte auflisten und welchen Status möchten Sie sie setzen.

Das Skript wurde Microsoft Script Center veröffentlicht: http://gallery.technet.microsoft.com/scriptcenter/Set-Artifact -Status-270f43a0

Als Reaktion auf Alhambraeidos Kommentar. Ist hier ist einige Auszüge von Code, den ich in einer Windows-Anwendung zu deaktivieren ein benutztes Empfangen Ort remote:

    /// <summary>
    /// Gets or sets the biz talk catalog.
    /// </summary>
    /// <value>The biz talk catalog.</value>
    private BtsCatalogExplorer BizTalkCatalog { get; set; }

    /// <summary>
    /// Initializes the biz talk artifacts.
    /// </summary>
    private void InitializeBizTalkCatalogExplorer()
    {
        // Connect to the local BizTalk Management database
        BizTalkCatalog = new BtsCatalogExplorer();
        BizTalkCatalog.ConnectionString = "server=BiztalkDbServer;database=BizTalkMgmtDb;integrated security=true";
    }


    /// <summary>
    /// Gets the location from biz talk.
    /// </summary>
    /// <param name="locationName">Name of the location.</param>
    /// <returns></returns>
    private ReceiveLocation GetLocationFromBizTalk(string locationName)
    {
        ReceivePortCollection receivePorts = BizTalkCatalog.ReceivePorts;
        foreach (ReceivePort port in receivePorts)
        {
            foreach (ReceiveLocation location in port.ReceiveLocations)
            {
                if (location.Name == locationName)
                {
                    return location;
                }
            }
        }

        throw new ApplicationException("The following receive location could not be found in the BizTalk Database: " + locationName);
    }


    /// <summary>
    /// Turns the off receive location.
    /// </summary>
    /// <param name="vendorName">Name of the vendor.</param>
    public void TurnOffReceiveLocation(string vendorName)
    {
        ReceiveLocation location = Locations[vendorName].ReceiveLocation;
        location.Enable = false;
        BizTalkCatalog.SaveChanges();
    }

Sie werden feststellen, dass es einige, die ich ausgelassen, als würde ich ein Wörterbuch der Empfangsspeicherorte zu schaffen „Orte“ genannt, aber Sie sollten in der Lage sein, die Idee zu bekommen. Das Muster ziemlich gilt für jede BizTalk-Objekt, mit denen Sie interagieren möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top