2.1.3 APIµäÐÍÓ¦Óó¡¾° ? Ö´Ðе¥Ò»²Ù×÷
µ¥Ò»²Ù×÷Ö¸Ò»ÏîÈÎÎñÖ»ÐèÒªÒ»¸öAPIÍê³É£¬±ÈÈ磺µ¥¾ÝÐÂÔö¡¢ÉóºË/ÆúÉó¡¢É¾³ýµÈµ¥Ò»²Ù×÷¡£ÕâÊÇAPIµ÷ÓÃ×î³£¼ûµÄ³¡¾°£¬Ö»Ðè°´ÕÕAPIµÄ½Ó¿Ú¹æ·¶¹¹Ôì²ÎÊýÖ±½Óµ÷Óü´¿É¡£
? Ö´Ðи´ºÏ²Ù×÷
¸´ºÏ²Ù×÷£¬¼´Ò»ÏîÈÎÎñÓɶà¸öAPIµÄÐ×÷À´Íê³É¡£±ÈÈ磬×Ô¶¨ÒåµÄµ¥¾Ýά»¤½çÃæµÄÖ÷ÒªÂß¼£¬Ò»°ãÓÉÒÔÏÂËĸö²½Öè¹¹³É£º
1) ¼ÓÔØµ¥¾Ý£»
2) Ôڱ༽çÃæÉÏÏÔʾ£» 3) Óû§Ð޸ĵ¥¾Ý×ֶΣ» 4) Ìá½»±£´æ¡£
ÒÔÉϲ½ÖèÐèÒª½øÐÐÁ½´ÎAPIµ÷Ó㺠1) ¼ÓÔØµ¥¾Ýʱºòµ÷Óá°¼ÓÔØAPI¡±£¬ÒÔ»ñÈ¡µ¥¾ÝBO¶ÔÏ󣨻òÔʼDOM¶ÔÏ󣩲¢ÔÚ½çÃæ
ÉÏÕ¹ÏÖ£»
2) Óû§ÔÚÐ޸ĵ¥¾ÝʱÆäʵ¾ÍÊÇÔÚÐÞ¸ÄBO¶ÔÏó£¬Óû§±£´æµ¥¾Ýʱµ÷Óá°±£´æAPI¡±£¬´Ë
ʱҪ½«´ËBO¶ÔÏ󴫸ø¡°±£´æAPI¡±£¨¶ø²»Óù¹ÔìеÄBO¶ÔÏ󣩡£
´úÂëʾÀý£º
Ê×ÏÈ£¬µÇ½£»
//¹¹Ôìu8login¶ÔÏ󲢵ǽ
U8Login.clsLogin u8Login = new U8Login.clsLogin(); String sSubId = \;
String sAccID = \; String sYear = \; String sUserID = \; String sPassword = \; String sDate = \; String sServer = \; 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;
È»ºó£¬Í¨¹ýLOAD½Ó¿Ú»ñÈ¡BO¶ÔÏó£»
//¹¹Ôì»·¾³ÉÏÏÂÎĶÔÏ󣬴«Èëlogin£¬²¢°´ÐèÉèÖÃÆäËüÉÏÏÂÎIJÎÊý
U8EnvContext envContext = new U8EnvContext(); envContext.U8Login = u8Login; //ÉèÖÃÉÏÏÂÎIJÎÊý
??
//ÉèÖÃAPIµØÖ·±êʶ(Url)
U8ApiAddress myApiAddress = new U8ApiAddress(¡°×°Ôص¥¾ÝµÄµØÖ·±êʶ¡±); //¹¹ÔìAPIBroker
U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext); //API²ÎÊý¸³Öµ
broker.AssignNormalValue(\²ÎÊýÃû\, \²ÎÊýÖµ\); ??
//µ÷ÓÃLOAD½Ó¿ÚAPI if (!broker.Invoke()) { }
//»ñÈ¡±íÍ·»ò±íÌåµÄBO¶ÔÏó£¬Èç¹ûҪȡÔʼµÄXMLDOM¶ÔÏó½á¹û£¬ÇëʹÓÃGetResult(²ÎÊýÃû) BusinessObject DomRet = broker.GetBoParam(\±íÍ·»ò±íÌå²ÎÊýÃû\);
//´íÎó´¦Àí
Exception apiEx = broker.GetException(); if (apiEx != null) { }
//½áÊø±¾´Îµ÷Óã¬ÊÍ·ÅAPI×ÊÔ´ broker.Release(); return;
if (apiEx is MomSysException) { }
else if (apiEx is MomBizException) { }
MomBizException bizEx = apiEx as MomBizException; Console.WriteLine(\Òì³££º\ + bizEx.Message); //todo:Òì³£´¦Àí
MomSysException sysEx = apiEx as MomSysException; Console.WriteLine(\ϵͳÒì³££º\ + sysEx.Message); //todo:Òì³£´¦Àí
½Ó×Å£¬BO¶ÔÏó¾Óû§ÐÞ¸ÄÖØÐ¸³Öµ,²¢´«µÝ¸øUPDATE½Ó¿ÚÌá½»±£´æ£»
//Ð޸ĻñÈ¡µÄBO¶ÔÏ󣬶ÔÐèÒª¸ü¸ÄµÄ×Ö¶ÎÖØÐ¸³Öµ DomRet[0][\×Ö¶ÎÃû\] = еÄ×Ö¶ÎÖµ;
??
//ÖØÐ¹¹Ôì¡°ÐÂÔö»òÐ޸ġ±APIµÄµØÖ·±êʶ
myApiAddress = new U8ApiAddress(\ÐÂÔö»òÐ޸ġ±APIµÄµØÖ·±êʶ\);
//ÖØÐ¹¹ÔìAPIBroker
broker = new U8ApiBroker(myApiAddress, envContext); //±íÍ·»ò±íÌå²ÎÊý¸³Öµ
broker.SetBoParam(\±íÍ·»ò±íÌå²ÎÊýÃû\, DomRet); //API²ÎÊý¸³Öµ
broker.AssignNormalValue(\²ÎÊýÃû\, \²ÎÊýÖµ\); ??
//µ÷ÓÃUPDATE½Ó¿ÚAPI if (!broker.Invoke()) { }
??
×îºó£¬»ñÈ¡·µ»Ø½á¹û¡£
//»ñÈ¡ÆÕͨ·µ»ØÖµ
System.String result = broker.GetReturnValue() as System.String; //»ñÈ¡out/inout²ÎÊýÖµ ??
//½áÊø±¾´Îµ÷Óã¬ÊÍ·ÅAPI×ÊÔ´ broker.Release();
2.2. APIÄÚÈÝ 2.2.1 ²É¹º¹ÜÀí
? ¹¦ÄܽéÉÜ
ΪÁËÖ§³ÖU8¶þ´Î¿ª·¢¶ÔÒµÎñµ¥¾ÝµÄ¿ª·¢£¬±¾¹¦ÄÜÌṩÁËʵÏֲɹºÒµÎñµ¥¾Ý¸÷ÖÖ²Ù×÷¹¦Äܵıà³Ì½Ó¿Ú¡£Ê¹Óòɹº¹ÜÀíµÄAPI¿ª·¢½Ó¿Ú£¬¿ÉÒÔ¶Ô¿â´æ¹ÜÀíÖеIJɹºµ½»õµ¥¡¢²É¹ºÆÕͨ·¢Æ±¡¢²É¹º×¨Ó÷¢Æ±¡¢²É¹º¶©µ¥¡¢Ç빺µ¥¡¢²É¹ºÔË·Ñ·¢Æ±µÈµ¥¾Ý½øÐÐÉóºË¡¢ÆúÉó¡¢»ñÈ¡£¨»ò×°ÔØ£©¡¢ÐÂÔö¡¢Ð޸ġ¢É¾³ý¡£
? ʹÓû·¾³
±ØÐë°²×°.NET FrameWork 2.0£» ±ØÐë°²×°U8-872°æ±¾µÄ²É¹º¹ÜÀí²úÆ·£» ±ØÐë°²×°APIÊÊÅäÆ÷×é¼þPUAPIConcrete.dll
? ½Ó¿Ú˵Ã÷
²É¹º¹ÜÀí¶þ´Î¿ª·¢½Ó¿Ú˵Ã÷£º
? ÉóºËµ¥¾Ý-ConfirmPO·½·¨
²ÎÊý£º
domHead ¡ª¡ª µ¥¾Ý±íÍ·£¬DOM¶ÔÏ󣬱ØÊä APIÉÏÏÂÎÄ£º
VoucherType ¡ª¡ª µ¥¾ÝÀàÐÍ£¬¾ßÌåÀàÐͲο´APIÉÏÏÂÎÄÃèÊö bPositive ¡ª¡ª ºìÀ¶±êʶ£ºTrue,À¶×Ö £»False,ºì×Ö sBillType ¡ª¡ª Ϊ¿Õ´®
sBusType ¡ª¡ª ÒµÎñÀàÐÍ£ºÆÕͨ²É¹º,Ö±Ô˲ɹº,ÊÜÍдúÏú
? ÆúÉóµ¥¾Ý- CancelconfirmPO·½·¨
²ÎÊý£º
domHead ¡ª¡ª µ¥¾Ý±íÍ·£¬DOM¶ÔÏ󣬱ØÊä APIÉÏÏÂÎÄ£º
VoucherType ¡ª¡ª µ¥¾ÝÀàÐÍ£¬¾ßÌåÀàÐͲο´APIÉÏÏÂÎÄÃèÊö bPositive ¡ª¡ª ºìÀ¶±êʶ£ºTrue,À¶×Ö £»False,ºì×Ö sBillType ¡ª¡ª Ϊ¿Õ´®
sBusType ¡ª¡ª ÒµÎñÀàÐÍ£ºÆÕͨ²É¹º,Ö±Ô˲ɹº,ÊÜÍдúÏú
? ×°ÔØµ¥¾Ý-Load·½·¨