private static WorkflowElement CreateWorkflow()
{
var result = new Sequence();
var input = new Variable<Person>();
result.Variables.Add(input);
XNamespace ns = "http://tempuri.org";
var handle1 = new Variable<CorrelationHandle>();
result.Variables.Add(handle1);
var handle2 = new Variable<CorrelationHandle>();
result.Variables.Add(handle2);
var receive1 = new Receive()
{
OperationName = "Operation1",
ServiceContractName = ns + "MyService",
Value = new OutArgument<Person>(input),
AdditionalCorrelations = {
{"ChannelBasedCorrelation", new InArgument<CorrelationHandle>(handle1)}
},
CorrelationQuery = CreateCorrelationQuery(),
CanCreateInstance = true
};
result.Activities.Add(receive1);
var write1 = new WriteLine()
{
Text = new InArgument<string>(env => string.Format("\tThe workflow was called with '{0}'.", input.Get(env)))
};
result.Activities.Add(write1);
var reply1 = new SendReply()
{
Request = receive1,
Value = new InArgument<string>("The result")
};
result.Activities.Add(reply1);
var receive2 = new Receive()
{
OperationName = "Operation2",
ServiceContractName = ns + "MyService",
Value = new OutArgument<Person>(input),
AdditionalCorrelations = {
{"ChannelBasedCorrelation", new InArgument<CorrelationHandle>(handle2)}
},
CorrelationQuery = CreateCorrelationQuery()
};
result.Activities.Add(receive2);
var write2 = new WriteLine()
{
Text = new InArgument<string>(env => string.Format("\tThe workflow was called again with '{0}'.", input.Get(env)))
};
result.Activities.Add(write2);
var reply2 = new SendReply()
{
Request = receive2,
Value = new InArgument<string>("The second result")
};
result.Activities.Add(reply2);
return result;
}