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);
        }
示例#2
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 = "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);
        }