Example #1
0
        public void TestGetJobInstances()
        {
            IDictionary <string, JobParameter> params2 = new OrderedDictionary <string, JobParameter>(2);

            params2["param"] = new JobParameter("test");
            var parameters2 = new JobParameters(params2);
            IDictionary <string, JobParameter> params3 = new OrderedDictionary <string, JobParameter>(2);

            params3["param"] = new JobParameter(1);
            var parameters3 = new JobParameters(params3);
            IDictionary <string, JobParameter> params4 = new OrderedDictionary <string, JobParameter>(2);

            params4["param"] = new JobParameter(2);
            var parameters4 = new JobParameters(params4);

            _jobInstanceDao.CreateJobInstance("testJob", _parameters);
            var instance2 = _jobInstanceDao.CreateJobInstance("testJob", parameters2);
            var instance3 = _jobInstanceDao.CreateJobInstance("testJob", parameters3);

            _jobInstanceDao.CreateJobInstance("testJob", parameters4);
            _jobInstanceDao.CreateJobInstance("testJob2", _parameters);

            var instances = _jobInstanceDao.GetJobInstances("testJob", 1, 2);

            Assert.AreEqual(2, instances.Count);
            Assert.AreEqual(instance3, instances[0]);
            Assert.AreEqual(instance2, instances[1]);
        }
Example #2
0
    public JobParameter ToDomain()
    {
        var domainObject = JobParameter.Factory(Type);

        Mapper.Map(this, domainObject);
        return(domainObject);
    }
        public override void SetJobParameter(string id, string name, string value)
        {
            if (id == null)
            {
                throw new ArgumentNullException(nameof(id));
            }

            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            var iJobId       = int.Parse(id);
            var jobParameter = DbContext.JobParameterRepository
                               .SingleOrDefault(_ => _.JobId == iJobId && _.Name == name);

            if (jobParameter != null)
            {
                jobParameter.Value = value;
                DbContext.Database.Update(jobParameter);
            }
            else
            {
                var newParameter = new JobParameter()
                {
                    JobId = Convert.ToInt32(id),
                    Name  = name,
                    Value = value
                };

                DbContext.Database.Insert(newParameter);
            }
        }
Example #4
0
 /// <summary>
 /// Initializes job argument (if it has not been initialized yet)
 /// </summary>
 /// <param name="arg">job argument</param>
 public void InitArgument(JobParameter arg)
 {
     if (Argument == null)
     {
         Argument = arg;
     }
 }
Example #5
0
 public JobParameterViewModel(JobParameter parameter)
 {
     DatenTyp       = parameter.DatenTyp;
     JobParameterId = parameter.JobParameterId;
     Name           = parameter.Name;
     Richtung       = parameter.Richtung;
     Wert           = parameter.Wert;
 }
Example #6
0
        public void GetJobParametersTest()
        {
            DefaultJobParametersConverter converter = new DefaultJobParametersConverter();

            NameValueCollection props2 = new NameValueCollection
            {
                { "+dateDebut(date)", "1970/07/31" },
                { "+everything(long)", "42" },
                { "-balance(double)", "1000.0" },
                { "+name(string)", "thierry" },
                { "-default", "default" },
                { "unmarked", "unmarked" }
            };
            JobParameters jobParameters2 = converter.GetJobParameters(props2);

            Assert.IsNotNull(jobParameters2);
            Assert.AreEqual(6, jobParameters2.GetParameters().Count);
            IDictionary <string, JobParameter> dico = jobParameters2.GetParameters();

            foreach (KeyValuePair <string, JobParameter> entry in dico)
            {
                string       key   = entry.Key;
                JobParameter value = entry.Value;
                Assert.IsFalse(key.StartsWith("-"));
                if ("dateDebut".Equals(key))
                {
                    Assert.AreEqual(JobParameter.ParameterType.Date, value.Type);
                    Assert.IsTrue(value.Identifying);
                }
                if ("everything".Equals(key))
                {
                    Assert.AreEqual(JobParameter.ParameterType.Long, value.Type);
                    Assert.IsTrue(value.Identifying);
                }
                if ("balance".Equals(key))
                {
                    Assert.AreEqual(JobParameter.ParameterType.Double, value.Type);
                    Assert.IsFalse(value.Identifying);
                }
                if ("name".Equals(key))
                {
                    Assert.AreEqual(JobParameter.ParameterType.String, value.Type);
                    Assert.IsTrue(value.Identifying);
                }
                if ("default".Equals(key))
                {
                    Assert.AreEqual(JobParameter.ParameterType.String, value.Type);
                    Assert.IsFalse(value.Identifying);
                }
                if ("unmarked".Equals(key))
                {
                    Assert.AreEqual(JobParameter.ParameterType.String, value.Type);
                    Assert.IsTrue(value.Identifying);
                }
            }
        }
        private void RaiseItemEditInteractionRequest(JobParameter originalItem)
        {
            var item = originalItem.DeepClone <JobParameter>(EntityFactory as AppConfigEntityFactory);

            if (RaiseItemEditInteractionRequest(item, "Edit parameter".Localize()))
            {
                // copy all values to original:
                OnUIThread(() => originalItem.InjectFrom <CloneInjection>(item));
            }
        }
Example #8
0
    private void loadXML_Job(string filename)
    {
        TextAsset   txtAsset = (TextAsset)Resources.Load("XML/" + filename);
        XmlDocument xmlDoc   = new XmlDocument();

        xmlDoc.LoadXml(txtAsset.text);
        XmlNodeList all_xml_Job_Table = xmlDoc.SelectNodes("Job/Character");

        foreach (XmlNode node in all_xml_Job_Table)
        {
            JobParameter temp = new JobParameter(node.SelectSingleNode("Name").InnerText, System.Convert.ToSingle(node.SelectSingleNode("Hp").InnerText), System.Convert.ToSingle(node.SelectSingleNode("Speed").InnerText));
            l_JobList.Add(temp);
        }
        loadCharacterList();
    }
        private bool RaiseItemEditInteractionRequest(JobParameter item, string title)
        {
            bool result       = false;
            var  confirmation = new ConditionalConfirmation
            {
                Title   = title,
                Content = _vmFactory.GetViewModelInstance(new KeyValuePair <string, object>("item", item))
            };

            CommonConfirmRequest.Raise(confirmation, (x) =>
            {
                result = x.Confirmed;
            });

            return(result);
        }
