基本信息
源码名称:U8测试实例
源码大小:0.45M
文件格式:.zip
开发语言:C#
更新时间:2018-08-16
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
//[新增或修改]调用示例
//如果是非门户的独立进程,请将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;
}
}
}