BAM continuation between WF/WCF application and BizTalk application

Awhile back a user asked me this question on BAM continuation from a WF/WCF application to a BizTalk application:

 

I have a process which starts a workflow and then an orchestration. I want to create an activity cross the workflow and the orchestration. So I create a ContinuationToken in the WF IC and create a ContinuationID in the Orchestration TPE. However, it does not seem work. The data from WF and the data from Orch are written into two records in the Completed table.

My questions are:

Is it possible for continuation to happen between WF/WCF and Orchestration? What specific steps I should be aware in order for that to happen? Any sample?

 

 

Here is my answer: if you have a WCF data that is also available (flowed to) Biztalk Orchestration, you can use it to form a continuation token. The important piece of information here is that you must prefix it with a constant and the constant must be the same name as the ContinuationID folder.

 

Here is a snippet of IC for a WCF application, in this continuation token node. Here the TokenID will be something like WCF2Orch1PO123 if POID contains PO123.

 

      <ic:ContinuationToken>

        <ic:Expression>

          <ic:Operation Name="Constant">

            <ic:Argument>WCF2Orch1</ic:Argument>

          </ic:Operation>

          <wcf:Operation Name="XPath">

            <wcf:Argument>//s:Body//po:POID</wcf:Argument>

          </wcf:Operation>

          <ic:Operation Name="Concatenate" />

        </ic:Expression>

      </ic:ContinuationToken>

 

In the TPE, you would then need to create a ContinuationID folder and rename it to “WCF2Orch1” and map the value under it to a piece of data that contains the flowed value of PO123.

* When you deploy the tracking profile, you will get a warning that the tracking profile is missing the Continuation folder, but since we know what we are doing :), just ignore and proceed.