收藏 分享(赏)

如何查找和使用U8的API.doc

上传人:精品资料 文档编号:10803129 上传时间:2020-01-10 格式:DOC 页数:12 大小:514.66KB
下载 相关 举报
如何查找和使用U8的API.doc_第1页
第1页 / 共12页
如何查找和使用U8的API.doc_第2页
第2页 / 共12页
如何查找和使用U8的API.doc_第3页
第3页 / 共12页
如何查找和使用U8的API.doc_第4页
第4页 / 共12页
如何查找和使用U8的API.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、U8 知识库文档如何查找和使用 U8 的 API摘要客户化开发中常常有将某些数据经过加工后存储至 U8 标准单据中的需求,通常客开人员是通过将数据插入物理表的方式进行,这时插入的数据未经系统的业务校验,为后续操作埋下诸多隐患。U8 的 API 接口,则是提供给客开操作系统单据的一个接口,客开只需将数据组织好,系统校验、增、删、改等操作都有不同的 API 接口来实现,调用相应 API 就可以完成操作。如何使用 APIa) API 位置如下图所示:b) API 接口描述选择服务接口,右键,可以查看该接口的描述、代码示例,如下图所示:U8 知识库文档c) API 参考代码示例U8 知识库文档实际应用

2、本文以 C代码为例,数据源采用系统中已存在单据做为数据源进行讲解。调用 API 代码示例/ / 销售订单(业务类型报错)/ / / public static void AddSO_SOMain(U8Login.clsLogin u8Login,String id, ref string vNewIDRet)/第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数U8EnvContext envContext = new U8EnvContext();envContext.U8Login = u8Login;/销售所有接口均支持内部独立事务和外部事务,默认内部事务/如果是外部事务

3、,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false/envContext.BizDbConnection = new ADO.Connection();/envContext.IsIndependenceTransaction = false;/设置上下文参数envContext.SetApiContext(“VoucherType“, 12); /上下文数据类型:int,含义:U8 知识库文档单据类型:12/第三步:设置API地址标识(Url)/当前API:新增或修改的地址标识为:U8API/SaleOrder/SaveU

