收藏 分享(赏)

.net平台调用U9接口.doc

上传人:weiwoduzun 文档编号:3181413 上传时间:2018-10-06 格式:DOC 页数:6 大小:164.13KB
下载 相关 举报
.net平台调用U9接口.doc_第1页
第1页 / 共6页
.net平台调用U9接口.doc_第2页
第2页 / 共6页
.net平台调用U9接口.doc_第3页
第3页 / 共6页
.net平台调用U9接口.doc_第4页
第4页 / 共6页
.net平台调用U9接口.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、第三方调用 U9 服务 (DotNet 平台)一、业务场景PLM(PDM)系统和 U9ERP 系统整合,PLM 设计完产品后需要传入到 U9ERP 系统,比如要传入厂牌,料品,BOM 等基础信息二、引用 U9 服务以创建料品服务为例, UFIDA.U9.ISV.Item.BatchCreateItemByDTOSRVa)验证服务是否可用如果能显示显示下面的图片说明服务没有问题b)生成代理类若使用 Visual Studio 2005 则需要先下载 SvcUtil.exe在命令行输入SvcUtil http:/localhost/portal/services/UFIDA.U9.ISV.Item

2、.IBatchCreateItemByDTOSRV.svc /serializer:DataContractSerializer如下图所示:输入命令后输出的不上上图格式则重新再试或查看第一步服务地址是否正确c)构架项目1.用 VS 新建项目,2.把代理类和配置文件加到项目中3.修改 output.config 名称为 app.config4.添加 System.Runtime.Serialization.dll 和 System.ServiceModel.dll 引用如下图所示如果一个项目中需要用到调用多个服务,则需要合并代理类和配置文件,请参考合并代理类说明文档三、项目实现细节a)调用服务框

3、架代码/实例化代理类UFIDAU9ISVItemIBatchCreateItemByDTOSRVClient client;client = new UFIDAU9ISVItemIBatchCreateItemByDTOSRVClient();UFIDAU9CBOSCMItemItemMasterData returnItems; /服务返回结果UFSoft.UBF.Exceptions.MessageBase returnMsg; /返回异常信息,目前还没有使用此属性object context; /上下文信息UFIDAU9ISVItemItemMasterDTOData itemMaste

4、rDtos; /传入参数trycontext = CreateContextObj();/给上下文信息赋值itemMasterDtos = SetItemMasterDtos();/给传入参数赋值returnItems = client.Do(out returnMsg, context, itemMasterDtos); /服务调用catch (Exception ex)/异常信息捕获throw new Exception(GetExceptionMessage(ex);b)上下文信息/ /给上下文信息赋值/private static ThreadContext CreateContext

5、Obj()/ 实例化应用上下文对象ThreadContext thContext = new ThreadContext();System.Collections.Generic.Dictionary ns = new Dictionary();ns.Add(“OrgID“, “1000911212125298“); /组织ns.Add(“UserID“, “1000911217626500“); /用户ns.Add(“CultureName“, “zh-CN“);/语言ns.Add(“EnterpriseID“, “007“);/企业thContext.nameValueHas = ns;r

6、eturn thContext;c)传入参数/ / 给传入参数赋值/ / private static UFIDAU9ISVItemItemMasterDTOData SetItemMasterDtos()List dtos = new List();foreach( i . UFIDAU9ISVItemItemMasterDTOData dto = new UFIDAU9ISVItemItemMasterDTOData();/为料品 dto赋值dto.m_code = “1-01-“+ i.ToString();dto.m_name = “自建料品“+i.ToString();dto.m_s

7、tatus = SetCommonArchiveDTO(“3200“); / 状态码(关联实体类型赋值)dto.m_inventoryUOM = SetCommonArchiveDTO(“001“); / 库存主单位dto.m_itemFormAttribute = 10;/制造件/描述性弹性域UFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData descFlexSegs = newUFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData();descFlexSegs.m_privateDe

8、scSeg1 = “英文描述等“;dto.m_descFlexField = descFlexSegs;省略部分代码/把料品 dto添加到集合中dtos.Add(dto);return dtos.ToArray();d)提取服务异常如果还有异常提取有问题,请开发人员跟踪检查异常信息结构,在修改下面的方法/ /提取异常信息/private static string GetExceptionMessage(Exception ex)string faultMessage = “未知错误,请查看 ERP日志!“;System.TimeoutException timeoutEx = ex as S

9、ystem.TimeoutException;if (timeoutEx != null)faultMessage = “因第一次访问 ERP服务,访问超时,如避免此错误,请先启动 ERP系统!“;elseFaultException faultEx = ex as FaultException;if (faultEx = null)faultMessage = ex.Message;elseServiceException serviceEx = faultEx.Detail;if (serviceEx != null int endIndex = serviceEx.Message.Ind

10、exOf(“n“);if (endIndex = -1)endIndex = serviceEx.Message.Length;if (endIndex 0 elsefaultMessage = serviceEx.Message;return faultMessage;e)公共方法/ /为关联实体属性赋值/实体记录 ID/public static UFIDAU9CBOPubControllerCommonArchiveDataDTOData SetCommonArchiveDTO(long entityID)return SetCommonArchiveDTO(entityID, stri

11、ng.Empty);/为关联实体属性赋值/实体记录编码/public static UFIDAU9CBOPubControllerCommonArchiveDataDTOData SetCommonArchiveDTO(string entityCode)return SetCommonArchiveDTO(-1, entityCode);/ /为关联实体属性赋值/实体记录 ID/实体记录编码/public static UFIDAU9CBOPubControllerCommonArchiveDataDTOData SetCommonArchiveDTO(long entityID, stri

12、ng entityCode)UFIDAU9CBOPubControllerCommonArchiveDataDTOData dto = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();if (entityID 下面是自动生成的配置文件五、常见异常信息a)枚举类型默认值错误如果枚举类型未赋值,应该赋为-1,但目前默认赋为 0,对于这种类型的需要手工赋为-11可能引起的错误:“实体 料品 的引用对象 标准成分 不存在”解决方式:料品.标准成分 = -1;2未出现错误,但是所赋默认值错误。(portal 中保存一条记录,对比和服务导入的记录

13、的差别确定应该为枚举类型赋什么默认值)解决方式:赋值为相应的值b)业务完整性异常请了解该业务后检查传入的参数是否正确,做相应修改比如:“料号已存在,请重新输入”, 编码重复异常“料品库存相关信息的属性 库存上限 不允许为零”,规划方法为 最高最低点法时,库存上限需要有一个值c)已超过传入消息(65536)的最大消息大小配额错误信息:已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的MaxReceivedMessageSize 属性解决方法:修改配置文件中的 MaxReceivedMessageSize 和 maxBufferSize 的字节大小,把数值增大d)

14、IIS7 提示无法读取配置文件,因为它的大小超过了最大设置HKLMSOFTWAREMicrosoftInetStpConfigurationMaxWebConfigFileSizeInKB 的值如果没有,创建一个 Configuration 项,添加一个 DWORD 值 MaxWebConfigFileSizeInKB重启 IISe)“ExceptionDetail”方法没有采用“0”个参数的重载 在报错的相应位置添加public ServiceExceptionDetail(Exception exception) : base(exception) f)MessageBase 找不到命名空间修改原则为: UFSoft.UBF.Exceptions1 修改为 UFSoft.UBF.ExceptionsUFSoft.UBF.Exceptions修改为 UFSoft.UBF.Exceptions1只修改报错的位置

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报