Invalidar los valores de encabezado EDI para el X12 997 saliente
En este artículo se proporciona información sobre cómo resolver problemas al invalidar los valores de encabezado de intercambio electrónico de datos (EDI) para X12 997 saliente.
Versión del producto original: BizTalk Server 2010
Número KB original: 2753540
Síntoma
Cuando se usa como se documenta en Invalidar encabezados EDI para invalidar encabezados EDI para un documento OverrideEDIHeader X12 997 saliente, se produce el siguiente error:
Hubo un error al ejecutar la canalización de envío: "Microsoft.BizTalk.Edi.DefaultPipelines.EdiSend, Microsoft.BizTalk.Edi.EdiPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Source: "EDI Assembler" Send Port: URI "SENDPORTNAME": "SENDPORTURI" Reason: Agreement Resolution based on the context properties for x12 Protocol has failed.
Causa
EDI receive crea 997s con las cuatro propiedades de contexto siguientes ya establecidas:
- DestinationPartyReceiverIdentifier
- DestinationPartyReceiverQualifier
- DestinationPartySenderIdentifier
- DestinationPartySenderQualifier
Debido a esta situación, aún se aplica la lógica de resolución de acuerdos y determinación de esquema para los mensajes EDI salientes.
Solución
Para usar los encabezados EDI de invalidación, el componente de canalización personalizado debe quitar primero las cuatro propiedades de contexto anteriores.
A continuación se muestra el código de ejemplo de un componente de canalización que Execute() establece , , y en un mensaje saliente de ISA05 ISA06 ISA07 ISA08 997.
public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg)
{
string EdiPropertyNS = "http://schemas.microsoft.com/BizTalk/2006/edi-properties";
string EdiNS = "http://schemas.microsoft.com/Edi/PropertySchema";
string EDi997NS = "http://schemas.microsoft.com/Edi/X12#X12_997_Root";
string systemPropertiesNs = "http://schemas.microsoft.com/BizTalk/2003/system-properties";
if (pInMsg.Context.Read("MessageType", systemPropertiesNs).ToString() == EDi997NS)
{
pInMsg.Context.Write("DestinationPartyReceiverIdentifier", EdiNS, null);
pInMsg.Context.Write("DestinationPartyReceiverQualifier", EdiNS, null);
pInMsg.Context.Write("DestinationPartySenderIdentifier", EdiNS, null);
pInMsg.Context.Write("DestinationPartySenderQualifier", EdiNS, null);
pInMsg.Context.Promote("OverrideEDIHeader", EdiPropertyNS, (object)"True");
pInMsg.Context.Promote("ISA05", EdiPropertyNS, (object)"00;
pInMsg.Context.Promote("ISA06", EdiPropertyNS, (object)"1111111111");
pInMsg.Context.Promote("ISA07", EdiPropertyNS, (object)"ZZ");
pInMsg.Context.Promote("ISA08", EdiPropertyNS, (object)"AAAAAAAAAAAAAAA");
}
return pInMsg;
}