private async Task <ActivityPayload> ConfigureQueryFr8Activity(List <ActivityTemplateDTO> activityTemplates)
        {
            var template = activityTemplates.Single(x => x.Terminal.Name == "terminalFr8Core" && x.Name == "Get_Data_From_Fr8_Warehouse" && x.Version == "1");
            var activity = await HubCommunicator.AddAndConfigureChildActivity(ActivityPayload, template, order : 3);

            var crateStorage    = activity.CrateStorage;
            var configControlCM = ActivityConfigurator.GetConfigurationControls(activity);
            var objectList      = (DropDownList)configControlCM.Controls.First(x => x.Name == "AvailableObjects");
            var selectedObject  = objectList.ListItems.Where(a => a.Key == (ActivityUI.BasedOnTemplateOption.Selected ? MT.DocuSignEnvelope_v2.GetEnumDisplayName() : MT.DocuSignRecipient.GetEnumDisplayName())).FirstOrDefault();

            if (selectedObject == null)
            {
                return(activity);
            }
            objectList.SelectByKey(selectedObject.Key);
            var queryBuilder = (QueryBuilder)configControlCM.Controls.First(c => c.Name == "QueryBuilder");
            var conditions   = new List <FilterConditionDTO>();

            if (ActivityUI.SentToSpecificRecipientOption.Selected)
            {
                conditions.Add(new FilterConditionDTO {
                    Field = "RecipientEmail", Operator = "eq", Value = ActivityUI.SpecificRecipientEmailText.Value
                });
            }

            conditions.Add(new FilterConditionDTO {
                Field = "EnvelopeId", Operator = "eq", Value = "FromPayload"
            });

            queryBuilder.Value = JsonConvert.SerializeObject(conditions);

            return(await HubCommunicator.ConfigureActivity(activity));
        }
Ejemplo n.º 2
0
        public async Task Run_WhenMessageIsEmpty_ReturnsError()
        {
            var activity         = New <Post_To_Chatter_v2>();
            var executionContext = new ContainerExecutionContext
            {
                PayloadStorage = new CrateStorage(Crate.FromContent(string.Empty, new OperationalStateCM()))
            };
            var activityContext = new ActivityContext
            {
                HubCommunicator = ObjectFactory.GetInstance <IHubCommunicator>(),
                ActivityPayload = new ActivityPayload
                {
                    CrateStorage = new CrateStorage()
                },
                AuthorizationToken = new AuthorizationToken {
                    Token = Token.Token
                }
            };
            await activity.Configure(activityContext);


            ActivityConfigurator.GetControl <ControlDefinitionDTO>(activityContext.ActivityPayload, "FeedTextSource").Value = null;

            activity = New <Post_To_Chatter_v2>();

            await activity.Run(activityContext, executionContext);

            var operationalState = executionContext.PayloadStorage.FirstCrateContentOrDefault <OperationalStateCM>();

            Assert.AreEqual(ActivityResponse.Error.ToString(), operationalState.CurrentActivityResponse.Type, "Run must fail if message is empty");
        }
        private async Task ConfigureSetDelayActivity(List <ActivityTemplateDTO> activityTemplates)
        {
            var template = activityTemplates.Single(x => x.Terminal.Name == "terminalFr8Core" && x.Name == "Set_Delay" && x.Version == "1");
            var activity = await HubCommunicator.AddAndConfigureChildActivity(ActivityPayload, template, order : 2);

            ActivityConfigurator.SetControlValue(activity, "Delay_Duration", ActivityUI.TimePeriod.Value);
        }
        private async Task <ActivityPayload> CreateProcessingActivity(ReconfigurationContext context)
        {
            var loopActivity = await HubCommunicator.AddAndConfigureChildActivity(context.SolutionActivity, await HubCommunicator.GetActivityTemplate("terminalFr8Core", "Loop"), "Loop", "Loop", 2);

            var loopConfigControls  = ActivityConfigurator.GetConfigurationControls(loopActivity);
            var crateChooser        = loopConfigControls.Controls.OfType <CrateChooser>().Single();
            var firstActivity       = context.SolutionActivity.ChildrenActivities.OrderBy(x => x.Ordering).First();
            var firstActivityCrates = firstActivity.CrateStorage.CrateContentsOfType <CrateDescriptionCM>().FirstOrDefault();

            crateChooser.CrateDescriptions = firstActivityCrates?.CrateDescriptions;

            var tableDescription = crateChooser.CrateDescriptions?.FirstOrDefault(x => x.ManifestId == (int)MT.StandardTableData);

            if (tableDescription != null)
            {
                tableDescription.Selected = true;
            }

            var solutionActivityUi         = new ActivityUi().ClonePropertiesFrom(context.SolutionActivity.CrateStorage.FirstCrate <StandardConfigurationControlsCM>().Content) as ActivityUi;
            var mailSenderActivityTemplate = await HubCommunicator.GetActivityTemplate(Guid.Parse(solutionActivityUi.MailSenderActivitySelector.Value));

            var sendEmailActivity = await HubCommunicator.AddAndConfigureChildActivity(loopActivity, mailSenderActivityTemplate, order : 1);

            return(loopActivity);
        }
        private void SetNotifierActivityBody(ActivityPayload notifierActivity)
        {
            var activityConfigurator = new ActivityConfigurator(notifierActivity);

            if (notifierActivity.ActivityTemplate.Name == "Send_Email_Via_SendGrid")
            {
                var emailBodyField = activityConfigurator.GetControl <TextSource>("EmailBody", ControlTypes.TextSource);
                emailBodyField.ValueSource = "upstream";
                emailBodyField.Value       = "NotificationMessage";
                emailBodyField.selectedKey = "NotificationMessage";
                var emailSubjectField = activityConfigurator.GetControl <TextSource>("EmailSubject", ControlTypes.TextSource);
                emailSubjectField.ValueSource = "specific";
                emailSubjectField.TextValue   = "Fr8 Notification Message";
            }
            else if (notifierActivity.ActivityTemplate.Name == "Send_Via_Twilio")
            {
                var emailBodyField = activityConfigurator.GetControl <TextSource>("SMS_Body", ControlTypes.TextSource);
                emailBodyField.ValueSource = "upstream";
                emailBodyField.Value       = "NotificationMessage";
                emailBodyField.selectedKey = "NotificationMessage";
            }
            else if (notifierActivity.ActivityTemplate.Name == "Publish_To_Slack")
            {
                var messageField = activityConfigurator.GetControl <TextSource>("Select_Message_Field", ControlTypes.TextSource);
                if (messageField == null)
                {
                    //user is not authenticated yet - there is nothing we can do now
                    return;
                }
                messageField.ValueSource = "upstream";
                messageField.Value       = "NotificationMessage";
                messageField.selectedKey = "NotificationMessage";
            }
        }
Ejemplo n.º 6
0
        private void SetSelectedTemplate(ActivityPayload docuSignActivity, DropDownList selectedTemplateDd)
        {
            var actionDdlb = ActivityConfigurator.GetControl <DropDownList>(docuSignActivity, "Available_Templates", ControlTypes.DropDownList);

            actionDdlb.selectedKey = selectedTemplateDd.selectedKey;
            actionDdlb.Value       = selectedTemplateDd.Value;
        }
Ejemplo n.º 7
0
        private void SetToConversion(ActivityPayload convertCratesActivity)
        {
            var toDropdown = ActivityConfigurator.GetControl <DropDownList>(convertCratesActivity, "Available_To_Manifests", ControlTypes.DropDownList);

            toDropdown.Value       = ((int)MT.StandardFileHandle).ToString(CultureInfo.InvariantCulture);
            toDropdown.selectedKey = MT.StandardFileHandle.GetEnumDisplayName();
        }
Ejemplo n.º 8
0
        private void SetFromConversion(ActivityPayload convertCratesActivity)
        {
            var fromDropdown = ActivityConfigurator.GetControl <DropDownList>(convertCratesActivity, "Available_From_Manifests", ControlTypes.DropDownList);

            fromDropdown.Value       = ((int)MT.DocuSignTemplate).ToString(CultureInfo.InvariantCulture);
            fromDropdown.selectedKey = MT.DocuSignTemplate.GetEnumDisplayName();
        }
        private async Task SetQueryFr8WarehouseActivityFields(ActivityPayload queryFr8Warehouse, string recipientEmail)
        {
            //update action's duration value
            var crateStorage     = queryFr8Warehouse.CrateStorage;
            var configControlCM  = ActivityConfigurator.GetConfigurationControls(queryFr8Warehouse);
            var radioButtonGroup = (configControlCM.Controls.First() as RadioButtonGroup);

            radioButtonGroup.Radios[0].Selected = false;
            radioButtonGroup.Radios[1].Selected = true;
            var             objectList = (DropDownList)(radioButtonGroup.Radios[1].Controls.FirstOrDefault(c => c.Name == "AvailableObjects"));
            MtTypeReference selectedObject;

            if (string.IsNullOrEmpty(recipientEmail))
            {
                selectedObject = GetMtType(typeof(DocuSignEnvelopeCM_v2));
            }
            else
            {
                selectedObject = GetMtType(typeof(DocuSignRecipientStatus));
            }

            if (selectedObject == null)
            {
                return;
            }

            objectList.Value       = selectedObject.Id.ToString("N");
            objectList.selectedKey = selectedObject.Alias;

            var filterPane = (FilterPane)radioButtonGroup.Radios[1].Controls.First(c => c.Name == "Filter");

            var conditions = new List <FilterConditionDTO>
            {
                new FilterConditionDTO {
                    Field = "EnvelopeId", Operator = "eq", Value = "FromPayload"
                }
            };

            if (recipientEmail != null)
            {
                conditions.Add(new FilterConditionDTO {
                    Field = "Email", Operator = "eq", Value = recipientEmail
                });
            }

            filterPane.Value = JsonConvert.SerializeObject(new FilterDataDTO
            {
                ExecutionType = FilterExecutionType.WithFilter,
                Conditions    = conditions
            });

            using (var uow = _container.GetInstance <IUnitOfWork>())
            {
                var queryCriteria = Crate.FromContent("Queryable Criteria", new FieldDescriptionsCM(MTTypesHelper.GetFieldsByTypeId(uow, selectedObject.Id)));
                crateStorage.Add(queryCriteria);
            }
        }
