//导出 protected void btn_Export_Click(object sender, EventArgs e) { var req = Request; if (req.IsAuthenticated) { //var entityIDs = hd_entityID.Value.Split(',').Where(p => p.IsNotEmpty()).ToList(); var entityIDs = ProcessDescInfoDeluxeGrid.SelectedKeys; if (!entityIDs.Any()) { return; } ETLEntityCollection collection = new ETLEntityCollection(); try { entityIDs.ForEach(id => collection.Add(DESchemaObjectAdapter.Instance.Load(id, DateTime.Now.SimulateTime()) as ETLEntity)); //验证导出数据的完整性 string validResult = CheckEntityChildren.CheckSelectEntities(collection.Select(p => p.ID).ToArray()); validResult.IsNotEmpty().TrueThrow(validResult); string fileName = "ETLEntity" + "_" + DateTime.Now.SimulateTime().ToString("yyyyMMdd_HHmmss") + ".xml"; Response.AddHeader("Content-Disposition", "attachment; filename=\"" + ResponseExtensions.EncodeFileNameInContentDisposition(Response, fileName) + "\""); var aaa = collection.ToXElement(); Response.Write(aaa.ToString()); Response.Flush(); Response.End(); } catch (Exception ex) { var exception = ex.GetRealException(); throw new HttpException("导出实体出错!\r\n" + exception.Message, ex.InnerException); } } else { throw new HttpException("请求的方式错误"); } }
/// <summary> /// 根据ID获取实体 /// </summary> /// <param name="ids"></param> /// <returns></returns> protected ETLEntityCollection GetETLEntities(string ids) { ETLEntityCollection etls = new ETLEntityCollection(); if (!string.IsNullOrEmpty(ids)) { string[] propertities = ids.TrimEnd(',').Split(','); for (int i = 0; i < propertities.Length; i++) { string id = propertities[i]; if (!string.IsNullOrEmpty(id)) { //根据ID获取ETL实体 ETLEntity entity = DESchemaObjectAdapter.Instance.Load(id) as ETLEntity; if (entity != null) { etls.Add(entity); } } } } return(etls); }
//保存 protected void btn_Save_Click(object sender, EventArgs e) { //错误信息 StringBuilder error = new StringBuilder(); if (this.Data == null && Request["id"] != null) { //根据ID获取任务对象 //this.Data = (ETLJob)ETLJobAdapter.Instance.Load(Convert.ToString(Request["id"])); this.Data = JobBaseAdapter.Instance.Load(c => c.AppendItem("job_id", Convert.ToString(Request["id"]))).FirstOrDefault(); } if (!Util.CheckOperationSafe()) { return; } //ETL任务 if (ddl_JobType.SelectedValue == "ETLService") { #region JobScheduleCollection pvc = new JobScheduleCollection(); //计划列表 if (ch_IsAuto.Checked) { //pvc = JSONSerializerExecute.Deserialize<JobScheduleCollection>(schedules.Value); pvc = GetSchedules(schedules.Value); } ETLEntityCollection etls = GetETLEntities(etlEntities.Value); ETLWhereConditionCollection wheres = JSONSerializerExecute.Deserialize <ETLWhereConditionCollection>(conditions.Value); if (this.Data != null) { ETLJob job = ETLJobAdapter.Instance.Load(this.Data.JobID) as ETLJob; this.Data = job; job.Category = txt_jobCategory.Text; job.Enabled = ddl_Enabled.SelectedValue == "1" ? true : false; job.JobType = JobType.ETLService; job.Description = txt_JobDescription.Text; job.Name = txt_JobName.Text; job.Schedules = pvc; job.ETLEntities = etls; job.IsAuto = ch_IsAuto.Checked; job.IsIncrement = ch_IsIncrement.Checked; wheres.ForEach(w => { w.JOB_ID = this.Data.JobID; w.ID = Guid.NewGuid().ToString(); }); job.ETLWhereConditions = wheres; if (CheckEtlEntities()) { ETLJobOperations.Instance.DoOperation(EntityJobOperationMode.Update, job); } } else { ETLJob job = new ETLJob() { JobID = Guid.NewGuid().ToString(), Category = txt_jobCategory.Text, Enabled = ddl_Enabled.SelectedValue == "1" ? true : false, JobType = JobType.ETLService, Description = txt_JobDescription.Text, Name = txt_JobName.Text, Schedules = pvc, ETLEntities = etls, IsAuto = ch_IsAuto.Checked, IsIncrement = ch_IsIncrement.Checked }; wheres.ForEach(w => { w.JOB_ID = job.JobID; w.ID = Guid.NewGuid().ToString(); }); job.ETLWhereConditions = wheres; this.Data = job; if (CheckEtlEntities()) { ETLJobOperations.Instance.DoOperation(EntityJobOperationMode.Add, job); } } if (string.IsNullOrEmpty(ErrorMsg)) { HttpContext.Current.Response.Write("<script>window.returnValue=true;window.close();</script>"); //this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "closeWindow", "window.returnValue=true;window.close()", true); } else { //ViewState["conditions"] = conditions.Value; ViewState["schedules"] = schedules.Value; conditions.Value = JSONSerializerExecute.Serialize((this.Data as ETLJob).ETLWhereConditions); ViewState["etlEntities"] = etlEntities.Value; //计划列表 List <ScheduleGridObj> scheduleList = new List <ScheduleGridObj>(); foreach (JobSchedule item in this.Data.Schedules) { scheduleList.Add(new ScheduleGridObj() { ID = item.ID, Name = item.Name, Description = item.Description }); } ViewState["schedulesGrid"] = JSONSerializerExecute.Serialize(scheduleList);; grid.InitialData = scheduleList; //etl实体列表 List <EtlGridObj> etlJobs = new List <EtlGridObj>(); foreach (ETLEntity item in (this.Data as ETLJob).ETLEntities) { etlJobs.Add(new EtlGridObj() { ID = item.ID, CodeName = item.Name, Description = item.Description }); } ViewState["etlsGrid"] = JSONSerializerExecute.Serialize(etlJobs); gridEtl.InitialData = etlJobs; string msg = ErrorMsg.Replace("\r\n", string.Empty); string scriptStr = string.Format("alert('{0}');", msg); this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "closeWindow", scriptStr, true); //HttpContext.Current.Response.Write(scriptStr); } #endregion } //WebService任务 else { #region JobScheduleCollection pvc = new JobScheduleCollection(); //计划列表 if (ch_IsAuto.Checked) { //pvc = JSONSerializerExecute.Deserialize<JobScheduleCollection>(schedules.Value); pvc = GetSchedules(schedules.Value); } if (this.Data != null) { InvokeWebServiceJob job = InvokeWebServiceJobAdapter.Instance.Load(w => w.AppendItem("Job_id", this.Data.JobID)).FirstOrDefault();// this.Data as InvokeWebServiceJob; job.Category = txt_jobCategory.Text; job.Enabled = ddl_Enabled.SelectedValue == "1" ? true : false; job.JobType = JobType.InvokeService; job.Description = txt_JobDescription.Text; job.Name = txt_JobName.Text; job.Schedules = pvc; job.ISManual = !ch_IsAuto.Checked; job.SvcOperationDefs = JSONSerializerExecute.Deserialize <WfServiceOperationDefinitionCollection>(this.services.Value); //入库 DoUpdate(job); } else { InvokeWebServiceJob job = new InvokeWebServiceJob() { JobID = Guid.NewGuid().ToString(), Category = txt_jobCategory.Text, Enabled = ddl_Enabled.SelectedValue == "1" ? true : false, JobType = JobType.InvokeService, Description = txt_JobDescription.Text, Name = txt_JobName.Text, Schedules = pvc, ISManual = !ch_IsAuto.Checked, SvcOperationDefs = JSONSerializerExecute.Deserialize <WfServiceOperationDefinitionCollection>(this.services.Value) }; this.Data = job; //入库 DoUpdate(job); } if (string.IsNullOrEmpty(ErrorMsg)) { HttpContext.Current.Response.Write("<script>window.returnValue=true;window.close();</script>"); //this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "closeWindow", "window.returnValue=true;window.close()", true); } else { //ViewState["conditions"] = conditions.Value; ViewState["schedules"] = schedules.Value; conditions.Value = JSONSerializerExecute.Serialize((this.Data as ETLJob).ETLWhereConditions); ViewState["etlEntities"] = etlEntities.Value; //计划列表 List <ScheduleGridObj> scheduleList = new List <ScheduleGridObj>(); foreach (JobSchedule item in this.Data.Schedules) { scheduleList.Add(new ScheduleGridObj() { ID = item.ID, Name = item.Name, Description = item.Description }); } ViewState["schedulesGrid"] = JSONSerializerExecute.Serialize(scheduleList);; grid.InitialData = scheduleList; //etl实体列表 List <EtlGridObj> etlJobs = new List <EtlGridObj>(); foreach (ETLEntity item in (this.Data as ETLJob).ETLEntities) { etlJobs.Add(new EtlGridObj() { ID = item.ID, CodeName = item.Name, Description = item.Description }); } ViewState["etlsGrid"] = JSONSerializerExecute.Serialize(etlJobs); gridEtl.InitialData = etlJobs; string msg = ErrorMsg.Replace("\r\n", string.Empty); string scriptStr = string.Format("alert('{0}');", msg); this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "closeWindow", scriptStr, true); } #endregion } }