コード例 #1
0
        public ExmJob StartJob(ExmJobDefinitionModel jobDefinition)
        {
            jobDefinition.Job = new ExmJob();
            _jobDefinitions.Add(jobDefinition);
            var options = new JobOptions("ExperienceGeneratorExm-" + jobDefinition.Job.Id, "ExperienceGenerator", Sitecore.Context.Site.Name, this, "Run", new object[] { jobDefinition });

            JobManager.Start(options);
            return(jobDefinition.Job);
        }
コード例 #2
0
        public IHttpActionResult Post(ExmJobDefinitionModel specifications)
        {
            var job = ExmJobManager.Instance.StartJob(specifications);

            job.StatusUrl = Url.Route("ExperienceGeneratorExmJobsApi", new
            {
                action = "Get",
                id     = job.Id
            });
            return(Ok(job));
        }
コード例 #3
0
        public void Run(ExmJobDefinitionModel jobDefinition)
        {
            ExmEventsGenerator.Errors   = 0;
            jobDefinition.Job.JobStatus = JobStatus.Running;
            var jobCount = 1;

            foreach (var keyValuePair in jobDefinition)
            {
                ClearCounters(jobDefinition.Job);
                jobDefinition.Job.CampaignCountLabel = $"Generating Data for campaign {jobCount ++} of {jobDefinition.Count}...";
                var exmDataPreparationService = new ExmDataPreparationService(jobDefinition, keyValuePair.Value, keyValuePair.Key);
                exmDataPreparationService.CreateData();
            }

            jobDefinition.Job.JobStatus = JobStatus.Complete;
        }
コード例 #4
0
        public ExmDataPreparationService(ExmJobDefinitionModel specification, CampaignModel campaignDefinition,
                                         Guid exmCampaignId)
        {
            _specification      = specification;
            _campaignDefinition = campaignDefinition;
            _exmCampaignId      = exmCampaignId;
            _contactService     = new ExmContactService(specification);
            _listService        = new ExmListService(specification);

            var devices = new DeviceRepository().GetAll().ToDictionary(ga => ga.Id, ga => ga.UserAgent);

            _userAgent = campaignDefinition.Devices.ToDictionary(kvp => devices[kvp.Key], kvp => kvp.Value).Weighted();

            var geoData = GetGeoData(campaignDefinition.Locations);

            _geoData  = geoData.Select(x => x.WhoIs).Weighted(geoData.Select(x => x.Weight).ToArray());
            _eventDay = campaignDefinition.DayDistribution.Select(x => x / 100d).WeightedInts();
            if (campaignDefinition.LandingPages.Count > 0)
            {
                _goalId = campaignDefinition.LandingPages.Keys.Weighted(campaignDefinition.LandingPages.Values.Select(x => x / 100).ToArray());
            }
        }
コード例 #5
0
 public ExmContactService(ExmJobDefinitionModel specification)
 {
     _specification = specification;
 }
コード例 #6
0
 public ExmListService(ExmJobDefinitionModel specification)
 {
     _specification = specification;
     ListManager    = (ListManager <ContactList, ContactData>)Factory.CreateObject("contactListManager", false);
 }