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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
         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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }