实例介绍
【实例简介】
【实例截图】
【核心代码】
//[新增或修改]调用示例
//如果是非门户的独立进程,请将U8SOFT\ufcomsql目录中的U8Login.dll替换为Debug版的Login。
//添加对Interop.U8Login.dll引用(在U8SOFT\Interop目录)
//添加对Interop.MSXML2.dll引用(在U8SOFT\Interop目录)
//添加对U8API框架三个类库引用(在U8SOFT\UFMOM\U8APIFramework目录):
//UFIDA.U8.U8APIFramework.dll
//UFIDA.U8.MomServiceCommon.dll
//UFIDA.U8.U8MOMAPIFramework.dll
//声明命名空间
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
//需要添加以下命名空间
using UFIDA.U8.MomServiceCommon;
using UFIDA.U8.U8MOMAPIFramework;
using UFIDA.U8.U8APIFramework;
using UFIDA.U8.U8APIFramework.Meta;
using UFIDA.U8.U8APIFramework.Parameter;
using MSXML2;
namespace U8APITest
{
class Program
{
static void Main(string[] args)
{
//第一步:构造u8login对象并登陆(引用U8API类库中的Interop.U8Login.dll)
//如果当前环境中有login对象则可以省去第一步
U8Login.clsLogin u8Login = new U8Login.clsLogin();
String sSubId = "DP";
String sAccID = "(default)@999";
String sYear = "2015";
String sUserID = "demo";
String sPassword = "DEMO";
String sDate = "2015-01-11";
String sServer = "localhost";
String sSerial = "";
if (!u8Login.Login(ref sSubId, ref sAccID, ref sYear, ref sUserID, ref sPassword, ref sDate, ref sServer, ref sSerial))
{
Console.WriteLine("登陆失败,原因:" u8Login.ShareString);
Marshal.FinalReleaseComObject(u8Login);
return;
}
//第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数
U8EnvContext envContext = new U8EnvContext();
envContext.U8Login = u8Login;
string connectionString = u8Login.UfDbName;
ADODB.Connection conn = new ADODB.Connection();
conn.Open(connectionString);
conn.BeginTrans();
//采购所有接口均支持内部独立事务和外部事务,默认内部事务
//如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false
envContext.BizDbConnection = conn;
envContext.IsIndependenceTransaction = false;
//设置上下文参数
envContext.SetApiContext("VoucherType", 1); //上下文数据类型:int,含义:单据类型,采购订单 1
envContext.SetApiContext("bPositive", true); //上下文数据类型:bool,含义:红蓝标识:True,蓝字
envContext.SetApiContext("sBillType", ""); //上下文数据类型:string,含义:为空串
envContext.SetApiContext("sBusType", "普通采购"); //上下文数据类型:string,含义:业务类型:普通采购,直运采购,受托代销
//第三步:设置API地址标识(Url)
//当前API:新增或修改的地址标识为:U8API/PurchaseOrder/VoucherSave
U8ApiAddress myApiAddress = new U8ApiAddress("U8API/PurchaseOrder/VoucherSave");
//第四步:构造APIBroker
U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);
//第五步:API参数赋值
//给BO表头参数DomHead赋值,此BO参数的业务类型为采购订单,属表头参数。BO参数均按引用传递
//提示:给BO表头参数DomHead赋值有两种方法
//方法一是直接传入MSXML2.DOMDocumentClass对象
MSXML2.DOMDocument domHead = new MSXML2.DOMDocument();
domHead.load(@"c:\h.xml");
broker.AssignNormalValue("DomHead", domHead);
//给BO表体参数domBody赋值,此BO参数的业务类型为采购订单,属表体参数。BO参数均按引用传递
//提示:给BO表体参数domBody赋值有两种方法
//方法一是直接传入MSXML2.DOMDocumentClass对象
MSXML2.DOMDocument domBody = new MSXML2.DOMDocument();
domBody.load(@"c:\b.xml");
broker.AssignNormalValue("domBody", domBody);
//给普通参数VoucherState赋值。此参数的数据类型为int,此参数按值传递,表示单据状态:2新增,1修改,0非编辑
broker.AssignNormalValue("VoucherState", 2);
//该参数curID为OUT型参数,由于其数据类型为string,为一般值类型,因此不必传入一个参数变量。在API调用返回时,可以通过GetResult("curID")获取其值
//该参数CurDom为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必须传入一个参数变量。在API调用返回时,可以直接使用该参数
MSXML2.IXMLDOMDocument2 CurDom = new MSXML2.DOMDocument();
broker.AssignNormalValue("CurDom", CurDom);
//给普通参数UserMode赋值。此参数的数据类型为int,此参数按值传递,表示模式,0:CS;1:BS
broker.AssignNormalValue("UserMode", 0);
//第六步:调用API
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)
{
MomBizException bizEx = apiEx as MomBizException;
Console.WriteLine("API异常:" bizEx.Message);
//todo:异常处理
}
//异常原因
String exReason = broker.GetExceptionString();
if (exReason.Length != 0)
{
Console.WriteLine("异常原因:" exReason);
}
}
//结束本次调用,释放API资源
broker.Release();
return;
}
//第七步:获取返回结果
//获取返回值
//获取普通返回值。此返回值数据类型为System.String,此参数按值传递,表示错误描述:空,正确;非空,错误
System.String result = broker.GetReturnValue() as System.String;
//获取out/inout参数值
//获取普通OUT参数curID。此返回值数据类型为string,在使用该参数之前,请判断是否为空
string curIDRet = broker.GetResult("curID") as string;
//获取普通OUT参数CurDom。此返回值数据类型为MSXML2.IXMLDOMDocument2,在使用该参数之前,请判断是否为空
//MSXML2.IXMLDOMDocument2 CurDomRet = Convert.ToObject(broker.GetResult("CurDom"));
//结束本次调用,释放API资源
broker.Release();
Audit(u8Login, conn, curIDRet);
conn.CommitTrans();
return;
}
static string Audit(U8Login.clsLogin u8Login, ADODB.Connection conn, string id)
{
//////////////////////////////////////////
//第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数
U8EnvContext envContext = new U8EnvContext();
envContext.U8Login = u8Login;
//采购所有接口均支持内部独立事务和外部事务,默认内部事务
//如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false
envContext.BizDbConnection = conn;
envContext.IsIndependenceTransaction = false;
//设置上下文参数
envContext.SetApiContext("VoucherType", 1); //上下文数据类型:int,含义:单据类型,采购订单 1
envContext.SetApiContext("bPositive", true); //上下文数据类型:bool,含义:红蓝标识:True,蓝字
envContext.SetApiContext("sBillType", ""); //上下文数据类型:string,含义:为空串
envContext.SetApiContext("sBusType", "普通采购"); //上下文数据类型:string,含义:业务类型:普通采购,直运采购,受托代销
//第三步:设置API地址标识(Url)
//当前API:审核订单的地址标识为:U8API/PurchaseOrder/ConfirmPO
U8ApiAddress myApiAddress = new U8ApiAddress("U8API/PurchaseOrder/ConfirmPO");
//第四步:构造APIBroker
U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);
//第五步:API参数赋值
//给BO表头参数DomHead赋值,此BO参数的业务类型为采购订单,属表头参数。BO参数均按引用传递
//提示:给BO表头参数DomHead赋值有两种方法
MSXML2.DOMDocument domHead = GetDomHeadXml(u8Login, id);
//方法一是直接传入MSXML2.DOMDocumentClass对象
broker.AssignNormalValue("DomHead", domHead);
//第六步:调用API
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)
{
MomBizException bizEx = apiEx as MomBizException;
Console.WriteLine("API异常:" bizEx.Message);
//todo:异常处理
}
//异常原因
String exReason = broker.GetExceptionString();
if (exReason.Length != 0)
{
Console.WriteLine("异常原因:" exReason);
}
}
//结束本次调用,释放API资源
broker.Release();
return "error";
}
//第七步:获取返回结果
//获取返回值
//获取普通返回值。此返回值数据类型为System.String,此参数按值传递,表示错误描述:空,正确;非空,错误
string result = broker.GetReturnValue() as System.String;
//结束本次调用,释放API资源
broker.Release();
return result;
}
static MSXML2.DOMDocument GetDomHeadXml(U8Login.clsLogin login, string id)
{
//第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数
U8EnvContext envContext = new U8EnvContext();
envContext.U8Login = login;
//采购所有接口均支持内部独立事务和外部事务,默认内部事务
//如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false
//envContext.BizDbConnection = new ADO.Connection();
//envContext.IsIndependenceTransaction = false;
//设置上下文参数
envContext.SetApiContext("VoucherType", 1); //上下文数据类型:int,含义:单据类型,采购订单 1
envContext.SetApiContext("bPositive", true); //上下文数据类型:bool,含义:红蓝标识:True,蓝
envContext.SetApiContext("sBillType", ""); //上下文数据类型:string,含义:为空串
envContext.SetApiContext("sBusType", "普通采购"); //上下文数据类型:string,含义:业务类型:普通采购,直运采购,受托代销
//第三步:设置API地址标识(Url)
//当前API:装载单据的地址标识为:U8API/PurchaseOrder/GetVoucherData
U8ApiAddress myApiAddress = new U8ApiAddress("U8API/PurchaseOrder/GetVoucherData");
//第四步:构造APIBroker
U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);
//第五步:API参数赋值
//给普通参数strWhere赋值。此参数的数据类型为System.String,此参数按值传递,表示过滤条件串
broker.AssignNormalValue("strWhere", "poid = " id);
//给普通参数varVoucherID赋值。此参数的数据类型为System.String,此参数按值传递,表示单据主表ID
broker.AssignNormalValue("varVoucherID", "");
//给普通参数strLocateWhere赋值。此参数的数据类型为System.String,此参数按值传递,表示定位条件串
broker.AssignNormalValue("strLocateWhere", "");
//第六步:调用API
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)
{
MomBizException bizEx = apiEx as MomBizException;
Console.WriteLine("API异常:" bizEx.Message);
//todo:异常处理
}
//异常原因
String exReason = broker.GetExceptionString();
if (exReason.Length != 0)
{
Console.WriteLine("异常原因:" exReason);
}
}
//结束本次调用,释放API资源
broker.Release();
return null;
}
//第七步:获取返回结果
//获取返回值
//获取普通返回值。此参数的数据类型为System.String,此参数按引用传递,表示错误描述:空,正确;非空,错误
System.String result = broker.GetReturnValue() as System.String;
//获取out/inout参数值
//out参数DomHead为BO对象(表头),此BO对象的业务类型为采购订单。BO参数均按引用传递,具体请参考服务接口定义
//如果要取原始的XMLDOM对象结果,请使用GetResult("DomHead") as MSXML2.DOMDocument
MSXML2.DOMDocument DomHeadRet = broker.GetResult("DomHead") as MSXML2.DOMDocument;
//结束本次调用,释放API资源
broker.Release();
return DomHeadRet;
}
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论