Example #10
0
        public void TestGetJobInstanceCount1()
        {
            IDictionary <string, JobParameter> params2 = new OrderedDictionary <string, JobParameter>(2);

            params2["param"] = new JobParameter("test");
            var parameters2 = new JobParameters(params2);

            _jobInstanceDao.CreateJobInstance("testJob3", _parameters);
            _jobInstanceDao.CreateJobInstance("testJob4", _parameters);
            _jobInstanceDao.CreateJobInstance("testJob1", _parameters);
            _jobInstanceDao.CreateJobInstance("testJob1", parameters2);
            _jobInstanceDao.CreateJobInstance("testJob2", _parameters);

            Assert.AreEqual(2, _jobInstanceDao.GetJobInstanceCount("testJob1"));
            Assert.AreEqual(1, _jobInstanceDao.GetJobInstanceCount("testJob2"));
        }
Example #11
0
        /// <summary>
        /// Retrieves job parameters for an execution.
        /// </summary>
        /// <param name="executionId">the job execution id</param>
        /// <returns>the job parameters of that execution</returns>
        private JobParameters GetJobParameters(long executionId)
        {
            var parameters = new OrderedDictionary <string, JobParameter>(16);

            RowHandler handler = dataRecord =>
            {
                var          wrapper = new DataRecordWrapper(dataRecord);
                var          type    = (ParameterType)Enum.Parse(typeof(ParameterType), wrapper.Get <string>(2));
                JobParameter parameter;

                switch (type)
                {
                case ParameterType.String:
                    parameter = new JobParameter(wrapper.Get <string>(3), string.Equals(wrapper.Get <string>(7), "Y",
                                                                                        StringComparison.OrdinalIgnoreCase));
                    break;

                case ParameterType.Long:
                    parameter = new JobParameter(wrapper.Get <long>(5), string.Equals(wrapper.Get <string>(7), "Y",
                                                                                      StringComparison.OrdinalIgnoreCase));
                    break;

                case ParameterType.Double:
                    parameter = new JobParameter(wrapper.Get <double>(6), string.Equals(wrapper.Get <string>(7), "Y",
                                                                                        StringComparison.OrdinalIgnoreCase));
                    break;

                case ParameterType.Date:
                    parameter = new JobParameter(wrapper.Get <DateTime>(4), string.Equals(wrapper.Get <string>(7), "Y",
                                                                                          StringComparison.OrdinalIgnoreCase));
                    break;

                default:
                    throw new InvalidOperationException("Unsupported type :[" + type + "]");    //should never happen
                }

                parameters.Add(wrapper.Get <string>(1), parameter);
            };

            DbOperator.Select(InsertTablePrefix(FindParamsFromIdQuery), handler, new Dictionary <string, object> {
                { "id", executionId }
            });

            return(new JobParameters(parameters));
        }
        public void TestSaveJobExecution()
        {
            ResetSequence("BATCH_JOB_EXECUTION_SEQ");
            Insert(@"TestData\DbDao\JobExecutionTestData1.xml");
            var dictionary = new Dictionary <string, JobParameter>();

            dictionary["string"] = new JobParameter("string");
            dictionary["long"]   = new JobParameter(3);
            dictionary["double"] = new JobParameter(4.3);
            dictionary["date"]   = new JobParameter(DateTime.Now);
            _parameters          = new JobParameters(dictionary);
            _execution           = new JobExecution(_instance, _parameters);

            _jobExecutionDao.SaveJobExecution(_execution);

            Assert.AreEqual(1L, _execution.Id);
            Assert.AreEqual(_execution, _jobExecutionDao.GetJobExecution(1L));
        }
Example #13
0
        private void BtnAddParam_MouseUp(object sender, MouseButtonEventArgs e)
        {
            if (editjob == null)
            {
                return;
            }
            var param       = new JobParameter();
            var paramWindow = new ParameterWindow(param, true);

            paramWindow.Owner  = this;
            paramWindow.OnSave = (prm) =>
            {
                editjob.Parameters.Add(prm);
                dgParams.ItemsSource = null;
                dgParams.ItemsSource = editjob.Parameters;
                QuartzJsonContext.Instance.Update(editjob);
                QuartzJsonContext.Instance.Commit();
                QuartzJsonContext.Instance.Reload();
            };
            paramWindow.ShowDialog();
        }
Example #14
0
        public void TestGetJobNames()
        {
            IDictionary <string, JobParameter> params2 = new OrderedDictionary <string, JobParameter>(2);

            params2["param"] = new JobParameter("test");
            var parameters2 = new JobParameters(params2);

            _jobInstanceDao.CreateJobInstance("testJob3", _parameters);
            _jobInstanceDao.CreateJobInstance("testJob4", _parameters);
            _jobInstanceDao.CreateJobInstance("testJob1", _parameters);
            _jobInstanceDao.CreateJobInstance("testJob1", parameters2);
            _jobInstanceDao.CreateJobInstance("testJob2", _parameters);

            var names = _jobInstanceDao.GetJobNames();

            Assert.AreEqual(4, names.Count);
            Assert.AreEqual("testJob1", names[0]);
            Assert.AreEqual("testJob2", names[1]);
            Assert.AreEqual("testJob3", names[2]);
            Assert.AreEqual("testJob4", names[3]);
        }
