¿Existe alguna forma de automatizar el encendido o apagado de una ubicación de recepción en BizTalk? Parece que debería haber algún tipo de API o algo así para este tipo de cosas. Preferiría trabajar en C#, pero WMI o algún tipo de script también funcionaría.¿Hay alguna forma de automatizar el encendido o apagado de la ubicación de recepción de BizTalk mediante el código?
Respuesta
Además de ExplorerOM, como has descubierto, también puedes activar/desactivar las ubicaciones de recepción (y controlar los puertos de envío) usando WMI.
Tengo un script de muestra de PowerShell que muestra cómo hacer esas cosas here, si está interesado.
Encontré una solución. Parece que el Microsoft.BizTalk.ExplorerOM.dll es lo que quería. He aquí un extracto de la documentación de BizTalk que debe recibir cualquier otra persona creados:
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);
}
}
}
}
Una advertencia, al parecer, esta DLL no es compatible con 64 bits. Como solo estoy escribiendo una utilidad sencilla, no es un gran problema para mí (solo compilar como de 32 bits), pero es algo de lo que hay que estar consciente.
puedo utilizar para acceder de forma remota a BizTalk Server ?? – Kiquenet
Hola Alhambraeidos, si te entiendo correctamente, sí puedes. Lo usé para crear una pequeña aplicación de Windows que me permite seleccionar una ubicación de recepción y desactivarla. –
En respuesta al comentario Alhambraeidos. He aquí es algunos fragmentos de código que utilicé en una aplicación de Windows para desactivar una ubicación de recepción remota:
/// <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();
}
Se dará cuenta de que hay una cierta Salí fuera, como yo estaba creando un diccionario de ubicaciones recibir llamadas "Ubicaciones ", pero deberías ser capaz de entender la idea. El patrón es más o menos cierto para cualquier objeto de BizTalk con el que desee interactuar.
Me alegra ver que parece haber encontrado una solución.
Quería mencionar una alternativa similar que también utiliza Powershell, ExplorerOM y la API de BizTalk para establecer los artefactos de BizTalk en varios estados.
Reciba las ubicaciones siendo una de ellas.
La secuencia de comandos acepta archivos de configuración XML, donde enumera los artefactos y el estado en el que desea establecerlos.
El guión ha sido publicada a Microsoft Script Center: http://gallery.technet.microsoft.com/scriptcenter/Set-Artifact-Status-270f43a0
- 1. ¿Hay alguna manera de detectar el estado del monitor en Windows (encendido o apagado)?
- 2. ¿Hay alguna forma de 'resaltar' el código?
- 3. ¿Hay alguna forma de activar y desactivar el bluetooth y/o wifi mediante programación en iOS?
- 4. ¿Hay alguna forma de automatizar las pruebas de Windows Forms?
- 5. ¿Cómo agregar controles deslizantes de encendido/apagado?
- 6. Compruebe de forma programática si el monitor está apagado
- 7. ¿Por qué este código se comporta de manera diferente con optomisations encendido o apagado?
- 8. Recibo de notificaciones de encendido (especialmente apagado) en Mac OSX
- 9. ¿Hay alguna forma de formatear el código en TextWrangler?
- 10. ¿Hay alguna forma de doblar el código manualmente en Eclipse?
- 11. ¿Cómo denegar el apagado al presionar el botón de encendido por un tiempo?
- 12. ¿Hay alguna forma de establecer el título de la página mediante enlace de datos utilizando Knockout.js?
- 13. Toggle Las casillas de verificación de encendido/apagado
- 14. WebBrowser Control IE8 Modo de compatibilidad Interruptor de encendido/apagado
- 15. ¿Hay alguna forma de obtener el alias de un tipo mediante la reflexión?
- 16. ¿Hay alguna forma de revertir los efectos del compilador de cierre (o similares) en el código?
- 17. ¿Hay alguna forma de pasar el iPhone?
- 18. ¿Cómo crear un interruptor de encendido/apagado con Javascript/CSS?
- 19. Xcode Modo DEBUG: ¿cuándo está encendido/apagado?
- 20. Evento o propiedad de pantalla apagada en el iPhone
- 21. automatizar el patrón de código InvokeRequired
- 22. ¿Hay alguna forma de minimizar mediante programación una ventana?
- 23. ¿Hay alguna forma de cambiar la contraseña de gmail mediante programación mediante Java?
- 24. ¿Hay alguna forma de copiar el código del Eclipse IDE sin el formato de texto enriquecido?
- 25. ¿Hay alguna forma de ejecutar componentes ActiveX en Firefox mediante el uso de un complemento?
- 26. ¿Cómo detectar si UISwitch está encendido/apagado?
- 27. ¿Hay alguna forma de especificar la ubicación de un jsch.jar local desde dentro de build.xml?
- 28. ¿Hay alguna forma de desactivar o modificar la finalización del código de Xcode?
- 29. ¿Hay alguna forma de comentar un gran fragmento de código?
- 30. Cómo reiniciar la aplicación si el apagado de forma inesperada
Genial, esto es definitivamente válido. Cuantas más opciones, mejor. Gracias tomasr. –