目录:
阶段一:U9轻量服务项目学习(创建、配置)
阶段二:U9轻量服务项目学习(脚本、发布、测试)
阶段三:U9轻量服务项目学习(逻辑编码、DLL部署)
阶段四:U9轻量服务项目学习(工具测试)
阶段五:U9轻量服务项目学习(POST调用、解析)
-
SV逻辑编码
前面的基础工作准备完成后,接下来就是相对重要的环节了,轻量项目服务功能逻辑编码。首次轻量服务测试选用的是客开单据创建(客开单据无系统校验,单据参数可控,易于实现,异常问题易于分析),实现调用服务单头、单行参数新增客开单据,新增成功后返回单据编码、ID及是否成功标识。
轻量服务项目逻辑编码完成,通过PostMain调试后返回异常"未将对象应用到对象实例",根据报错信息看,应该是单据创建逻辑编码有异常,打上断点后也无法跟踪断点。鉴于此,首先选择通过BP实现创建单据过程,界面调用成功后,在将BP创建单据的代码,复制到SV中,重新生成解决方案后,服务调用成功创建客开单据,并返回新增单据相关信息。
总结:首次轻量服务项目测试,建议服务参数不要设置过于复杂,简单设置一个字符串,返回一个字符串就可以了,便于后续服务调用异常分析及返回结果查询。
public override object Do(object obj) { PlanDocCreate bpObj = (PlanDocCreate)obj; List<MessageDTOData> Mess = new List<MessageDTOData>(); if (bpObj.PlanDocS.Count > 0) { try { foreach (PlanDocHeadsDTOData head in bpObj.PlanDocS) { using (ISession session = UFSoft.UBF.Business.Session.Open()) { ServicePlan serPlan = ServicePlan.Create(); //测试单据单头创建 serPlan.PlanDocType = UFIDA.U9.Cust.SP.ServiceSupportBE.ServicePlanDocTypeBE.ServicePlanDocType.Finder.FindByID(head.PlanDocType);//单据类型 serPlan.PlanDocStatus = UFIDA.U9.Cust.SP.ServiceSupportBE.ServiceRecordDocBE.ServiceStatusEnum.Approving; //状态 serPlan.BusinessDate = System.DateTime.Now;//业务时间 serPlan.MakerBy = head.MakerBy;//制单人 ServiceRecord record = ServiceRecord.Finder.FindByID(head.ServiceRecord); if (record != null) { serPlan.ServiceRecord = record;//来源单据 } int SLineNo = 10;//行号初始化 foreach (PlanDocLinesDTOData line in head.ServicePlanLines) { ServicePlanLine lines = ServicePlanLine.Create(serPlan);//测试单据单行创建 lines.DocLineNo = SLineNo;//行号 lines.Importance = line.Importance;//重要程度 lines.PStartTime = System.DateTime.Now;//计划开始时间 lines.PEndTime = System.DateTime.Now.AddDays(1);//计划结束时间 lines.RStartTime = System.DateTime.Now;//实际开始时间 lines.WorkRemarks =line.WorkRemarks;//备注说明 SLineNo += 10; } session.Commit(); //记录单据信息 if (serPlan.ID > 0) { MessageDTOData MeData = new MessageDTOData(); MeData.IsSuccess = true; MeData.Messages = "服务计划单生单成功!"; MeData.DocNo = serPlan.DocNo; MeData.DocID = serPlan.ID.ToString(); Mess.Add(MeData); } } } } catch (Exception ex) { //捕获异常 MessageDTOData MeData = new MessageDTOData(); MeData.IsSuccess = false; MeData.Messages = ex.Message; MeData.DocNo = ""; Mess.Add(MeData); } } else { ////捕获异常 MessageDTOData MeData = new MessageDTOData(); MeData.IsSuccess = false; MeData.Messages = "记录为空,生单失败!"; MeData.DocNo = ""; Mess.Add(MeData); } //返回记录 return Mess; }
-
DLL文件部署
1.服务功能逻辑编码结束,重新生成解决方案。
2.VS项目文件目录执行批处理命令(AutoBuild.bat)拷贝相关DLL及SVC文件至U9Portal对应目录。