• U9轻量服务项目学习(逻辑编码、DLL部署) 阶段三



    目录: 

    阶段一: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)拷贝相关DLLSVC文件至U9Portal对应目录。

    简单粗暴的记录,便于后续翻阅,转载请注明出处。
  • 相关阅读:
    Oracle查询当前用户和当前用户下的所有表
    poj 1222EXTENDED LIGHTS OUT
    poj 1753 Flip Game
    老李分享:loadrunner用javavuser进行接口测试
    性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具
    cf158B(水题)
    AC自动机讲解+[HDU2222]:Keywords Search(AC自动机)
    [BZOJ2120]:数颜色(分块?)
    赋值运算,拷贝运算,运算符重载
    Fraction to Recurring Decimal(STRING-TYPE CONVERTION)
  • 原文地址:https://www.cnblogs.com/youmin3205/p/14790040.html
Copyright © 2020-2023  润新知