Example #15
0
        private static void EditImage(JobParameter param, JobType type, SeekAction imageSeekAction)
        {
            ImageProcessParameter processParameter = new ImageProcessParameter(param, type);

            try
            {
                Bitmap image = processParameter.Image.CreateBitmapDeepCopy();

                var imageData =
                    image.LockBits(
                        new Rectangle(0, 0, processParameter.Image.ImgWidth, processParameter.Image.ImgHeight),
                        ImageLockMode.ReadWrite,
                        processParameter.Image.ImgPixelFormat);

                imageSeekAction(imageData, processParameter.PixelAction, param.Worker, processParameter.Image.BytesPerPixel);

                if (param.Worker.CancellationPending)
                {
                    param.Args.Cancel = true;
                    image.UnlockBits(imageData);
                    return;
                }

                param.Worker.ReportProgress(100);

                image.Save(Paths.GetOutputImageFullName(param.JobId, "jakubsChange", processParameter.Description));

                param.Args.Result = processParameter.Result;

                image.UnlockBits(imageData);
            }catch (Exception)
            {
                param.Worker.CancelAsync();
                if (param.Worker.CancellationPending)
                {
                    param.Args.Cancel = true;
                }
            }
        }
        /// <summary>
        /// Use the same suffixes to create properties (omitting the string suffix
        /// because it is the default).  Non-identifying parameters will be prefixed
        /// with the <see cref="NonIdentifyingFlag"/>.  However, since parameters are
        /// identifying by default, they will <em>not</em> be prefixed with the
        /// <see cref="IdentifyingFlag"/>.
        /// </summary>
        /// <param name="parms"></param>
        /// <returns></returns>
        public NameValueCollection GetProperties(JobParameters parms)
        {
            if (parms == null || parms.IsEmpty())
            {
                return(new NameValueCollection());
            }

            IDictionary <string, JobParameter> parameters = parms.GetParameters();
            NameValueCollection result = new NameValueCollection();

            foreach (KeyValuePair <string, JobParameter> entry in parameters)
            {
                string       key          = entry.Key;
                JobParameter jobParameter = entry.Value;
                Object       value        = jobParameter.Value;
                if (value != null)
                {
                    key = (!jobParameter.Identifying ? NonIdentifyingFlag : "") + key;
                    if (jobParameter.Type == JobParameter.ParameterType.Date)
                    {
                        result.Set(key + DateType, string.Format(_dateFormat, value));
                    }
                    else if (jobParameter.Type == JobParameter.ParameterType.Long)
                    {
                        result.Set(key + LongType, string.Format(_numberFormat, value));
                    }
                    else if (jobParameter.Type == JobParameter.ParameterType.Double)
                    {
                        result.Set(key + DoubleType, string.Format(_decimalFormat, (double)value));
                    }
                    else
                    {
                        result.Set(key, "" + value);
                    }
                }
            }

            return(result);
        }
Example #17
0
        public void Sort(JobParameter param)
        {
            try
            {
                sortParameter = (SortParameter)param;

                List <int> results = DoSort();

                if (sortParameter.Worker.CancellationPending)
                {
                    param.Args.Cancel = true;
                    return;
                }

                using (
                    FileStream stream = File.Create(Paths.OutputFolderPath + $"{sortParameter.InputFileName}-sorted.txt")
                    )
                    using (StreamWriter writer = new StreamWriter(stream))
                    {
                        foreach (var result in results)
                        {
                            writer.WriteLine(result);
                        }
                    }

                sortParameter.Worker.ReportProgress(100);

                param.Args.Result = new SortResult(((SortParameter)param).InputFileName);
            }
            catch (Exception)
            {
                param.Worker.CancelAsync();
                if (param.Worker.CancellationPending)
                {
                    param.Args.Cancel = true;
                }
            }
        }
Example #18
0
        public override string GetJobParameter(string id, string name)
        {
            id.ThrowIfNull("id");
            name.ThrowIfNull("name");

            using (var repository = new Repository()) {
                var jobParameter = repository.Session.Query <JobParameter>().FirstOrDefault(t => t.JobId == id && t.Name == name);

                if (jobParameter == null && name == "RetryCount")
                {
                    jobParameter = new JobParameter
                    {
                        JobId = id,
                        Name  = name,
                        Value = "0"
                    };

                    repository.Save(jobParameter);
                }

                return(jobParameter != null ? jobParameter.Value : null);
            }
        }
        public ImageProcessParameter(JobParameter param, JobType type)
        {
            switch (type)
            {
            case JobType.ImageProcessingBrightness:
                Image       = BrightnessParameter.Image;
                PixelAction = AdjustBrightness;
                Value       = ((BrightnessParameter)param).BrightnessChange;
                Result      = new BrightnessResult(Value);
                Description = "Brightness changed";
                break;

            case JobType.ImageProcessingContrast:
                Image       = ContrastParameter.Image;
                PixelAction = AdjustContrast;
                Value       = ((ContrastParameter)param).ContrastChange;
                Result      = new ContrastResult(Value);
                Description = "Contrast changed";
                break;

            default:
                throw new ArgumentException("invalid image process type");
            }
        }
Example #20
0
        public async Task <JobParameter> UpdateJobParameter(int jobId, int jobParameterId, JobParameter jobParameter)
        {
            try
            {
                var content  = new StringContent(JsonConvert.SerializeObject(jobParameter), Encoding.UTF8, "application/json");
                var response = await _client.PutAsync($"jobs/{jobId}/parameter/{jobParameterId}", content);

                if (!response.IsSuccessStatusCode)
                {
                    throw new BrobotServiceException($"Failed to update job parameter {jobParameterId} with a status code of {response.StatusCode}");
                }

                var updatedJobParameterString = await response.Content.ReadAsStringAsync();

                return(JsonConvert.DeserializeObject <JobParameter>(updatedJobParameterString));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"Failed to update job parameter {jobParameterId}");
                throw new BrobotServiceException($"Failed to update job parameter {jobParameterId}", ex);
            }
        }
