public override IList <string> Convert(object value) { List <string> results = new List <string>(); SendParametersContent content = value as SendParametersContent; if (null != content) { foreach (KeyValuePair <string, InArgument> param in content.Parameters) { results.Add(param.Key); results.Add(param.Value.GetType().Name); results.AddRange(new ArgumentSearchableStringConverter().Convert(param.Value)); } } return(results); }
/// <summary> /// Create SendReplay /// </summary> /// <returns>SendReply activity</returns> private SendReply CreateSendReplay() { _sendReply = _sendReply ?? new SendReply(); var parameters = new SendParametersContent(); parameters.Parameters["response"] = new InArgument <TResponse>(_response); _sendReply.Content = parameters; _sendReply.Request = _receive; if (GenerateCorrelationId && UseContentCorrelation) { _sendReply.CorrelationInitializers.Clear(); _sendReply.CorrelationInitializers.Add( new QueryCorrelationInitializer { CorrelationHandle = CorrelationHandle, MessageQuerySet = _correlationOn, } ); } return(_sendReply); }
public Activity Create(System.Windows.DependencyObject target) { // _service = CustomUnityContainer.Container.Resolve<IService<CR>>(); // Sequence container. var sequence = new Sequence(); sequence.DisplayName = "Update Task"; // Correlation Handle. var handle = new Variable<CorrelationHandle>("_handle"); var workItem = new Variable<Task>("_workItemTask"); // Get variable collection. var variables = GetVariableCollection(target); if (variables == null) { sequence.Variables.Add(handle); sequence.Variables.Add(workItem); } else { handle = AddVariable<CorrelationHandle>(variables, handle); workItem = AddVariable<Task>(variables, workItem); } // Create Receive Activity. var receive = new Receive(); receive.DisplayName = "Update Task Receive"; receive.Action = "http://tempuri.org/IPILCRWorkflowService/UpdateTask"; receive.OperationName = "UpdateTask"; receive.ProtectionLevel = ProtectionLevel.None; receive.ServiceContractName = "IPILCRWorkflowService"; // Add parameters to Receive var parameters = new ReceiveParametersContent(); parameters.Parameters.Add("workItem", new OutArgument<Task>(workItem)); receive.Content = parameters; // Add CorrelationInitializer to Receive var initializer = new RequestReplyCorrelationInitializer(); initializer.CorrelationHandle = new InArgument<CorrelationHandle>(handle); receive.CorrelationInitializers.Add(initializer); // Create SendReply Activity var send = new SendReply(); send.DisplayName = "Update Reply"; send.Action = "http://tempuri.org/IPILCRWorkflowService/UpdateTaskResponse"; send.Request = receive; send.PersistBeforeSend = true; // Add parameters to SendReply var sendParameters = new SendParametersContent(); sendParameters.Parameters.Add("UpdateResponseResult", new InArgument<Task>(workItem)); send.Content = sendParameters; // Create Create activity. UpdateTask activty = new UpdateTask(); activty.DisplayName = "UpdateTask"; activty.WorkItem = workItem; // Add activities to sequence. sequence.Activities.Add(receive); sequence.Activities.Add(activty); sequence.Activities.Add(send); return sequence; }
public Activity Create(DependencyObject target) { // Sequence container. var sequence = new Sequence(); sequence.DisplayName = "Reject"; // Correlation Handle. var handle = new Variable <CorrelationHandle>("_handle"); var leave = new Variable <Leave>("_leave"); // Get variable collection. var variables = GetVariableCollection(target); if (variables == null) { sequence.Variables.Add(handle); sequence.Variables.Add(leave); } else { handle = AddVariable <CorrelationHandle>(variables, handle); leave = AddVariable <Leave>(variables, leave); } // Create Receive Activity. var receive = new Receive(); receive.DisplayName = "Reject Receive"; receive.Action = "http://tempuri.org/ILeaveWorkflowService/Reject"; receive.OperationName = "Reject"; receive.ProtectionLevel = ProtectionLevel.None; receive.ServiceContractName = "ILeaveWorkflowService"; // Add parameters to Receive var parameters = new ReceiveParametersContent(); parameters.Parameters.Add("leave", new OutArgument <Leave>(leave)); receive.Content = parameters; // Add CorrelationInitializer to Receive var initializer = new RequestReplyCorrelationInitializer(); initializer.CorrelationHandle = new InArgument <CorrelationHandle>(handle); receive.CorrelationInitializers.Add(initializer); // Create SendReply Activity var send = new SendReply(); send.DisplayName = "Reject Reply"; send.Action = "http://tempuri.org/ILeaveWorkflowService/RejectResponse"; send.Request = receive; send.PersistBeforeSend = true; // Add parameters to SendReply var sendParameters = new SendParametersContent(); sendParameters.Parameters.Add("RejectResponseResult", new InArgument <Leave>(leave)); send.Content = sendParameters; // Create Reject activity. Reject reject = new Reject(); reject.DisplayName = "Reject"; reject.Leave = leave; // Add activities to sequence. sequence.Activities.Add(receive); sequence.Activities.Add(reject); sequence.Activities.Add(send); return(sequence); }
public Activity Create(DependencyObject target) { // Sequence container. var sequence = new Sequence(); sequence.DisplayName = "Apply"; // Correlation Handle. var handle = new Variable <CorrelationHandle>("_handle"); var applyResult = new Variable <TrainingRequest>("_applyResult"); var trainingRequest = new Variable <TrainingRequest>("_trainingRequest"); // Get variable collection. var variables = GetVariableCollection(target); if (variables == null) { sequence.Variables.Add(handle); sequence.Variables.Add(applyResult); sequence.Variables.Add(trainingRequest); } else { handle = AddVariable <CorrelationHandle>(variables, handle); applyResult = AddVariable <TrainingRequest>(variables, applyResult); trainingRequest = AddVariable <TrainingRequest>(variables, trainingRequest); } // Create Receive Activity. var receive = new Receive(); receive.DisplayName = "Apply Receive"; receive.Action = "http://tempuri.org/ITrainingWorkflowService/Apply"; receive.OperationName = "Apply"; receive.ProtectionLevel = ProtectionLevel.None; receive.ServiceContractName = "ITrainingWorkflowService"; receive.CanCreateInstance = true; // Add parameters to Receive var parameters = new ReceiveParametersContent(); parameters.Parameters.Add("trainingRequest", new OutArgument <TrainingRequest>(trainingRequest)); receive.Content = parameters; // Add CorrelationInitializer to Receive var initializer = new RequestReplyCorrelationInitializer(); initializer.CorrelationHandle = new InArgument <CorrelationHandle>(handle); receive.CorrelationInitializers.Add(initializer); // Create SendReply Activity var send = new SendReply(); send.DisplayName = "Apply Reply"; send.Action = "http://tempuri.org/ITrainingWorkflowService/ApplyResponse"; send.Request = receive; send.PersistBeforeSend = true; // Add parameters to SendReply var sendParameters = new SendParametersContent(); sendParameters.Parameters.Add("ApplyResponseResult", new InArgument <TrainingRequest>(applyResult)); send.Content = sendParameters; // Create Apply activity. Apply apply = new Apply(); apply.DisplayName = "Apply"; apply.ApplyResult = applyResult; apply.TrainingRequest = trainingRequest; // Add activities to sequence. sequence.Activities.Add(receive); sequence.Activities.Add(apply); sequence.Activities.Add(send); return(sequence); }
private static Activity GetCCWorkflowWithInitializeCorrelationActivity() { //<snippet4> Variable <string> OrderId = new Variable <string>(); Variable <string> Item = new Variable <string>(); Variable <CorrelationHandle> OrderIdHandle = new Variable <CorrelationHandle>(); InitializeCorrelation OrderIdCorrelation = new InitializeCorrelation { Correlation = OrderIdHandle, CorrelationData = { { "OrderId", new InArgument <string>(OrderId) } } }; Receive StartOrder = new Receive { CanCreateInstance = true, ServiceContractName = "IOrderService", OperationName = "StartOrder" }; SendReply ReplyToStartOrder = new SendReply { Request = StartOrder, Content = SendParametersContent.Create(new Dictionary <string, InArgument> { { "OrderId", new InArgument <string>((env) => OrderId.Get(env)) } }), }; // Other messaging activities omitted... //</snippet4> Receive AddItem = new Receive { ServiceContractName = "IOrderService", OperationName = "AddItem", CorrelatesWith = OrderIdHandle, CorrelatesOn = new MessageQuerySet { { "OrderId", new XPathMessageQuery("sm:body()/tempuri:AddItem/tempuri:OrderId") } }, Content = ReceiveParametersContent.Create(new Dictionary <string, OutArgument> { { "OrderId", new OutArgument <string>(OrderId) }, { "Item", new OutArgument <string>(Item) } }) }; SendReply ReplyToAddItem = new SendReply { Request = AddItem, Content = SendParametersContent.Create(new Dictionary <string, InArgument> { { "Reply", new InArgument <string>((env) => "Item added: " + Item.Get(env)) } }), }; //<snippet5> // Construct a workflow using OrderIdCorrelation, StartOrder, ReplyToStartOrder, // and other messaging activities. Activity wf = new Sequence { Variables = { OrderId, Item, OrderIdHandle }, Activities = { // Wait for a new order. StartOrder, // Assign a unique identifier to the order. new Assign <string> { To = new OutArgument <string>((env) => OrderId.Get(env)), Value = new InArgument <string>((env) => Guid.NewGuid().ToString()) }, ReplyToStartOrder, // Initialize the correlation. OrderIdCorrelation, // Wait for an item to be added to the order. AddItem, ReplyToAddItem } }; //</snippet5> return(wf); }
private static Activity GetCCWorkflow() { //<snippet1> Variable <string> OrderId = new Variable <string>(); Variable <string> Item = new Variable <string>(); Variable <CorrelationHandle> OrderIdHandle = new Variable <CorrelationHandle>(); Receive StartOrder = new Receive { CanCreateInstance = true, ServiceContractName = "IOrderService", OperationName = "StartOrder" }; //<snippet2> SendReply ReplyToStartOrder = new SendReply { Request = StartOrder, Content = SendParametersContent.Create(new Dictionary <string, InArgument> { { "OrderId", new InArgument <string>((env) => OrderId.Get(env)) } }), CorrelationInitializers = { new QueryCorrelationInitializer { CorrelationHandle = OrderIdHandle, MessageQuerySet = new MessageQuerySet { { "OrderId", new XPathMessageQuery("sm:body()/tempuri:StartOrderResponse/tempuri:OrderId") } } } } }; //</snippet2> //<snippet3> Receive AddItem = new Receive { ServiceContractName = "IOrderService", OperationName = "AddItem", CorrelatesWith = OrderIdHandle, CorrelatesOn = new MessageQuerySet { { "OrderId", new XPathMessageQuery("sm:body()/tempuri:AddItem/tempuri:OrderId") } }, Content = ReceiveParametersContent.Create(new Dictionary <string, OutArgument> { { "OrderId", new OutArgument <string>(OrderId) }, { "Item", new OutArgument <string>(Item) } }) }; //</snippet3> SendReply ReplyToAddItem = new SendReply { Request = AddItem, Content = SendParametersContent.Create(new Dictionary <string, InArgument> { { "Reply", new InArgument <string>((env) => "Item added: " + Item.Get(env)) } }), }; // Construct a workflow using StartOrder, ReplyToStartOrder, and AddItem. //</snippet1> Activity wf = new Sequence { Variables = { OrderId, Item, OrderIdHandle }, Activities = { StartOrder, new Assign <string> { To = new OutArgument <string>((env) => OrderId.Get(env)), Value = new InArgument <string>((env) => Guid.NewGuid().ToString()) }, ReplyToStartOrder, AddItem, ReplyToAddItem } }; return(wf); }