Ask a questionAsk a question
 

Answerquestion about Itinerary-Static

  • Tuesday, October 20, 2009 8:43 PMRajinder Singh Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    In WCF OnRamp that is installed with the ESB toolkit I see the following Resolver connection String

    ITINERARY-STATIC:\\headerRequired=false;

    Can someone tell me what headerRequired=false means?

    Where is this documented in the ESB documentation?
    Integration Architect

Answers

  • Wednesday, October 21, 2009 7:45 PMnick.hauenstein Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Answer


    Here's the procedure of the lab document that is doing the work to make resubmission possible:

    §
     
    Prepare the On-Ramp for Message Submission and Resubmission

    a.     In the BizTalk Server 2009 Administration Console, expand Applications > Microsoft.Practices.ESB > Receive Locations.

    a.     Right-click OnRamp.Itinerary.WCF, and then click Properties.

    b.    Click the ellipsis button (...) to open the pipeline configuration.

    c.     In the Configure Pipeline dialog, configure the values as shown in the table below:

    Property

    Value

    ResolverConnectionString

    ITINERARY-STATIC:\\name=FundsTransfer;headerRequired=false;

     

    Note: This configuration removes the requirement for incoming requests to specify the itinerary to use. Since the resubmission process does not allow you to specify an itinerary, you should use a resolver string that will find an appropriate itinerary on your On-Ramp, or use a separate On-Ramp for resubmission. An itinerary specified in the header will always take precedence over one specified statically in the ITINERARY-STATIC resolver.

    d.    Click OK on both of the open configuration dialogs, and then close the Administration Console.


    BizTalk ESB Toolkit 2.0 Training: http://quicklearn.com/redir/?r=esbtraining