Example #21
0
    public static string SendJobMessage(string rdoTypeStr,
                                        string StoreChainStr,
                                        string XMLBatchData,
                                        string XMLDetailData,
                                        string UID,
                                        string TimeStampStr
                                        )
    {
       
        DataSet DetailDs = new DataSet();

        if (XMLDetailData != "")
        {
            #region 使用XML轉回DataSet

            System.IO.StringReader sr = new System.IO.StringReader(XMLDetailData);
            DetailDs.ReadXml(sr);

            #endregion
        }

        #region 檢查明細資料是否有調整

        int intAdjQty;
        string GetIsAdjust = "0";

        DataTable Dt_Detail;



        if (DetailDs.Tables.Count > 0)
        {
            Dt_Detail = DetailDs.Tables[0];

            if (Dt_Detail.Rows.Count > 0)
            {
                GetIsAdjust = "1";
            }
        }
        else
        {
            Dt_Detail = new DataTable();
            Dt_Detail.Columns.Add("LOCATE_NO");
            Dt_Detail.Columns.Add("LOCATE_SECTION");
            Dt_Detail.Columns.Add("ITEM");
            Dt_Detail.Columns.Add("PERIOD");
            Dt_Detail.Columns.Add("ADJUST_QTY");
            Dt_Detail.Columns.Add("COST");
        }

        #endregion

        DataSet BacthDs = new DataSet();

        if (XMLBatchData != "")
        {
            #region 使用XML轉回DataSet

            System.IO.StringReader sr = new System.IO.StringReader(XMLBatchData);
            BacthDs.ReadXml(sr);

            #endregion
        }

        #region 將BatchNo用","連接

        string strBatchNo = string.Empty;

        DataTable Dt_SelectBacth = BacthDs.Tables[0];

        for (int i = 0; i < Dt_SelectBacth.Rows.Count; i++)
        {
            strBatchNo += Dt_SelectBacth.Rows[i]["BATCH_NO"].ToString() + ",";
        }
        int BatchNoLength = strBatchNo.Length - 1;

        strBatchNo = strBatchNo.Substring(0, BatchNoLength);

        #endregion

        #region JobService輸入條件

        JobParameter[] DBParameter = new JobParameter[7];

        DBParameter[0].ParameterName = "是否可調整(0:不可調;1:可調整)";
        DBParameter[0].ParameterValue = GetIsAdjust;
        DBParameter[1].ParameterName = "型態";
        DBParameter[1].ParameterValue = rdoTypeStr;
        DBParameter[2].ParameterName = "批次列表,逗號分隔";
        DBParameter[2].ParameterValue = strBatchNo;
        DBParameter[3].ParameterName = "通路";
        DBParameter[3].ParameterValue = StoreChainStr;
        DBParameter[4].ParameterName = "使用者";
        DBParameter[4].ParameterValue = UID;
        DBParameter[5].ParameterName = "使用者+PageTimeStamp";
        DBParameter[5].ParameterValue = UID + TimeStampStr;
        DBParameter[6].ParameterName = "調整清單";
        DBParameter[6].ParameterValue = XMLDetailData;


        string JobCode = "CGR02_1";
        string ProcessLogFile = "";
        //this.GenerReportConfigXML
        CGR_CGR021 CGRJOBPage = new CGR_CGR021();

        CGRJOBPage.GenerJobConfigXML("CGR",
                                     "CGR021.aspx",
                                     JobCode,
                                     DBParameter,
                                     JobOutputFormat.XML,
                                     ref ProcessLogFile
                                     );

        CGRJOBPage.Dispose();

        return ProcessLogFile;

        #endregion
    }
        public JobManagerTests()
        {
            //arrange
            var options = new DbContextOptionsBuilder <StorageContext>()
                          .UseInMemoryDatabase(databaseName: "JobManager")
                          .Options;
            StorageContext context = new StorageContext(options);

            newJobAgentId       = Guid.NewGuid();
            completedJobAgentId = Guid.NewGuid();
            newJobId            = Guid.NewGuid();

            //job with status of new
            Job newDummyJob = new Job
            {
                Id        = Guid.NewGuid(),
                JobStatus = JobStatusType.New,
                AgentId   = newJobAgentId,
                CreatedOn = DateTime.UtcNow
            };

            //job with status of completed
            Job completedDummyJob = new Job
            {
                Id        = Guid.NewGuid(),
                JobStatus = JobStatusType.Completed,
                AgentId   = completedJobAgentId,
                CreatedOn = DateTime.UtcNow
            };

            //job Parameter to be removed
            jobParameter = new JobParameter
            {
                Id       = Guid.NewGuid(),
                DataType = "text",
                Value    = "Sample Value",
                JobId    = newJobId
            };

            Job[] jobsToAdd = new[]
            {
                newDummyJob,
                completedDummyJob
            };

            //populate in memory database
            Seed(context, jobsToAdd, jobParameter);

            //create loggers
            var jobLogger           = Mock.Of <ILogger <Job> >();
            var agentLogger         = Mock.Of <ILogger <Agent> >();
            var processLogger       = Mock.Of <ILogger <Automation> >();
            var jobParameterLogger  = Mock.Of <ILogger <JobParameter> >();
            var jobCheckpointLogger = Mock.Of <ILogger <JobCheckpoint> >();

            //context accessor
            var httpContextAccessor = new Mock <IHttpContextAccessor>();

            httpContextAccessor.Setup(req => req.HttpContext.User.Identity.Name).Returns(It.IsAny <string>());

            //instance of necessary repositories
            var jobRepository     = new JobRepository(context, jobLogger, httpContextAccessor.Object);
            var agentRepo         = new AgentRepository(context, agentLogger, httpContextAccessor.Object);
            var automationRepo    = new AutomationRepository(context, processLogger, httpContextAccessor.Object);
            var jobParameterRepo  = new JobParameterRepository(context, jobParameterLogger, httpContextAccessor.Object);
            var jobCheckpointRepo = new JobCheckpointRepository(context, jobCheckpointLogger, httpContextAccessor.Object);

            //manager to be tested
            manager = new JobManager(jobRepository, agentRepo, automationRepo, jobParameterRepo, jobCheckpointRepo);
        }
 //used to seed the in-memory database
 private void Seed(StorageContext context, Job[] jobs, JobParameter jobParameter)
 {
     context.Jobs.AddRange(jobs);
     context.JobParameters.AddRange(jobParameter);
     context.SaveChanges();
 }
        /// <summary>
        /// Retrieves job parameters for an execution.
        /// </summary>
        /// <param name="executionId">the job execution id</param>
        /// <returns>the job parameters of that execution</returns>
        private JobParameters GetJobParameters(long executionId)
        {
            var parameters = new OrderedDictionary<string, JobParameter>(16);

            RowHandler handler = dataRecord =>
            {
                var wrapper = new DataRecordWrapper(dataRecord);
                var type = (ParameterType)Enum.Parse(typeof(ParameterType), wrapper.Get<string>(2));
                JobParameter parameter;

                switch (type)
                {
                    case ParameterType.String:
                        parameter = new JobParameter(wrapper.Get<string>(3), string.Equals(wrapper.Get<string>(7), "Y",
                            StringComparison.OrdinalIgnoreCase));
                        break;
                    case ParameterType.Long:
                        parameter = new JobParameter(wrapper.Get<long>(5), string.Equals(wrapper.Get<string>(7), "Y",
                            StringComparison.OrdinalIgnoreCase));
                        break;
                    case ParameterType.Double:
                        parameter = new JobParameter(wrapper.Get<double>(6), string.Equals(wrapper.Get<string>(7), "Y",
                            StringComparison.OrdinalIgnoreCase));
                        break;
                    case ParameterType.Date:
                        parameter = new JobParameter(wrapper.Get<DateTime>(4), string.Equals(wrapper.Get<string>(7), "Y",
                            StringComparison.OrdinalIgnoreCase));
                        break;
                    default:
                        throw new InvalidOperationException("Unsupported type :[" + type + "]");//should never happen
                }

                parameters.Add(wrapper.Get<string>(1), parameter);
            };

            DbOperator.Select(InsertTablePrefix(FindParamsFromIdQuery), handler, new Dictionary<string, object> { { "id", executionId } });

            return new JobParameters(parameters);
        }
 private void RaiseItemRemoveInteractionRequest(JobParameter originalItem)
 {
     InnerItem.JobParameters.Remove(originalItem);
 }