Ejemplo n.º 10
0
        private void SetFileDetails(ActivityPayload storeFileActivity, string fileName)
        {
            var fileNameTextbox     = ActivityConfigurator.GetControl <TextBox>(storeFileActivity, "File_Name", ControlTypes.TextBox);
            var fileCrateTextSource = ActivityConfigurator.GetControl <TextSource>(storeFileActivity, "File Crate label", ControlTypes.TextSource);

            fileNameTextbox.Value           = fileName;
            fileCrateTextSource.ValueSource = "specific";
            fileCrateTextSource.TextValue   = "From DocuSignTemplate To StandardFileDescription";
        }
        private async Task <ActivityPayload> ConfigureSecondChildActivity(ReconfigurationContext context)
        {
            var curActivityTemplates = (await HubCommunicator.GetActivityTemplates(null, true))
                                       .ToList();

            var             selectedReceiver = curActivityTemplates.Single(x => x.Name == _dataSourceValue);
            ActivityPayload parentActivity;
            int             activityIndex;

            if (DoesActivityTemplateGenerateTableData(selectedReceiver))
            {
                var loopActivity = context.SolutionActivity.ChildrenActivities
                                   .OfType <ActivityPayload>()
                                   .SingleOrDefault(x => x.ActivityTemplate.Name == "Loop" && x.Ordering == 2);

                if (loopActivity == null)
                {
                    throw new ApplicationException("Invalid solution structure, no Loop activity found.");
                }

                loopActivity = await HubCommunicator.ConfigureChildActivity(context.SolutionActivity, loopActivity);

                var crateChooser     = ActivityConfigurator.GetControl <CrateChooser>(loopActivity, "Available_Crates");
                var tableDescription = crateChooser.CrateDescriptions.FirstOrDefault(c => c.ManifestId == (int)MT.StandardTableData);
                if (tableDescription != null)
                {
                    tableDescription.Selected = true;
                }
                parentActivity = loopActivity;
                activityIndex  = 1;
            }
            else
            {
                parentActivity = context.SolutionActivity;
                activityIndex  = 2;
            }

            var sendDocuSignEnvelope = parentActivity.ChildrenActivities
                                       .OfType <ActivityPayload>()
                                       .Single(x => x.ActivityTemplate.Name == "Send_DocuSign_Envelope" &&
                                               x.Ordering == activityIndex
                                               );

            sendDocuSignEnvelope.CrateStorage = new CrateStorage();
            sendDocuSignEnvelope = await HubCommunicator.ConfigureChildActivity(parentActivity, sendDocuSignEnvelope);

            ActivityConfigurator.SetControlValue(
                sendDocuSignEnvelope,
                "target_docusign_template",
                _docuSignTemplate.ListItems
                .FirstOrDefault(a => a.Key == _docuSignTemplate.selectedKey)
                );

            sendDocuSignEnvelope = await HubCommunicator.ConfigureChildActivity(parentActivity, sendDocuSignEnvelope);

            return(sendDocuSignEnvelope);
        }
        private async Task ConfigureBuildMessageActivity(List <ActivityTemplateDTO> activityTemplates)
        {
            var template = activityTemplates.Single(x => x.Terminal.Name == "terminalFr8Core" && x.Name == "Build_Message" && x.Version == "1");
            var activity = await HubCommunicator.AddAndConfigureChildActivity(ActivityPayload.RootPlanNodeId.Value, template, order : 2);

            ActivityConfigurator.SetControlValue(activity, "Body", MessageBody);
            ActivityConfigurator.SetControlValue(activity, "Name", "NotificationMessage");
            await HubCommunicator.ConfigureActivity(activity);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Transition the state machine workflow to the Final state
        /// </summary>
        /// <typeparam name="TWorkflow"></typeparam>
        /// <typeparam name="TInstance"></typeparam>
        /// <param name="activityConfigurator"></param>
        /// <returns></returns>
        public static ActivityConfigurator <TWorkflow, TInstance> Finalize <TWorkflow, TInstance>(
            this ActivityConfigurator <TWorkflow, TInstance> activityConfigurator)
            where TWorkflow : class
            where TInstance : class
        {
            var configurator = new TransitionConfigurator <TWorkflow, TInstance>(StateMachineWorkflow.FinalStateName);

            activityConfigurator.AddConfigurator(configurator);

            return(activityConfigurator);
        }
Ejemplo n.º 14
0
        public static MessageExceptionConfigurator <TWorkflow, TInstance, TBody> InCaseOf <TWorkflow, TInstance, TBody>(
            this ActivityConfigurator <TWorkflow, TInstance, TBody> activityConfigurator)
            where TWorkflow : class
            where TInstance : class
        {
            var configurator = new MessageExceptionConfiguratorImpl <TWorkflow, TInstance, TBody>(activityConfigurator);

            activityConfigurator.AddConfigurator(configurator);

            return(configurator);
        }
Ejemplo n.º 15
0
        public static ActivityConfigurator <TWorkflow, TInstance, TBody> Then <TWorkflow, TInstance, TBody>(
            this ActivityConfigurator <TWorkflow, TInstance, TBody> activityConfigurator, Action <TInstance> action)
            where TWorkflow : class
            where TInstance : class
        {
            var configurator = new DelegateInstanceConfigurator <TWorkflow, TInstance>(action);

            activityConfigurator.AddConfigurator(configurator);

            return(activityConfigurator);
        }
Ejemplo n.º 16
0
        public static ActivityConfigurator <TWorkflow, TInstance, TBody> TransitionTo <TWorkflow, TInstance, TBody>(
            this ActivityConfigurator <TWorkflow, TInstance, TBody> activityConfigurator,
            Expression <Func <TWorkflow, State> > targetStateExpression)
            where TWorkflow : class
            where TInstance : class
        {
            var configurator = new TransitionConfigurator <TWorkflow, TInstance>(targetStateExpression);

            activityConfigurator.AddConfigurator(configurator);

            return(activityConfigurator);
        }
Ejemplo n.º 17
0
        public static ActivityConfigurator <TWorkflow, TInstance, TBody> Then <TWorkflow, TInstance, TBody>(
            this ActivityConfigurator <TWorkflow, TInstance, TBody> activityConfigurator,
            Expression <Func <TInstance, Action <TBody> > > methodExpression)
            where TWorkflow : class
            where TInstance : class
        {
            var configurator = new MethodBodyConfigurator <TWorkflow, TInstance, TBody>(methodExpression);

            activityConfigurator.AddConfigurator(configurator);

            return(activityConfigurator);
        }
        private async Task <ActivityPayload> CreateSecondChildActivity(ReconfigurationContext context)
        {
            var curActivityTemplates = (await HubCommunicator.GetActivityTemplates(null, true))
                                       .ToList();

            var             selectedReceiver = curActivityTemplates.Single(x => x.Name == _dataSourceValue);
            ActivityPayload parentActivity;
            int             activityIndex;

            if (DoesActivityTemplateGenerateTableData(selectedReceiver))
            {
                var loopAT = await HubCommunicator.GetActivityTemplate("terminalFr8Core", "Loop");

                var loopActivity = await HubCommunicator.AddAndConfigureChildActivity(context.SolutionActivity, loopAT, "Loop", "Loop", 2);

                var crateChooser        = ActivityConfigurator.GetControl <CrateChooser>(loopActivity, "Available_Crates");
                var firstActivity       = context.SolutionActivity.ChildrenActivities.OrderBy(x => x.Ordering).First();
                var firstActivityCrates = firstActivity.CrateStorage.CrateContentsOfType <CrateDescriptionCM>().FirstOrDefault();

                crateChooser.CrateDescriptions = firstActivityCrates?.CrateDescriptions;

                var tableDescription = crateChooser.CrateDescriptions?.FirstOrDefault(c => c.ManifestId == (int)MT.StandardTableData);
                if (tableDescription != null)
                {
                    tableDescription.Selected = true;
                }

                parentActivity = loopActivity;
                activityIndex  = 1;
            }
            else
            {
                parentActivity = context.SolutionActivity;
                activityIndex  = 2;
            }

            var sendDocusignEnvelopeAT = await HubCommunicator.GetActivityTemplate("terminalDocuSign", "Send_DocuSign_Envelope", activityTemplateVersion : "2");

            var sendDocuSignActivity = await HubCommunicator.AddAndConfigureChildActivity(parentActivity, sendDocusignEnvelopeAT, order : activityIndex);

            // Set docusign template
            ActivityConfigurator.SetControlValue(sendDocuSignActivity, "TemplateSelector",
                                                 _docuSignTemplate.ListItems.FirstOrDefault(a => a.Key == _docuSignTemplate.selectedKey)
                                                 );

            await HubCommunicator.ConfigureChildActivity(parentActivity, sendDocuSignActivity);

            return(activityIndex == 1 ? sendDocuSignActivity : parentActivity);
        }
Ejemplo n.º 19
0
        public static ActivityConfigurator <TWorkflow, TInstance, Request <TRequest> > Respond
        <TWorkflow, TInstance, TRequest>(
            this ActivityConfigurator <TWorkflow, TInstance, Request <TRequest> > activityConfigurator)
            where TWorkflow : class
            where TInstance : class
        {
            var configurator =
                new DelegateInstanceBodyConfigurator <TWorkflow, TInstance, Request <TRequest> >((instance, request) =>
            {
                request.Respond();
            });

            activityConfigurator.AddConfigurator(configurator);

            return(activityConfigurator);
        }
Ejemplo n.º 20
0
        public static ActivityConfigurator <TWorkflow, TInstance, Request <TRequest> > Respond
        <TWorkflow, TInstance, TRequest, TResponse>(
            this ActivityConfigurator <TWorkflow, TInstance, Request <TRequest> > activityConfigurator,
            Func <Request <TRequest>, TResponse> getResponse)
            where TWorkflow : class
            where TInstance : class
        {
            var configurator =
                new DelegateInstanceBodyConfigurator <TWorkflow, TInstance, Request <TRequest> >((instance, request) =>
            {
                TResponse response = getResponse(request);

                request.Respond(response);
            });

            activityConfigurator.AddConfigurator(configurator);

            return(activityConfigurator);
        }
        private async Task <Guid> ConfigureNotifierActivity(List <ActivityTemplateDTO> activityTemplates, int previousNotifierOrdering)
        {
            var template = activityTemplates.First(x => x.Id == NotifierActivityTemplateId);
            var activity = await HubCommunicator.AddAndConfigureChildActivity(ActivityPayload.RootPlanNodeId.Value, template, order : previousNotifierOrdering);

            if (activity.ActivityTemplate.Name == "Send_Email_Via_SendGrid" && activity.ActivityTemplate.Version == "1")
            {
                //var configControls = ControlHelper.GetConfigurationControls(activity.CrateStorage);
                var emailBodyField = ActivityConfigurator.GetControl <TextSource>(activity, "EmailBody", ControlTypes.TextSource);
                emailBodyField.ValueSource = "upstream";
                emailBodyField.Value       = NotificationMessageLabel;
                emailBodyField.selectedKey = NotificationMessageLabel;
                var emailSubjectField = ActivityConfigurator.GetControl <TextSource>(activity, "EmailSubject", ControlTypes.TextSource);
                emailSubjectField.ValueSource = "specific";
                emailSubjectField.TextValue   = "Fr8 Notification Message";

                await HubCommunicator.ConfigureActivity(activity);
            }
            else if (activity.ActivityTemplate.Name == "Send_Via_Twilio" && activity.ActivityTemplate.Version == "1")
            {
                var emailBodyField = ActivityConfigurator.GetControl <TextSource>(activity, "SMS_Body", ControlTypes.TextSource);
                emailBodyField.ValueSource = "upstream";
                emailBodyField.Value       = NotificationMessageLabel;
                emailBodyField.selectedKey = NotificationMessageLabel;
            }
            else if (activity.ActivityTemplate.Name == "Publish_To_Slack" && activity.ActivityTemplate.Version == "2")
            {
                if (activity.CrateStorage.FirstCrateOrDefault <StandardAuthenticationCM>() == null)
                {
                    var messageField = ActivityConfigurator.GetControl <TextSource>(activity, "MessageSource", ControlTypes.TextSource);
                    messageField.ValueSource  = "upstream";
                    messageField.Value        = NotificationMessageLabel;
                    messageField.selectedKey  = NotificationMessageLabel;
                    messageField.SelectedItem = new FieldDTO {
                        Name = NotificationMessageLabel
                    };
                    activity = await HubCommunicator.ConfigureActivity(activity);
                }
            }
            return(activity.Id);
        }
        private async Task <ActivityPayload> ConfigureMonitorActivity(List <ActivityTemplateDTO> activityTemplates)
        {
            var template = activityTemplates.Single(x => x.Terminal.Name == "terminalDocuSign" && x.Name == "Monitor_DocuSign_Envelope_Activity" && x.Version == "1");
            var activity = await HubCommunicator.AddAndConfigureChildActivity(ActivityPayload, template, order : 1);

            await HubCommunicator.ApplyNewToken(activity.Id, Guid.Parse(AuthorizationToken.Id));

            activity = await HubCommunicator.ConfigureActivity(activity);

            ActivityConfigurator.SetControlValue(activity, "EnvelopeSent", "true");
            if (ActivityUI.SentToSpecificRecipientOption.Selected)
            {
                ActivityConfigurator.SetControlValue(activity, "TemplateRecipientPicker.recipient.RecipientValue", ActivityUI.SpecificRecipientEmailText.Value);
                ActivityConfigurator.SetControlValue(activity, "TemplateRecipientPicker.recipient", true);
                ActivityConfigurator.SetControlValue(activity, "TemplateRecipientPicker.template", false);
            }
            else if (ActivityUI.BasedOnTemplateOption.Selected)
            {
                ActivityConfigurator.SetControlValue(activity, "TemplateRecipientPicker.template.UpstreamCrate", ActivityUI.TemplateSelector.ListItems.Single(x => x.Key == ActivityUI.TemplateSelector.selectedKey));
                ActivityConfigurator.SetControlValue(activity, "TemplateRecipientPicker.recipient", false);
                ActivityConfigurator.SetControlValue(activity, "TemplateRecipientPicker.template", true);
            }
            return(await HubCommunicator.ConfigureActivity(activity));
        }
        public override async Task FollowUp()
        {
            var specificRecipientOption = ((RadioButtonGroup)ConfigurationControls.Controls[0]).Radios[0];
            var specificTemplateOption  = ((RadioButtonGroup)ConfigurationControls.Controls[0]).Radios[1];
            var howToBeNotifiedDdl      = (DropDownList)ConfigurationControls.FindByName("NotificationHandler");

            //let's don't add child actions to solution until how to be notified option is selected
            //FR-1873
            if (string.IsNullOrEmpty(howToBeNotifiedDdl.Value))
            {
                return;
            }
            var specificRecipient = specificRecipientOption.Controls.Single();

            if (specificRecipientOption.Selected && string.IsNullOrEmpty(specificRecipient.Value))
            {
                return;
            }

            var specificTemplate = specificTemplateOption.Controls.Single();

            if (specificTemplateOption.Selected && string.IsNullOrEmpty(specificTemplate.Value))
            {
                return;
            }

            bool hasChildren = false;

            if (ActivityPayload.ChildrenActivities.Any())
            {
                hasChildren = true;
                ActivityPayload.ChildrenActivities.Clear();
            }

            var monitorDocusignAT = await HubCommunicator.GetActivityTemplate("terminalDocuSign", "Monitor_DocuSign_Envelope_Activity");

            var setDelayAT = await HubCommunicator.GetActivityTemplate("terminalFr8Core", "Set_Delay");

            var queryFr8WareHouseAT = await HubCommunicator.GetActivityTemplate("terminalFr8Core", "Query_Fr8_Warehouse");

            var testIncomingDataAT = await HubCommunicator.GetActivityTemplate("terminalFr8Core", "Test_Incoming_Data");

            var buildMessageAT = await HubCommunicator.GetActivityTemplate("terminalFr8Core", "Build_Message");

            //DocuSign
            var tasks = new List <Task>();
            var monitorDocuSignActionTask = HubCommunicator.AddAndConfigureChildActivity(ActivityPayload, monitorDocusignAT, "Monitor Docusign Envelope Activity", "Monitor Docusign Envelope Activity", 1);

            tasks.Add(monitorDocuSignActionTask);
            var setDelayActionTask = HubCommunicator.AddAndConfigureChildActivity(ActivityPayload, setDelayAT, "Set Delay", "Set Delay", 2);

            tasks.Add(setDelayActionTask);
            var queryFr8WarehouseActionTask = HubCommunicator.AddAndConfigureChildActivity(ActivityPayload, queryFr8WareHouseAT, "Query Fr8 Warehouse", "Query Fr8 Warehouse", 3);

            tasks.Add(queryFr8WarehouseActionTask);
            var filterActionTask = HubCommunicator.AddAndConfigureChildActivity(ActivityPayload, testIncomingDataAT, "Test Incoming Data", "Test Incoming Data", 4);

            tasks.Add(filterActionTask);
            Task <ActivityPayload> buildMessageActivityTask = null;

            if (!hasChildren)
            {
                buildMessageActivityTask = HubCommunicator.AddAndConfigureChildActivity((Guid)ActivityPayload.ParentPlanNodeId, buildMessageAT, "Build a Message", "Build a Message", 2);
                tasks.Add(buildMessageActivityTask);
            }

            await Task.WhenAll(tasks);

            var monitorDocuSignAction   = monitorDocuSignActionTask.Result;
            var setDelayAction          = setDelayActionTask.Result;
            var queryFr8WarehouseAction = queryFr8WarehouseActionTask.Result;
            var filterAction            = filterActionTask.Result;

            // var notifierActivity = notifierActivityTask.Result;
            if (specificRecipientOption.Selected)
            {
                ActivityConfigurator.SetControlValue(monitorDocuSignAction, "TemplateRecipientPicker.recipient.RecipientValue", specificRecipientOption.Controls[0].Value);
            }
            else if (specificTemplateOption.Selected)
            {
                var ddlbTemplate = (specificTemplateOption.Controls[0] as DropDownList);
                ActivityConfigurator.SetControlValue(monitorDocuSignAction, "TemplateRecipientPicker.template.UpstreamCrate",
                                                     ddlbTemplate.ListItems.Single(a => a.Key == ddlbTemplate.selectedKey));
            }

            if (buildMessageActivityTask != null)
            {
                var buildMessageActivity = buildMessageActivityTask.Result;

                ActivityConfigurator.SetControlValue(buildMessageActivity, "Body", MessageBody);
                ActivityConfigurator.SetControlValue(buildMessageActivity, "Name", "NotificationMessage");

                buildMessageActivity = await HubCommunicator.ConfigureActivity(buildMessageActivity);
            }

            if (!hasChildren)
            {
                var notifierAT = await HubCommunicator.GetActivityTemplate(Guid.Parse(howToBeNotifiedDdl.Value));

                var notifierActivity = await HubCommunicator.AddAndConfigureChildActivity((Guid)ActivityPayload.ParentPlanNodeId, notifierAT, howToBeNotifiedDdl.selectedKey, howToBeNotifiedDdl.selectedKey, 3);

                SetNotifierActivityBody(notifierActivity);
                await HubCommunicator.ConfigureActivity(notifierActivity);
            }

            ActivityConfigurator.SetControlValue(monitorDocuSignAction, "EnvelopeSent", "true");
            //let's make followup configuration for monitorDocuSignEventAction
            //followup call places EventSubscription crate in storage
            var configureMonitorDocusignTask = HubCommunicator.ConfigureActivity(monitorDocuSignAction);


            var durationControl = (Duration)ConfigurationControls.FindByName("TimePeriod");

            ActivityConfigurator.SetControlValue(setDelayAction, "Delay_Duration", durationControl.Value);
            await SetQueryFr8WarehouseActivityFields(queryFr8WarehouseAction, specificRecipientOption.Controls[0].Value);

            //let's make a followup configuration to fill criteria fields
            var configureQueryMTTask = HubCommunicator.ConfigureActivity(queryFr8WarehouseAction);
            var recipientEventStatus = (DropDownList)ConfigurationControls.FindByName("RecipientEvent");

            SetFilterUsingRunTimeActivityFields(filterAction, recipientEventStatus.Value);

            await Task.WhenAll(configureMonitorDocusignTask, configureQueryMTTask);

            monitorDocuSignAction = configureMonitorDocusignTask.Result;
            ActivityPayload.ChildrenActivities    = ActivityPayload.ChildrenActivities.OrderBy(a => a.Ordering).ToList();
            ActivityPayload.ChildrenActivities[0] = monitorDocuSignAction;
        }
Ejemplo n.º 24
0
 public static ActivityConfigurator <IServiceWorkflow, IServiceController, ServiceFault> LogFault(
     this ActivityConfigurator <IServiceWorkflow, IServiceController, ServiceFault> configurator)
 {
     return(configurator
            .Then((i, m) => _log.ErrorFormat("[{0}] Fault: {1}", i.Name, m.ToLogString())));
 }
Ejemplo n.º 25
0
        public ExceptionConfiguratorImpl(ActivityConfigurator <TWorkflow, TInstance> activityConfigurator)
        {
            _activityConfigurator = activityConfigurator;

            _configurators = new List <ActivityBuilderConfigurator <TWorkflow, TInstance> >();
        }