All Replies

  • Tuesday, October 20, 2009 9:10 PMnick.hauenstein Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Proposed Answer

    headerRequired indicates whether or not it is required that an itinerary descriptor (name / version / GUID) be in the header of the SOAP message for any of the WCF on-ramps. You would set this to true in the case that nothing else is in the connection string (e.g., ITINERARY-STATIC:\\headerRequired=true;). The resolver will then use the information in the header to determine the name/version or GUID to use in looking up the itinerary.

    In effect this property decides who has control in determining the routing of the message. If you set headerRequired=true, the client has control of message routing, and is responsible for knowing about ESB and the concept of itineraries. If you set headerRequired=false, you must specify a name and optionally version property within the connection string to indicate which itinerary to use.

    It is not in the documentation, as it was written before that property existed.


    BizTalk ESB Toolkit 2.0 Training: http://quicklearn.com/redir/?r=esbtraining
  • Tuesday, October 20, 2009 10:00 PMRajinder Singh Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Thanks for the explaination. It makes sense to me.

    However it seems to me that Resubmit feature of the management portal does not work out of the box.
    There are 3 exception handling samples and none of them deal with repair and resubmit via Portal.

    I have digging through the Management Portal Code to understand how the resubmit will work.
    There is a message resubmitter class:


       public static class MessageResubmitter
       {
          /// <summary>
          /// Submits an XML message to the WCF OnRamp.  The URL of the WCF OnRamp is defined in the
          /// portal web.config.  Context properties are not resubmitted, they are expected to be
          /// applied by the receiving pipeline.
          /// </summary>
          /// <param name="doc">The XML document to submit.</param>
          /// <returns>True if the submission was successful, false if the submission failed.</returns>
          public static bool ResubmitWCF(XmlDocument doc)
          {
             try
             {
                ProcessRequestClient onRamp = new ProcessRequestClient();
                onRamp.SubmitRequest(null, doc.OuterXml);
                return true;
             }
             catch (Exception)
             {
                return false;
             }
          }



    It resubmits message to WCF OnRamp.
    In WCF OnRamp the resolver connection string is set to
    ITINERARY-STATIC:\\headerRequired=false;

    How does an Itinerary get attached to a message that is submitted to the WCF OnRamp that are provided with ESB Toolkit?

    It seems to me that resubmit process does not work with the existing code samples that are provided.

    Can you confirm this?

    Does anyone have a code sample that shows how the resubmit process work?

    Integration Architect
  • Wednesday, October 21, 2009 3:46 PMnick.hauenstein Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    If I recall correctly, the samples are actually using custom on-ramps that will also be listed in the portal for resubmission.

    For non-sample use, you will have to reconfigure the on-ramp's resolver connection string in order to select the appropriate itinerary for submission/resubmission. I would recommend the BRI resolver for this. BRI is Business Rules Itinerary resolver, and has the same connection string syntax as the BRE resolver. After installing the Toolkit, there is a special vocabulary in the BRE for setting the name of the itinerary to use, that is what you would want to use.

    Do note that when you resubmit, it will resubmit at the beginning of the process, unless you have configured it to do otherwise (e.g., you are submitting a different message type than the original input message, and are selecting an itinerary based on current message type in the on-ramp).

    As for a sample, QuickLearn offers training that walks through a scenario that has exception handling with resubmission. I don't think I can distribute that at will. That said, I might write up a blog on the topic within the next few weeks, and would be able to offer sample code in that case. If I do write that blog, I'll leave a link in this thread.
    BizTalk ESB Toolkit 2.0 Training: http://quicklearn.com/redir/?r=esbtraining
  • Wednesday, October 21, 2009 6:28 PMRajinder Singh Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     

    Nick,

    I have seen the sample Repair and Resubmit that is part of your ESB Toolkit 2.0 Training. I will recommend this training to anyone who wants to learn more about ESB Toolkit.

    In your sample in the training there is a Windows App that sends message to WCF OnRamp.
    It sets the itinerary.Name property to "FundsTransfer".
    The correct itinerary gets assigned and message gets delivered to the fund transfer process.
    In case of failure you use ESB Portal to repair and resubmit. You used WCF OnRamp. This is the same OnRamp that was used by the client application that submitted the initial message. When I do this I am trying to do the same but I am getting an error:
    Error 135008: The itinerary was not found in the repository.

    When I look at the Portal code it does not set the Itinerary name it just submits the request. So the above error makes sense to me.
    How were you able to make the resubmit work? I am using the VPC that is part of your training.

    Let me know if you want to take this offline. How can I reach you directly? I am preparing for a demo tomorrow and I need to show Repair and Resubmit.


    Thanks

     


    Integration Architect
  • Wednesday, October 21, 2009 7:43 PMnick.hauenstein Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    nickh@quicklearn.com
    BizTalk ESB Toolkit 2.0 Training: http://quicklearn.com/redir/?r=esbtraining
  • Wednesday, October 21, 2009 7:45 PMnick.hauenstein Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Answer


    Here's the procedure of the lab document that is doing the work to make resubmission possible:

    §
     
    Prepare the On-Ramp for Message Submission and Resubmission

    a.     In the BizTalk Server 2009 Administration Console, expand Applications > Microsoft.Practices.ESB > Receive Locations.

    a.     Right-click OnRamp.Itinerary.WCF, and then click Properties.

    b.    Click the ellipsis button (...) to open the pipeline configuration.

    c.     In the Configure Pipeline dialog, configure the values as shown in the table below:

    Property

    Value

    ResolverConnectionString

    ITINERARY-STATIC:\\name=FundsTransfer;headerRequired=false;

     

    Note: This configuration removes the requirement for incoming requests to specify the itinerary to use. Since the resubmission process does not allow you to specify an itinerary, you should use a resolver string that will find an appropriate itinerary on your On-Ramp, or use a separate On-Ramp for resubmission. An itinerary specified in the header will always take precedence over one specified statically in the ITINERARY-STATIC resolver.

    d.    Click OK on both of the open configuration dialogs, and then close the Administration Console.


    BizTalk ESB Toolkit 2.0 Training: http://quicklearn.com/redir/?r=esbtraining