Example #26
0
        /// <summary>
        /// Loads job instance input parameters.
        /// </summary>
        public void LoadParameters()
        {
            parameters.Clear();

            string sql = "spFindJobInstanceParameter";

            using (SqlCommand cmd = Context.CreateStoredProcedureCommand(sql))
            {
                cmd.Parameters.Add("@UserGuid", SqlDbType.UniqueIdentifier).Value = Context.UserGuid;
                cmd.Parameters.Add("@JobInstanceGuid", SqlDbType.UniqueIdentifier).Value = Guid;

                using (SqlDataReader dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        var par = new JobParameter()
                        {
                            Name = dr.GetString(1),
                            TypeName = dr.GetString(2),
                            Direction = (JobParameterDirection)dr.GetByte(3),
                            XmlValue = dr.IsDBNull(4) ? null : dr.GetString(4)
                        };

                        parameters.Add(par.Name, par);
                    }
                }
            }
        }
 public AddParameterViewModel(JobParameter item)
 {
     _selectedParameterValue = item;
 }
Example #28
0
        public string CreateJob(string scheduleSerializeObject, IEnumerable<ParametersViewModel>? parameters)
        {
            var schedule = JsonSerializer.Deserialize<Schedule>(scheduleSerializeObject);
            //if schedule has expired
            if (DateTime.UtcNow > schedule.ExpiryDate)
            {
                _recurringJobManager.RemoveIfExists(schedule.Id.Value.ToString());//removes an existing recurring job
                return "ScheduleExpired";
            }

            if (_organizationSettingManager.HasDisallowedExecution())
            {
                return "DisallowedExecution";
            }

            //if this is not a "RunNow" job, then use the schedule parameters
            if (schedule.StartingType.Equals("RunNow") == false)
            {
                if (schedule.MaxRunningJobs != null)
                {
                    if (ActiveJobLimitReached(schedule.Id, schedule.MaxRunningJobs))
                    {
                        return "ActiveJobLimitReached";
                    }
                }

                List<ParametersViewModel> parametersList = new List<ParametersViewModel>();

                var scheduleParameters = _scheduleParameterRepository.Find(null, p => p.ScheduleId == schedule.Id).Items;
                foreach (var scheduleParameter in scheduleParameters)
                {
                    ParametersViewModel parametersViewModel = new ParametersViewModel
                    {
                        Name = scheduleParameter.Name,
                        DataType = scheduleParameter.DataType,
                        Value = scheduleParameter.Value,
                        CreatedBy = scheduleParameter.CreatedBy,
                        CreatedOn = DateTime.UtcNow
                    };
                    parametersList.Add(parametersViewModel);
                }
                parameters = parametersList.AsEnumerable();
            }

            var automationVersion = _automationVersionRepository.Find(null, a => a.AutomationId == schedule.AutomationId).Items?.FirstOrDefault();

            Job job = new Job();
            job.AgentId = schedule.AgentId == null ? Guid.Empty : schedule.AgentId.Value;
            job.AgentGroupId = schedule.AgentGroupId == null ? Guid.Empty : schedule.AgentGroupId.Value;
            job.CreatedBy = schedule.CreatedBy;
            job.CreatedOn = DateTime.UtcNow;
            job.EnqueueTime = DateTime.UtcNow;
            job.JobStatus = JobStatusType.New;
            job.AutomationId = schedule.AutomationId == null ? Guid.Empty : schedule.AutomationId.Value;
            job.AutomationVersion = automationVersion != null ? automationVersion.VersionNumber : 0;
            job.AutomationVersionId = automationVersion != null ? automationVersion.Id : Guid.Empty;
            job.Message = "Job is created through internal system logic.";
            job.ScheduleId = schedule.Id;

            foreach (var parameter in parameters ?? Enumerable.Empty<ParametersViewModel>())
            {
                JobParameter jobParameter = new JobParameter
                {
                    Name = parameter.Name,
                    DataType = parameter.DataType,
                    Value = parameter.Value,
                    JobId = job.Id ?? Guid.Empty,
                    CreatedBy = schedule.CreatedBy,
                    CreatedOn = DateTime.UtcNow,
                    Id = Guid.NewGuid()
                };
                _jobParameterRepository.Add(jobParameter);
            }
            _jobRepository.Add(job);

            if (job.AgentGroupId == null || job.AgentGroupId == Guid.Empty)
            {
                _hub.Clients.All.SendAsync("botnewjobnotification", job.AgentId.ToString());
            }
            else //notify all group members
            {
                var agentsInGroup = _agentGroupManager.GetAllMembersInGroup(job.AgentGroupId.ToString());
                foreach (var groupMember in agentsInGroup ?? Enumerable.Empty<AgentGroupMember>())
                {
                    _hub.Clients.All.SendAsync("botnewjobnotification", groupMember.AgentId.ToString());
                }
            }

            _webhookPublisher.PublishAsync("Jobs.NewJobCreated", job.Id.ToString()).ConfigureAwait(false);

            return "Success";
        }
        /// <summary>
        /// Extracts the dependency properties of the workflow type that are flagged with
        /// the <see cref="WorkflowParameterAttribute"/> attribute.
        /// </summary>
        /// <returns></returns>
        public Dictionary<string, JobParameter> GetParameters()
        {
            var excluded = new HashSet<string>() { "JobGuid", "UserGuid" };

            var t = Type.GetType(workflowTypeName);

            var res = new Dictionary<string, JobParameter>();

            foreach (PropertyInfo pinfo in t.GetProperties())
            {
                if (pinfo.PropertyType.IsGenericType)
                {
                    Type gt = pinfo.PropertyType.GetGenericTypeDefinition();

                    if (!excluded.Contains(pinfo.Name))
                    {
                        JobParameterDirection dir;

                        if (gt == typeof(System.Activities.InArgument<>))
                        {
                            dir = JobParameterDirection.In;
                        }
                        else if (gt == typeof(System.Activities.InOutArgument<>))
                        {
                            dir = JobParameterDirection.InOut;
                        }
                        else if (gt == typeof(System.Activities.OutArgument<>))
                        {
                            dir = JobParameterDirection.Out;
                        }
                        else
                        {
                            continue;
                        }

                        var par = new JobParameter()
                        {
                            Name = pinfo.Name,
                            TypeName = pinfo.PropertyType.GetGenericArguments()[0].AssemblyQualifiedName,
                            Direction = dir,
                            XmlValue = null
                        };

                        res.Add(pinfo.Name, par);
                    }
                }
            }

            return res;
        }
