2009-10-04 17 views
5

क्या बिज़टॉक में प्राप्त स्थान के मोड़ को चालू या बंद करने का कोई तरीका है? ऐसा लगता है कि इस तरह की चीज़ के लिए कुछ प्रकार का एपीआई या कुछ ऐसा होना चाहिए। मैं सी # में काम करना पसंद करूंगा, लेकिन डब्लूएमआई या किसी प्रकार की लिपि भी काम करेगी।क्या बिज़टॉक को कोड के माध्यम से स्थान पर या बंद करने के लिए स्वचालित करने का कोई तरीका है?

उत्तर

8

एक्सप्लोररॉम के अलावा, जैसा कि आपने पाया है, आप WMI का उपयोग करके स्थानों को प्राप्त/अक्षम कर सकते हैं (और बंदरगाहों को नियंत्रित कर सकते हैं)।

मेरे पास एक नमूना पावरशेल स्क्रिप्ट है जो दिखाती है कि यदि आप रुचि रखते हैं तो उन चीजों को here कैसे करें।

+0

ग्रेट, यह निश्चित रूप से मान्य है। बेहतर विकल्प अधिक। धन्यवाद tomasr। –

2

मुझे एक समाधान मिला। ऐसा प्रतीत होता है कि Microsoft.BizTalk.ExplorerOM.dll वही है जो मैं चाहता था। यहाँ BizTalk प्रलेखन कि किसी और को मिलना चाहिए से एक अंश शुरू कर दिया है:

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

एक चेतावनी, जाहिरा तौर पर इस dll 64 बिट का समर्थन नहीं करता। चूंकि मैं केवल एक साधारण उपयोगिता लिख ​​रहा हूं, यह मेरे लिए एक बड़ा सौदा नहीं है (बस 32-बिट के रूप में संकलित), लेकिन यह कुछ पता होना चाहिए।

+0

मैं BizTalk सर्वर को दूरस्थ पहुँच के लिए उपयोग कर सकते हैं ?? – Kiquenet

+0

हे अलहमब्राइडोस, अगर मैं आपको सही ढंग से समझता हूं तो हाँ आप कर सकते हैं। मैंने इसे एक छोटा विंडोज ऐप बनाने के लिए इस्तेमाल किया जो मुझे एक प्राप्त स्थान का चयन करने और इसे बंद करने देता है। –

0

अलहंब्राइडोस टिप्पणी के जवाब में।

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

आप देखेंगे कुछ मैं बाहर छोड़ दिया, जैसा कि मैंने "स्थान कहा जाता प्राप्त स्थानों की एक शब्दकोश का निर्माण कर रहा है कि वहाँ: यहाँ कोड के कुछ अंश मैं दूर से एक प्राप्त स्थान अक्षम करने के लिए एक Windows अनुप्रयोग में इस्तेमाल किया जाता है ", लेकिन आप विचार प्राप्त करने में सक्षम होना चाहिए। किसी भी बिज़टॉक ऑब्जेक्ट के साथ आप जिस तरह से बातचीत करना चाहते हैं, उसके लिए पैटर्न काफी सही है।

1

यह देखने के लिए खुशी हुई कि आपको एक समाधान मिल गया है।

एक समान विकल्प का उल्लेख करना चाहता था जो विभिन्न स्थितिओं में बिज़टॉक कलाकृतियों को सेट करने के लिए पावरहेल, एक्सप्लोररम और बिज़टॉक एपीआई का उपयोग कर रहा है।

स्थान प्राप्त करना उनमें से एक है।

स्क्रिप्ट XML कॉन्फ़िगरेशन फ़ाइलों को स्वीकार करता है, जहां आप कलाकृतियों को सूचीबद्ध करते हैं और आप उन्हें किस स्थिति में सेट करना चाहते हैं।

स्क्रिप्ट माइक्रोसॉफ्ट स्क्रिप्ट केंद्र को प्रकाशित किया गया है: http://gallery.technet.microsoft.com/scriptcenter/Set-Artifact-Status-270f43a0

संबंधित मुद्दे

 संबंधित मुद्दे