1
Vote

GoPublisherDisassembler Property Promotion problem

description

I know you're not supposed to create issues on stuff that you wrote yourself :), but I don't know a way around this one, so I'm hoping someone else will....
 
The GoPublisherDisassembler pipeline component derives from XmlDisAsm, and has all the same configuration properties as XmlDisAsm. Next to those, it has two other config properties:
  • ResolutionBeforeDisassembling (bool): if true, the resolution will be performed before disassembling, and the input message (only one!) is provided to the resolution provider. If false, resolution will be performed after disassembling, for each disassembled message, and the disassembled message is provided to the resolution provider every time.
  • ResolutionConnectionString: The resolver config string specifying which resolution provider to use.
     
    The GoPublisherDisassembler works when ResolutionBeforeDisassembling == true. It also works when ResolutionBeforeDisassembling == false, but only if the promoted property values, that are specified on the schema corresponding to the disassembled messages, are not used in the resolution process.
     
    Example: The ESB.Extensions.Tests.BizTalkArtifacts project uses the SequenceId property, which is a promoted property on Order. The OrderBatch is disassembled into the separate Order messages. When the GetNext() function of the GoPublisherDisassembler pipeline component executes, this property has not been promoted yet. I guess that this property is promoted by the XmlDasmReader when the stream is consumed, which is later than when the resolution is executed (which happens in the GetNext function). My resolution depends on this promoted property, so I'm kinda stuck on this one.
     
    Any solutions out there?

file attachments

comments

BVeldhoen wrote Nov 23, 2009 at 3:37 PM

The unit test T00050 fails because of this issue, see image. You can use this test for easy reproduction.

wrote Nov 23, 2009 at 3:37 PM

wrote Feb 1, 2013 at 9:48 PM