Example #30
0
    public static string SendJobMessage(string ChainNoStart,
                                        string ChainNoEnd,
                                        string CalcDateStart,
                                        string CalcDateEnd,
                                        string RankCode,
                                        string UID,
                                        string TopRownum,
                                        string StoreStart,
                                        string StoreEnd,
                                        string RootNo,
                                        string PMAStart,
                                        string PMAEnd,
                                        string PatternStart,
                                        string PatternEnd

                                        )
    {
        #region
        JobParameter[] DBParameter = new JobParameter[15];

        DBParameter[0].ParameterName = "通路起";
        DBParameter[0].ParameterValue = ChainNoStart;
        DBParameter[1].ParameterName = "通路迄";
        DBParameter[1].ParameterValue = ChainNoEnd;
        DBParameter[2].ParameterName = "計算日起";
        DBParameter[2].ParameterValue = CalcDateStart;
        DBParameter[3].ParameterName = "計算日迄";
        DBParameter[3].ParameterValue = CalcDateEnd;
        DBParameter[4].ParameterName = "Rank類別";
        DBParameter[4].ParameterValue = RankCode;
        DBParameter[5].ParameterName = "使用者";
        DBParameter[5].ParameterValue = UID;
        DBParameter[6].ParameterName = "處理開始時間";
        DBParameter[6].ParameterValue = DateTime.Today.ToString("yyyyMMddHHmmss");
        DBParameter[7].ParameterName = "TopRow的筆數";
        DBParameter[7].ParameterValue = TopRownum;
        DBParameter[8].ParameterName = "門市起";
        DBParameter[8].ParameterValue = StoreStart;
        DBParameter[9].ParameterName = "門市迄";
        DBParameter[9].ParameterValue = StoreEnd;
        DBParameter[10].ParameterName = "群分類";
        DBParameter[10].ParameterValue = RootNo;
        DBParameter[11].ParameterName = "大分類起";
        DBParameter[11].ParameterValue = PMAStart;
        DBParameter[12].ParameterName = "大分類迄";
        DBParameter[12].ParameterValue = PMAEnd;
        DBParameter[13].ParameterName = "Pattern起";
        DBParameter[13].ParameterValue = PatternStart;
        DBParameter[14].ParameterName = "Pattern迄";
        DBParameter[14].ParameterValue = PatternEnd;


        string JobCode = "ALO03_1";
        string ProcessLogFile = "";
        //this.GenerReportConfigXML
        ALO_ALO031 ALOJOBPage = new ALO_ALO031();

        ALOJOBPage.GenerJobConfigXML("ALO",
                                     "ALO031.aspx",
                                     JobCode,

                                     DBParameter,
                                     JobOutputFormat.None,


                                     ref ProcessLogFile
                                     );

        ALOJOBPage.Dispose();



        return ProcessLogFile;
        #endregion
    }
Example #31
0
 public void AddToJobParameters(JobParameter jobParameter)
 {
     base.AddObject("JobParameters", jobParameter);
 }
