Y at-il un moyen d'automatiser transformer un BizTalk emplacement de réception ou de désactiver par le code?

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

  •  19-09-2019
  •  | 
  •  

Question

Y at-il un moyen d'automatiser l'activation ou la désactivation d'un emplacement de réception dans BizTalk? Il semble qu'il devrait y avoir une sorte d'API ou quelque chose comme pour ce genre de chose. Je préférerais travailler en C #, mais WMI ou une sorte de script travaillerais aussi.

Était-ce utile?

La solution

En plus ExplorerOM, que vous avez découvert, vous pouvez également activer / désactiver (emplacements de réception et de contrôle envoient des ports) en utilisant WMI.

J'ai un script PowerShell exemple qui montre comment faire ces choses ici , si vous êtes intéressé.

Autres conseils

J'ai trouvé une solution. Il semble que le Microsoft.BizTalk.ExplorerOM.dll est ce que je voulais. Voici un extrait de la documentation BizTalk qui devrait trouver quelqu'un d'autre a commencé:

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);
            }
        }
    }
}

Une mise en garde, apparemment ce dll ne prend pas en charge 64 bits. Depuis que je suis en train d'écrire seulement un utilitaire simple, il est pas une grosse affaire pour moi (juste la compilation de 32 bits), mais il est quelque chose à être au courant.

Je suis heureux de voir que vous semblez avoir trouvé une solution.

Je voulais mentionner une alternative similaire qui utilise également Powershell, ExplorerOM, et l'API BizTalk pour définir des artefacts BizTalk à différents statuts.

Emplacements de réception étant l'un d'entre eux.

Le script accepte les fichiers de configuration XML, où vous la liste des artefacts et quel est le statut que vous souhaitez les mettre à.

Le script a été publié à Microsoft Script Center: http://gallery.technet.microsoft.com/scriptcenter/Set-Artifact -status-270f43a0

En réponse au commentaire Alhambraeidos. Voici quelques extraits est de code que j'ai utilisé dans une application Windows pour désactiver un emplacement de réception à distance:

    /// <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();
    }

Vous remarquerez qu'il ya un peu je me suis permis, comme je créais un dictionnaire de recevoir des emplacements appelés « Emplacements », mais vous devriez être en mesure d'obtenir l'idée. Le joli motif tient beaucoup vrai pour tout objet BizTalk vous souhaitez interagir avec.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top