Microsoft Developer Network > Forums Home > BizTalk Server Forums > BizTalk Server RFID > How to specify a custom source node to be the starting node of event processing tree
Ask a questionAsk a question
 

Proposed AnswerHow to specify a custom source node to be the starting node of event processing tree

  • Saturday, October 10, 2009 9:09 AMNeelathamara Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Hai all,

    By going through the help document of Biztalk Rfid i came to know that Rfid Process pipeline work as an event processing tree.
    If the RFID process has no custom sources, the tree will remain a chain with the first event handler as the leaf, and the final event handler as the root. 
    If the process has a custom source or more than one custom sources then the scenario is different. I think its flow depends on the physical device bind to the custom source.
    It is clearly explained in the follwing link
    http://msdn.microsoft.com/en-us/library/dd352342(BTS.10).aspx

    But in my scenario same physical device is bound to all of my custom sources. I don't know how will my event processing tree be.
    Also i want to  make one of my custom source to be executed . It should not sends events to uplevel custom source as in normal case.

    Please give me any idea.
    Regards ,
    Neelam

All Replies

  • Wednesday, October 14, 2009 11:23 AMNeelathamara Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    hai,

    Please read my post above and help me by giving some ideas.

    Regards ,
    Neelam
  • Monday, October 19, 2009 2:37 PMSharathP - MSFT Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Proposed Answer
    Hi Neelam,
        I see two questions here.

    1. How will the event processing tree behave when multiple custom sources are bound to the same device/Logical device?

    Answer: There is no particular sequence the tree would follow amongst the custom sources consuming events from the same Logical device/physical device. What is guaranteed is that each LD will get that event.

    2. How to program a custom source (in turn the event handler) such that when events are pushed into this source, it would not deliver them to the parent custom source?

    Answer: You could program an Event handler (EH) that just consumes events and does not pass them to the next EH. Basically like the SqlServerSink component. Having this component as the last component in the custom source ensures that events processed in this component chain would not be passed to the parent custom source. However, if the parent custom source has any components registered in its component bindings, there should be atleast one child custom source/logical device that delivers events to the parents. Examples below:

    a. Process with just one child custom source having a sink component

       Main LS:
          |-> Device bindings --- No LDs
          |-> Component bindings --- No components
          |-> Custom sources:
                     |->CustomSource1:
                            |-> Device bindings --- LD1 (bound to Physical device 1)
                            |-> Component bindings --- SqlServerSink

       In this example, events from LD1 go into SqlServerSink. Since there are no components in the parent logical source, there is no requirement for child custom sources to pass on events

    b. Process having bound components and custom sources

       Main LS:
          |-> Device bindings --- No LDs
          |-> Component bindings --- REPE1 (Rule Engine Policy Executor) -> SqlServerSink
          |-> Custom sources:
                     |->CustomSource1:
                            |-> Device bindings --- LD1 (bound to Physical device 1)
                            |-> Component bindings --- SqlServerSink
                     |->CustomSource2:
                            |-> Device bindings --- LD2 (bound to Physical device 2)
                            |-> Component bindings --- REPE2 (Rule Engine Policy Executor)
       In this example, although the behavior of CustomSource1 remains the same, meaning that events would not be passed to the parent logical source, since there are components bound to the parent logical source, we need to add another child custom source that could deliver events to those components, basically making the components reachable. Alternatively, this could also be done by adding logical device bindings to the main logical source. The takeaway is that as long as every component is reachable, it is not mandatory for custom sources/EHs to pass the event up the tree.

    Thanks,
    Sharath Palavalli