Example #32
0
    public static string SendJobMessage(string TransDate,
                                        string STAcceptDate,
                                        string RootNo,
                                        string UID,
                                        string PageTimeStampAndUID
                                        )
    {
        JobParameter[] DBParameter = new JobParameter[5];

        DBParameter[0].ParameterName = "訂單擷轉日";
        DBParameter[0].ParameterValue = TransDate;
        DBParameter[1].ParameterName = "進貨日";
        DBParameter[1].ParameterValue = STAcceptDate;
        DBParameter[2].ParameterName = "群分類";
        DBParameter[2].ParameterValue = RootNo;
        DBParameter[3].ParameterName = "使用者";
        DBParameter[3].ParameterValue = UID;
        DBParameter[4].ParameterName = "PageTimeStamp_使用者";
        DBParameter[4].ParameterValue = PageTimeStampAndUID;

        string JobCode = "CRM07_1";
        string ProcessLogFile = "";
        //this.GenerReportConfigXML
        CRM_CRM071 CRMJOBPage = new CRM_CRM071();

        CRMJOBPage.GenerJobConfigXML("CRM",
                                     "CRM071.aspx",
                                     JobCode,
                                     DBParameter,
                                     JobOutputFormat.XML,
                                     ref ProcessLogFile
                                     );

        CRMJOBPage.Dispose();

        return ProcessLogFile;
    }
Example #33
0
 public static void EditBrightness(JobParameter param) => EditImage(param, JobType.ImageProcessingBrightness, SeekUtils.TaskImageSeek);
Example #34
0
        public string CreateJob(string scheduleSerializeObject, IEnumerable <ParametersViewModel>?parameters)
        {
            var schedule = JsonSerializer.Deserialize <Schedule>(scheduleSerializeObject);

            if (organizationSettingManager.HasDisallowedExecution())
            {
                return("DisallowedExecution");
            }

            var automationVersion = automationVersionRepository.Find(null, a => a.AutomationId == schedule.AutomationId).Items?.FirstOrDefault();

            //if this is a scheduled job get the schedule parameters
            if (schedule.StartingType.Equals("RunNow") == false)
            {
                List <ParametersViewModel> parametersList = new List <ParametersViewModel>();

                var scheduleParameters = scheduleParameterRepository.Find(null, p => p.ScheduleId == schedule.Id).Items;
                foreach (var scheduleParameter in scheduleParameters)
                {
                    ParametersViewModel parametersViewModel = new ParametersViewModel
                    {
                        Name      = scheduleParameter.Name,
                        DataType  = scheduleParameter.DataType,
                        Value     = scheduleParameter.Value,
                        CreatedBy = scheduleParameter.CreatedBy,
                        CreatedOn = DateTime.UtcNow
                    };
                    parametersList.Add(parametersViewModel);
                }
                parameters = parametersList.AsEnumerable();
            }

            Job job = new Job();

            job.AgentId             = schedule.AgentId == null ? Guid.Empty : schedule.AgentId.Value;
            job.CreatedBy           = schedule.CreatedBy;
            job.CreatedOn           = DateTime.UtcNow;
            job.EnqueueTime         = DateTime.UtcNow;
            job.JobStatus           = JobStatusType.New;
            job.AutomationId        = schedule.AutomationId == null ? Guid.Empty : schedule.AutomationId.Value;
            job.AutomationVersion   = automationVersion != null ? automationVersion.VersionNumber : 0;
            job.AutomationVersionId = automationVersion != null ? automationVersion.Id : Guid.Empty;
            job.Message             = "Job is created through internal system logic.";

            foreach (var parameter in parameters ?? Enumerable.Empty <ParametersViewModel>())
            {
                JobParameter jobParameter = new JobParameter
                {
                    Name      = parameter.Name,
                    DataType  = parameter.DataType,
                    Value     = parameter.Value,
                    JobId     = job.Id ?? Guid.Empty,
                    CreatedBy = schedule.CreatedBy,
                    CreatedOn = DateTime.UtcNow,
                    Id        = Guid.NewGuid()
                };
                jobParameterRepository.Add(jobParameter);
            }

            jobRepository.Add(job);
            _hub.Clients.All.SendAsync("botnewjobnotification", job.AgentId.ToString());
            webhookPublisher.PublishAsync("Jobs.NewJobCreated", job.Id.ToString()).ConfigureAwait(false);

            return("Success");
        }
Example #35
0
 /// <summary>
 /// Creates a new job
 /// </summary>
 /// <param name="job">The job.</param>
 public JobPostRequest(JobParameter job)
     : base("Api/Job/", job)
 {
 }
Example #36
0
 public static JobParameter CreateJobParameter(global::System.Guid jobContextID, string name, string type)
 {
     JobParameter jobParameter = new JobParameter();
     jobParameter.JobContextID = jobContextID;
     jobParameter.Name = name;
     jobParameter.Type = type;
     return jobParameter;
 }
Example #37
0
        void jobThreadStarter(object obj)
        {
            JobParameter a = (JobParameter)obj;

            a.fillExcel.Fill(a.xlsxName, a.pdfName, a.docTitle, a.forthLine, a.pictures, a.titles, a.markAsRed, a.endText, a.markEndTextRed, a.itemNo, a.inspectionTime);
        }
