Receiving Message from MessageBox

Home Page Forums BizTalk 2004 – BizTalk 2010 Receiving Message from MessageBox

Viewing 1 reply thread
  • Author
    Posts
    • #15222

      Hi,

      I have two orchestrations.
      One receives a message, transforms it and sends it to messagebox thru Direct port binding.

      Next Orchestration should receive the message from messagebox and do the remaining process.

      I came to know that I can have filter condition set at receive shape in second orch,or use correlation.

      I need clarification in following issues.

      1. Using filter shape – Will it work if I promote certain field in the schema?
      2. Since I am using only 2 orchestrations and only once in second orchestration i will subscribe to message box, performance wise which method I should follow – using filtering or correlation.
      3. IF I have to use correlation how to go about it…
      4. Do I need receive shape in second Orch if I need to use correlation.
      5. What should be the value for ‘Activate’ property of Receive shape in filter/correlation methods?

      Please help me.
      Thanx

    • #15223

      Thanks for the reply..

      Here is what I understood.

      I want to promote ceratin field in the schema and use that in the filter condition and use that same field for correlation set.

      But I have a question here.

      In filter condition I need to mention the value which is not possible since these values come from incoming schema.

      One more question I have. If I use correlation, do I need to specify the filter condition in receive shape?

      Please give me some detail as I am confused with correlation and filter options.

      Thanx in advance

      • #15224

        Thank you for the reply

        Let me put my problem in a better way.

        As I said earlier there are 2 orchestrations
        One takes an input message, transforms it and sends to Message box.
        Second one should pick it up from Message box and do the remaining flows.
        So I think this is the case where the publishing to Mbox triggers Orch2.

        According to what I understood from your reply (Please correct me in case if I am wrong)
        is, I should have a receive shape which is Active and have to use Filters.
        And I cannot use correlation since my receive shape is active.

        Since I don’t know any values to give specifically at filter condition, Do I have any other method from which I can solve
        this publishing to Mbox problem without landing up in subscribing all the messages published.

        Does BizTalk generate any specific instance Id/type while publishing to Mbox so that I can use it in Orch2

        Thanks a lot again

        • #15225

          Thanx Tom,

          I’ll go thru the sites you have mentioned and apply the best solution

          Thank You

          • #15226

            Here are some answers:

            1. Yes, it will work. Notice that however, if you’re trying to manually promote an arbitrary property of the message in the sending orchestration, you might need to initialize a correlation set during the send operation; otherwise the value will only get written to the message context and not promoted.

            Notice also that in your case you could also use Partner ports, to make it easier to hook up both orchestrations, instead of using promoted properties.

            2, 3, 4, 5. Actually, in the scenario you describe you’d always use an activating receive shape with a filter, since you want to have the message cause a new instance of the orchestration to be spawned to process it.

            The only case in which you’d use a correlation is if you want the message to be processed by an orchestration that is already running (started by a completely different message). It does not sound like this is your case.

            Here are some good articles to get you started with direct binding:
            http://geekswithblogs.net/cyoung/articles/19546.aspx
            http://blogs.msdn.com/kevin_lam/archive/2006/04/18/578572.aspx
            http://blogs.msdn.com/kevin_lam/archive/2006/04/25/583490.aspx
            http://blogs.msdn.com/kevin_lam/archive/2006/06/14/631313.aspx
            http://blogs.msdn.com/kevin_lam/archive/2006/07/07/659214.aspx
            http://blogs.msdn.com/kevin_lam/archive/2006/07/25/678547.aspx

            • #15227

              [quote:c53459c95c=\”Anonymous\”]Thanks for the reply..

              Here is what I understood.

              I want to promote ceratin field in the schema and use that in the filter condition and use that same field for correlation set.

              But I have a question here.

              In filter condition I need to mention the value which is not possible since these values come from incoming schema.

              One more question I have. If I use correlation, do I need to specify the filter condition in receive shape?

              Please give me some detail as I am confused with correlation and filter options.

              Thanx in advance[/quote:c53459c95c]

              I guess I am not sure what it is you’re asking. As I said in my last reply, you decide which method to use based on a single fact: Do you want the message you’re sending to be picked up by an already running orchestration instance, or to trigger a new orchestration instance?

              How it works will all depend on that question.

              I will comment on some of your questions though:
              You don’t mix filters and correlations. Filter expressions are *onlY* available in activating receive shapes, and you cannot have an activating receive that follows a correlation set. Hence, they are mutually exclusive.

              If you don’t know the value of the promoted property you want to filter on, it sounds like you should at least be able to filter on the property being there. You can use the Exists() predicate in your filter expression to only pick up messages where the specified property exists in the message context, independent of its value.

              • #15228

                [quote:9edca0c118=\”Anonymous\”]Thank you for the reply

                Let me put my problem in a better way.

                As I said earlier there are 2 orchestrations
                One takes an input message, transforms it and sends to Message box.
                Second one should pick it up from Message box and do the remaining flows.
                So I think this is the case where the publishing to Mbox triggers Orch2.

                According to what I understood from your reply (Please correct me in case if I am wrong)
                is, I should have a receive shape which is Active and have to use Filters.
                And I cannot use correlation since my receive shape is active.

                [/quote:9edca0c118]
                Yes! that’s right.

                [quote:9edca0c118=\”Anonymous\”]
                Since I don’t know any values to give specifically at filter condition, Do I have any other method from which I can solve
                this publishing to Mbox problem without landing up in subscribing all the messages published.
                [/quote:9edca0c118]

                You can use a filter with the exists() predicate, which means grab any message where the specified property is promoted, regardless of what value it has.

                That said, it sounds like just using partner ports on your orchestrations would work just as well and be less work. Check out
                http://blogs.msdn.com/kevin_lam/archive/2006/06/14/631313.aspx

Viewing 1 reply thread
  • The forum ‘BizTalk 2004 – BizTalk 2010’ is closed to new topics and replies.