4、8ApiAddress myApiAddress = new U8ApiAddress(“U8API/SaleOrder/Save“);/第四步:构造APIBrokerU8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);/第五步:API参数赋值/给BO表头参数domHead赋值,此BO参数的业务类型为销售订单,属表头参数。BO参数均按引用传递/提示:给BO表头参数domHead赋值有两种方法/方法一是直接传入MSXML2.DOMDocumentClass对象/broker.AssignNormalValue(“domHe

5、ad“, new MSXML2.DOMDocumentClass()ADODB.Connection conn = new ADODB.ConnectionClass();ADODB.Recordset rs = new ADODB.RecordsetClass();MSXML2.DOMDocument domhead = new MSXML2.DOMDocumentClass();string strConn = string.Format(“Provider=SQLOLEDB;Initial Catalog=0;Data Source=1;“, “UFData_“ + u8Login.ge

6、t_cAcc_Id() + “_“ + u8Login.cIYear, u8Login.dbServerName);conn.Open(strConn, “sa“, u8Login.SysPassword, 0);string sql = “select top 1 * from SaleOrderQ where id=“ + id + “;rs.Open(sql, conn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockOptimistic, -1);rs.Save(domhead, ADODB.Persi

7、stFormatEnum.adPersistXML);U8APIHelper.FormatDom(ref domhead, “A“);broker.AssignNormalValue(“DomHead“, domhead);domhead.selectSingleNode(“/rs:data/z:row“).attributes.getNamedItem(“id“).nodeValue = “;MSXML2.DOMDocument domBody = new MSXML2.DOMDocumentClass();/domBody.RowCount = 1;ADODB.Connection con

8、n1 = new ADODB.ConnectionClass();ADODB.Recordset rs1 = new ADODB.RecordsetClass();string strConn1 = string.Format(“Provider=SQLOLEDB;Initial Catalog=0;Data Source=1;“, “UFData_“ + u8Login.get_cAcc_Id() + “_“ + u8Login.cIYear, U8 知识库文档u8Login.dbServerName);conn1.Open(strConn, “sa“, u8Login.SysPasswor

9、d, 0);sql = “select top 1 * from SaleOrderSQ where id=“ + id + “;rs1.Open(sql, conn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockOptimistic, -1);rs1.Save(domBody, ADODB.PersistFormatEnum.adPersistXML);U8APIHelper.FormatDom(ref domBody, “A“);broker.AssignNormalValue(“domBody“, do

10、mBody);domBody.selectSingleNode(“/rs:data/z:row“).attributes.getNamedItem(“id“).nodeValue = “;domBody.selectSingleNode(“/rs:data/z:row“).attributes.getNamedItem(“autoid“).nodeValue = “;/给普通参数VoucherState赋值。此参数的数据类型为int,此参数按值传递,表示状态:0增加;1修改broker.AssignNormalValue(“VoucherState“, 0);/该参数vNewID为INOUT型

11、普通参数。此参数的数据类型为string,此参数按值传递。在API调用返回时,可以通过GetResult(“vNewID“)获取其值broker.AssignNormalValue(“vNewID“, “);/给普通参数DomConfig赋值。此参数的数据类型为MSXML2.IXMLDOMDocument2,此参数按引用传递,表示ATO,PTO选配MSXML2.IXMLDOMDocument2 DomConfig = new MSXML2.DOMDocumentClass();broker.AssignNormalValue(“DomConfig“, DomConfig);/第六步:调用API

12、if (!broker.Invoke()/错误处理Exception apiEx = broker.GetException();if (apiEx != null)if (apiEx is MomSysException)MomSysException sysEx = apiEx as MomSysException;Console.WriteLine(“系统异常:“ + sysEx.Message);/todo:异常处理else if (apiEx is MomBizException)U8 知识库文档MomBizException bizEx = apiEx as MomBizExcep

13、tion;Console.WriteLine(“API异常:“ + bizEx.Message);/todo:异常处理/异常原因String exReason = broker.GetExceptionString();if (exReason.Length != 0)Console.WriteLine(“异常原因:“ + exReason);/结束本次调用,释放API资源broker.Release();return;/第七步:获取返回结果/获取返回值/获取普通返回值。此返回值数据类型为System.String,此参数按值传递,表示成功为空串string result = broker.G

14、etReturnValue() as System.String;/获取out/inout参数值/获取普通INOUT参数vNewID。此返回值数据类型为string,在使用该参数之前,请判断是否为空vNewIDRet = broker.GetResult(“vNewID“) as string;/结束本次调用,释放API资源broker.Release();return;参见附件:SO_SOMain.cs如何调用事件插件客户化开发如果需要在标准单据的保存前后、审核前后、弃审前后等按钮操作时加入个性化逻辑时,则可调用相应的按钮事件插件接口。a) 事件插件位置:U8 知识库文档事件分为同步插件和异

15、步插件,所谓同步插件就是指插件接口逻辑包含在平台事件的事务中;所谓异步插件就是指插件接口逻辑不包含在平台事件的事务中,插件的逻辑执行情况不影响平台的事件操作。b) 插件事件描述选择事件,右键,可以查看插件事件描述,如下图所示:U8 知识库文档在事件描述中描述了事件接口方法名(例如:Save_Before) ,参数个数、参数名称(domhead、dombody、ermsg) ,参数类型。U8 知识库文档参考附件:U8apic) 如何调用事件插件以调用销售订单保存前同步插件为例:右键同步插件所有任务注册同步插件U8 知识库文档输入插件编码、插件名称,进入插件绑定页签:勾选“修改”在下拉框中选择插件

16、类型(本例以 MSDCOM 为例):选择 dll 路径、类名、方法名,如下图所示:U8 知识库文档点击“自动匹配”按钮进行测试,如果测试成功则完成插件注册。实际应用本文以 VB 代码为例,注册销售订单保存前事件插件。销售订单保存前事件插件Public Function Audit_After(domh As DOMDocument, domb As DOMDocument, erstr As String) As BooleanMsgBox “OK“domh.save “E:ZYRXML付款单_domh.xml“domb.save “E:ZYRXML付款单_domb.xml“If MsgBox(“保存后插件接口插件接口 Audit_After 配置成功“, vbYesNo) = vbYes ThenAudit_After = TrueElseAudit_After = FalseEnd IfEnd Function参考附件:U8api登录 U8,新增销售订单,点击保存按钮,弹出对话框如下图所示:U8 知识库文档在指定目录下生成的销售订单表头、表体的 XML 文件,如下图所示:

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

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

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


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

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

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