Example #38
0
        /// <summary>
        /// 產生大型Job需要的XML檔案
        /// </summary>
        /// <param name="ModuleName">模組名稱</param>
        /// <param name="CodeName">目前檔案aspx名稱</param>
        /// <param name="JobCode">報表代號(請參照ReportEngine\ReportList.XML)需要增加代號請通知系統人員調整Windows服務程式</param>
        /// <param name="JobParameters">DB所需要的變數</param>
        /// <param name="JOF">Job格式(XML,None)</param>
        /// <param name="MoniterLogFileName">WEB需要監控處理進度的檔名</param>
        public void GenerJobConfigXML(string ModuleName,
                                      string CodeName,
                                      string JobCode,
                                      JobParameter[] JobParameters,
                                      JobOutputFormat JOF,
                                      ref string MoniterLogFileName
                                      )
        {
            if (IsLogin())
            {
                //開始處理時間
                DateTime StartTime = DateTime.Now;

                string ProcessFileName = string.Format("{0}{1}{2}{3}{4}{5}{6}_T{7}_{8}.XML",
                                                       DateTime.Now.Year.ToString(),
                                                       DateTime.Now.Month.ToString().PadLeft(2, '0'),
                                                       DateTime.Now.Day.ToString().PadLeft(2, '0'),
                                                       DateTime.Now.Hour.ToString().PadLeft(2, '0'),
                                                       DateTime.Now.Minute.ToString().PadLeft(2, '0'),
                                                       DateTime.Now.Second.ToString().PadLeft(2, '0'),
                                                       DateTime.Now.Millisecond.ToString(),
                                                       Thread.CurrentThread.ManagedThreadId.ToString(),
                                                       Session["UID"].ToString()
                                                       );


                XmlTextWriter XTW = new XmlTextWriter(string.Format("{0}\\ProcessJobQueue\\{1}",
                                                                    JobWebPath,
                                                                    ProcessFileName
                                                                   ),
                                                      Encoding.UTF8
                                                      );

                XTW.Formatting = Formatting.Indented;

                XTW.WriteStartElement("Job");
                XTW.WriteElementString("User", Session["UID"].ToString());
                XTW.WriteElementString("StartTime", StartTime.ToString());
                XTW.WriteElementString("Module", ModuleName);
                XTW.WriteElementString("CodeName", CodeName);
                XTW.WriteElementString("JobCode", JobCode);                
                XTW.WriteStartElement("InputParameters");

                for (int i = 0; i < JobParameters.Length; i++)
                {
                    XTW.WriteStartElement("Parameter");
                    XTW.WriteAttributeString("key", JobParameters[i].ParameterName);
                    XTW.WriteString(JobParameters[i].ParameterValue);
                    XTW.WriteEndElement();
                }

                XTW.WriteEndElement();
                switch (JOF)
                {
                    case JobOutputFormat.XML:
                        XTW.WriteElementString("JobOutputFormat", "XML");
                        break;
                    case JobOutputFormat.None:
                        XTW.WriteElementString("JobOutputFormat", "None");
                        break;
                    default:
                        break;
                }
                
                XTW.WriteElementString("ProcessState", "Start");
                XTW.WriteElementString("EndTime", "");

                MoniterLogFileName = string.Format("{0}{1}{2}{3}{4}{5}_{6}_{7}.log",
                                   StartTime.Year.ToString(),
                                   StartTime.Month.ToString().PadLeft(2, '0'),
                                   StartTime.Day.ToString().PadLeft(2, '0'),
                                   StartTime.Hour.ToString().PadLeft(2, '0'),
                                   StartTime.Minute.ToString().PadLeft(2, '0'),
                                   StartTime.Second.ToString().PadLeft(2, '0'),
                                   JobCode,
                                   Session["UID"].ToString()
                                   );

                XTW.WriteElementString("WebMonitorFile", MoniterLogFileName);
                XTW.WriteElementString("ResultFile", "");
                XTW.WriteEndElement();

                XTW.Close();


            }


        }
Example #39
0
        private void c_FillExcel_Click(object sender, EventArgs e)
        {
            // pre-fill check
            if (c_imageListItems is null || c_imageListItems.Count() == 0)
            {
                MessageBox.Show("没有选中图片");
                return;
            }
            if (string.IsNullOrWhiteSpace(c_DocTitle.Text))
            {
                MessageBox.Show("请输入标题");
                c_DocTitle.Focus();
                return;
            }

            string inspectionTime = Tools.Tools.DateToStringEn(c_InspectionTime.Value);

            defaultPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            defaultName = c_DocTitle.Text;
            excelName   = defaultPath + "\\" + defaultName + ".xlsx";
            pdfName     = defaultPath + "\\" + defaultName + ".pdf";

            if (!c_UseDefaultFileName.Checked)
            {
                // user input filename
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                DialogResult   r = saveFileDialog.ShowDialog();
                if (r != DialogResult.OK)
                {
                    return;
                }

                excelName = saveFileDialog.FileName + ".xlsx";
                pdfName   = saveFileDialog.FileName + ".pdf";
            }

            string[] pics   = new string[c_imageListItems.Count()];
            string[] titles = new string[c_imageListItems.Count()];
            for (int i = 0; i < c_imageListItems.Count(); i++)
            {
                pics[i]   = c_imageListItems[i].ImageLocation;
                titles[i] = c_imageListItems[i].Title;
            }

            // check if file name is used
            if (File.Exists(excelName) || File.Exists(pdfName))
            {
                DialogResult r = MessageBox.Show("同名文件已存在,是否覆盖?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (r == DialogResult.No)
                {
                    return;
                }
            }

            this.Text = FormText + " 处理中...";
            progressForm.Show();

            // start creating excel file
            FillExcel fillExcel = new FillExcel();

            fillExcel.ProgressUpdated += UpdateProgress;
            fillExcel.Exit            += JobExit;

            fillExcel.LoadConfig(configFilePath);
            bool[] markAsRed = new bool[pics.Count()];
            for (int i = 0; i < pics.Count(); i++)
            {
                markAsRed[i] = c_imageListItems[i].MarkAsRed;
            }

            JobParameter jobParameter = new JobParameter();

            jobParameter.fillExcel      = fillExcel;
            jobParameter.xlsxName       = excelName;
            jobParameter.pdfName        = pdfName;
            jobParameter.docTitle       = c_DocTitle.Text;
            jobParameter.forthLine      = c_ForthLine.Text;
            jobParameter.pictures       = pics;
            jobParameter.titles         = titles;
            jobParameter.markAsRed      = markAsRed;
            jobParameter.endText        = c_EndText.Text;
            jobParameter.markEndTextRed = c_MarkEndTextRed.Checked;
            jobParameter.itemNo         = c_ItemNo.Text;
            jobParameter.inspectionTime = inspectionTime;

            Thread jobThread = new Thread(new ParameterizedThreadStart(jobThreadStarter));

            jobThread.Start(jobParameter);

            this.Text = FormText;
        }