幾個朋友在Sbo開發讨論群中都說,因為前段時間咱們的例子示範,基于Sbo UI API的Add-on插件的開發基本熟悉了,也掌握了實作Sbo Add-on插件同Sbo主程式之間單點認證的方法;但是他們在開發基于Sbo DI API的獨立程式開發中,總是出現無法登入到指定的企業資料庫,本文用以對此進行說明。
基于DI API的獨立程式開發,就是不再将新開發的業務功能作為插件的形式內建到Sbo主程式中,而是獨立的程式一個應用程式、業務中間件或者一個業務處理控件。因為基于DI API,是以使用Sbo DI API來進行相關的業務處理是應該推薦的,那麼,這些程式應該遵循Sbo DI API的開發接口規範,而不應該直接簡單的連接配接到Sbo的企業資料庫。是的,這樣就能夠實作我們自己的獨立程式同Sbo主程式之間的業務互通和業務相容。
使用DI API進行Sbo業務處理,通過DI API登入到Sbo業務資料庫是第一步,Sbo通過SAPbobsCOM.Company業務對象(本文用oCompany指Company業務對象)進行業務資料庫登入驗證的。那麼使用DI API開發時登入到業務資料庫需要注意哪些問題呢?我們先分析一個Sbo的結構。
1、Sbo作為一個輕型的企業資訊管理軟體,建立在資料庫SQL Server之上,要處理基于資料庫的的業務資訊,首先需要登入到SQL Server資料庫,Sbo DI API在登入的時候,需要提供SQL Server資料庫的登入參數。
登入SQL Server資料庫可是使用兩種方法,一種是信任連接配接方式,隻要連接配接用戶端同SQL Server資料庫在同一個域内,并且具有登入到SQL Server伺服器的權力,那麼隻需要指定這台伺服器的位址就可以連接配接到這台伺服器上的SQL Server資料庫。對應oCompany需要進行以下設定:
oCompany.Server = strServer
oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL
oCompany.UseTrusted = True
登入SQL Server資料庫的第二種方法是通過資料庫的使用者和密碼進行資料庫校驗的方式。顯然這種方式在登入的時候需要指定資料庫伺服器的位址,使用的是非信任模式,并且需要指定登入資料庫的帳号和密碼。如下所示:
oCompany.UseTrusted = False
oCompany.DbUserName = strDBUserID
oCompany.DbPassword = strDBUserPWD
需要注意,這個時候如果還指定了采用信任模式登入,登入程式就會忽略指定的登入資料庫的帳号和密碼而采用信任模式,如果信任模式的登入環境--比如現行用戶端不是域使用者等--不滿足,登入就會失敗。
2、設定了登入資料庫的參數,還要保障是被授權的使用者才能夠通路Sbo業務資料庫。Sbo的被授權使用者的含義包括兩部分,一部分是目前的Sbo應用平台是經過了SAP公司的授權許可的正版使用者,另一部分就是登入者應該是業務平台中的經過管理者許可的操作使用者。前者保障了Sbo使用者的合法性正當性,後者保證了操作員的合法性正當性。oCompany負責在登入的時候對此進行驗證。
Sbo使用者合法性驗證主要通過Sbo許可驗證伺服器來進行,被授權的Sbo使用者SAP都會發送一個注冊許可,運作在Sbo許可驗證伺服器上。是以oCompany需要查詢許可伺服器,目前使用者是否屬于正版使用者。如下:
oCompany.LicenseServer = strLicSever
需要注意的是,許可驗證伺服器通過TCP/IP協定接受登入使用者的查詢,是以需要在此指定許可驗證伺服器的位址和端口,如: oCompany.LicenseServer = "192.168.1.128:30000"
3、指定了許可驗證伺服器,還需要指定操作員的登入使用者和登入密碼。相關語句如下:
oCompany.UserName = strOperatorId
oCompany.Password = strOperatorPWD
4、Sbo支援多個獨立公司的業務處理(同集團下的多個獨立核算經營的子公司,使用同一套Sbo進行管理,分别對應不同的Sbo業務資料庫,在SQL Server中對應着一個獨立的資料庫檔案)和多語言支援,在登入的時候業務要指定:
oCompany.CompanyDB = strDataBaseName
oCompany.language = SAPbobsCOM.BoSuppLangs.ln_Chinese
5、上面的登入參數指定了,通過以下語句進行登入:
oCompany.Connect
登入函數會傳回一個登入狀态代碼,用于指定是否成功登入,如果登入失敗,原因是什麼。應用軟體應該對此予以處理。
本文轉自foresun 51CTO部落格,原文連結:http://blog.51cto.com/foresun/43627,如需轉載請自行聯系原作者