电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

第三方调用U9服务说明(.net平台).docx

第三方调用U9服务说明(.net平台).docx_第1页
1/6
第三方调用U9服务说明(.net平台).docx_第2页
2/6
第三方调用U9服务说明(.net平台).docx_第3页
3/6
第三方调用U9服务(DotNet平台)一、业务场景PLM(PDM)系统和U9ERP系统整合,PLM设计完产品后需要传入到U9ERP系统,比如要传入厂牌,料品,BOM等基础信息二、引用U9服务以创建料品服务为例,UFIDA.U9.ISV.Item.BatchCreateItemByDTOSRVa)验证服务是否可用如果能显示显示下面的图片说明服务没有问题b)生成代理类若使用VisualStudio2005则需要先下载SvcUtil.exe在命令行输入SvcUtilhttp://localhost/portal/services/UFIDA.U9.ISV.Item.IBatchCreateItemByDTOSRV.svc/serializer:DataContractSerializer如下图所示:输入命令后输出的不上上图格式则重新再试或查看第一步服务地址是否正确c)构架项目1.用VS新建项目,2.把代理类和配置文件加到项目中3.修改output.config名称为app.config4.添加System.Runtime.Serialization.dll和System.ServiceModel.dll引用如下图所示如果一个项目中需要用到调用多个服务,则需要合并代理类和配置文件,请参考合并代理类说明文档三、项目实现细节a)调用服务框架代码//实例化代理类UFIDAU9ISVItemIBatchCreateItemByDTOSRVClientclient;client=newUFIDAU9ISVItemIBatchCreateItemByDTOSRVClient();UFIDAU9CBOSCMItemItemMasterData[]returnItems;//服务返回结果UFSoft.UBF.Exceptions.MessageBase[]returnMsg;//返回异常信息,目前还没有使用此属性objectcontext;//上下文信息UFIDAU9ISVItemItemMasterDTOData[]itemMasterDtos;//传入参数try{context=CreateContextObj();//给上下文信息赋值itemMasterDtos=SetItemMasterDtos();//给传入参数赋值returnItems=client.Do(outreturnMsg,context,itemMasterDtos);//服务调用}catch(Exceptionex){//异常信息捕获thrownewException(GetExceptionMessage(ex));}b)上下文信息//////给上下文信息赋值//////privatestaticThreadContextCreateContextObj(){//实例化应用上下文对象ThreadContextthContext=newThreadContext();System.Collections.Generic.Dictionaryns=newDictionary();ns.Add("OrgID","1000911212125298");//组织ns.Add("UserID","1000911217626500");//用户ns.Add("CultureName","zh-CN");//语言ns.Add("EnterpriseID","007");//企业thContext.nameValueHas=ns;returnthContext;}c)传入参数//////给传入参数赋值//////privatestaticUFIDAU9ISVItemItemMasterDTOData[]SetItemMasterDtos(){Listdtos=newList();foreach(i….{UFIDAU9ISVItemItemMasterDTODatadto=newUFIDAU9ISVItemItemMasterDTOData();//为料品dto赋值dto.m_code="1-01-"+i.ToString();dto.m_name="自建料品"+i.ToString();dto.m_status=SetCommonArchiveDTO("3200");//状态码(关联实体类型赋值)dto.m_inventoryUOM=SetCommonArchiveDTO("001");//库存主单位dto.m_itemFormAttribute=10;//制造件//描述性弹性域UFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsDatadescFlexSegs=newUFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData();descFlexSegs.m_privateDescSeg1="英文描述等";dto.m_descFlexField=descFlexSegs;…省略部分代码//把料品dto添加到集合中dtos.Add(dto);}returndtos.ToArray();}d)提取服务异常如果还有异常提取有问题,请开发人员跟踪检查异常信息结构,在修改下面的方法//////提取异常信息//////privatestaticstringGetExceptionMessage(Exceptionex){stringfaultMessage="未知错误,请查看ERP日志!";System.TimeoutExceptiontimeoutEx=exasSystem.TimeoutException;if(timeoutEx!=null){faultMessage="因第一次访问ERP服务,访问超时,如避免此错误,请先启动ERP系统!";}else{FaultExceptionfaultEx=exasFaultException;if(faultEx==null){faultMessage=ex.Message;}else{ServiceExceptionserviceEx=faultEx.Detail;if(serviceEx!=null&&!string.IsNullOrEmpty(serviceEx.Message)&&!serviceEx.Message.Equals("fault",StringComparison.OrdinalIgnoreCase)){//错误信息在faultEx.Message中,请提取,//格式为"Fault:料品不能为空,请录入\n在....."intstartIndex=serviceEx.Message.IndexOf(":");intendIndex=serviceEx.Message.IndexOf("\n");if(endIndex==-1)endIndex=serviceEx.Message.Length;if(endIndex>0&&endIndex>startIndex+1){faultMessage=serviceEx.Message.Substring(startIndex+1,endIndex-startIndex-1);}else{faultMessage=serviceEx.Message;}}}}returnfaultMessage;}e)公共方法//////为关联实体属性赋值//////实体记录ID///publicstaticUFIDAU9CBOPubControllerCommonArchiveDataDTODataSetCommonArchiveDTO(longentityID){returnSetCommonArchiveDTO(entityID,string.Empty);}//////为关联实体属性赋值//////实体记录编码///publicstaticUFIDAU9CBOPubControllerCommonArchiveDataDTODataSetCommonArchiveDTO(stringentityCode){returnSetCommonArchiveDTO(-1,entityCode);}//////为关联实体属性赋值//////实体记录ID///实体记录编码///publicstaticUFIDAU9CBOPubControllerCommonArchiveDataDTODataSetCommonArchiveDTO(longentityID,stringentityCode){UFIDAU9CBOPubControllerCommonArchiveDataDTODatadto=newUFIDAU9CBOPubControllerCommonArchiveDataDTOData();if(entityID<=0&&string.IsNullOrEmpty(entityCode))returnnull;dto.m_code=entityCode;dto.m_iD=entityID;returndto;}请参考案例代码四、项目配置信息属性说明:receiveTimeout:调用服务时超时时间maxReceivedMessageSize:传入的参数大小address:调用的服务地址bindingConfiguration:绑定的配置名称下面是自动生成的配置文件五、常见异常信息a)枚举类型默认值错误如果枚举类型未赋值,应该赋为-1,但目前默认赋为0,对于这种类型的需要手工赋为-11.可能引起的错误:“实体料品的引用对象标准成分不存在”解决方式:料品.标准成分=-1;2.未出现错误,但是所赋默认值错误。(portal中保存一条记录,对比和服务导入的记录的差别确定应该为枚举类型赋什么默认值)解决方式:赋值为相应的值b)业务完整性异常请了解该业务后检查传入的参数是否正确,做相应修改比如:“料号已存在,请重新输入”,编码重复异常“料品库存相关信息的属性库存上限不允许为零”,规划方法为最高最低点法时,库存上限需要有一个值c)已超过传入消息(65536)的最大消息大小配额错误信息:已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的MaxReceivedMessageSize属性解决方法:修改配置文件中的MaxReceivedMessageSize和maxBufferSize的字节大小,把数值增大d)IIS7提示无法读取配置文件,因为它的大小超过了最大设置HKLM\SOFTWARE\Microsoft\InetStp\Configuration\MaxWebConfigFileSizeInKB的值.如果没有,创建一个Configuration项,添加一个DWORD值MaxWebConfigFileSizeInKB重启IISe)“ExceptionDetail”方法没有采用“0”个参数的重载在报错的相应位置添加publicServiceExceptionDetail(Exceptionexception):base(exception){}f)MessageBase找不到命名空间修改原则为:UFSoft.UBF.Exceptions1修改为UFSoft.UBF.ExceptionsUFSoft.UBF.Exceptions修改为UFSoft.UBF.Exceptions1只修改报错的位置

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

第三方调用U9服务说明(.net平台).docx

您可能关注的文档

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信