Mar 052007
 

Because there is so much written about this pipeline component, I would list some things it does (refering to here and here):

  1. Provides a way to ensure guaranteed delivery of a message
  2. Creates a unique id for that message
  3. Provides a standardized context ‘wrapper’ XML docuement that contains the context properties of the message
  4. Keeps the message in the MessageBox until a corresponding acknowedgment is recieved.

Now the question is why/where would you use it?

  1. If you are doing BizTalk to BizTalk communication, you want two seperate BizTalk Hosts talking to each other.
  2. You want exactly-once delivery of data.
  3. You need to save the context data w/o modifying the original data.

I am involved in a project that the use #3 is the reason why I needed to use it. We are creating a standard message, and the process to import the data into the application is complete, the only problem is there is no routing information in the data, where it came from. It only has data about the patient, not who sent the data. What I really needed to do is attach wrapper data to the original message.

The Framework Pipeline component is the perfect solution. Some things that are required, but not documented are the following properties (in bold):

IsReliable
PassAckThrough
eps_to_address
eps_to_address_type
eps_from_address
eps_from_address_type
prop_identity
prop_sentAt
prop_topic
svc_deliveryRctRqt_sendTo_address
svc_deliveryRctRqt_sendTo_address_type
svc_deliveryRctRqt_sendBy
svc_commitmentRctRqt_sendTo_address
svc_commitmentRctRqt_sendTo_address_type
svc_commitmentRctRqt_sendBy
prc_type
prc_instance
deliveryRct_receivedAt
deliveryRct_identity
commitmentRct_identity
commitmentRct_decidedAt
commitmentRct_decision
commitmentRct_commitmentCode

If you don’t specify those properties you will get the following errors:

There was a failure executing the send pipeline: Reason: Invalid BTF message. The message is missing context properties eps_from_address that are required to generate a proper BTF envelope.

There was a failure executing the send pipeline: Reason: Invalid BTF message. The message is missing context properties eps_from_address_type that are required to generate a proper BTF envelope.

There was a failure executing the send pipeline: Reason: Invalid BTF message. The message is missing context properties eps_to_address that are required to generate a proper BTF envelope.

There was a failure executing the send pipeline: Reason: Invalid BTF message. The message is missing context properties eps_to_address_type that are required to generate a proper BTF envelope.

There was a failure executing the send pipeline: Reason: Invalid BTF message. The message is missing context properties prop_topic that are required to generate a proper BTF envelope

Here is an example of how you set those variables is the following properties:

OutputMsg(BTF2.eps_from_address)=InputMsg(BTS.ReceivePortName);
OutputMsg(BTF2.eps_from_address_type)=”Lab”;
OutputMsg(BTF2.eps_to_address)=”Order Directory”;
OutputMsg(BTF2.eps_to_address_type)=”XML”;
OutputMsg(BTF2.prop_topic)=”Order”;

Which will make the following envelope around the message: