使用FME Objects的起點是建立一個FME Object session(會話)對象FMEOSession,除非你的應用程式要操作有限的虛擬記憶體,當你的應用程式初始化市可以簡單的建立FMEOSession對象,並且保持該對象到應用程式關閉,你可以建立全域的會話或者通過任何對象或方法的參數來訪問。
提示:一個進程只能有一個會話可用,試圖建立第二個會話會導致錯誤
在VB中,用CreateObject方法建立並返回一個ActiveX對象,可以用這個方法建立FMEOSession對象。
Set m_fmeSession=CreateObject(“FMEObjects.FMEOSession”)
一旦建立,FMEOSession對象必須在使用前初始化,下面為初始化代碼:
Dim fmeSessionSettings as FMEOStringArray
Set fmeSessionSettings=m_fmeSession.createStringArray
Call m_fmeSession.init(fmeSessionSettings)
下面的圖展示的FMEOSession對象的屬性和方法:
所有的FME Object AcitveX對象都是用Session對象建立的,下面建立一個字串數組對象並賦給一個變數
Set fmeSessionSettings=fmeSession.createStringArray
fmeHome,fmeVersion和fmeBuildNumber屬性可以用來瞭解FME安裝資訊。
在本章,我們將學習到:
- 初始化會話設定
- 改變會話設定
- 捕捉錯誤
- 建立記錄檔
- 配置函數和處理器(factories)
會話設定
FME對象的配置參數和FME一樣,詳細資料參考FME Foundation手冊中的FME Configuration章節。
用init方法來設定會話參數,例如,設定FME對象臨時目錄,你可以用下列代碼:
Dim fmeSessionSettings as FMEOStringArray
Set fmeSessionSetting = m_fmeSession.createStringArray
fmeSessionSettings.append(“FME_TEMP”)
fmeSessionSettings.append(“d:\temp”)
m_fmeSession.init(fmeSessionSettings)
在會話被初始化後,可以使用updateSettings方法來改變會話參數。
捕捉錯誤
一個好的應用程式應該能捕捉執行階段錯誤,最好是在使用者不知情的情況下將錯誤恢複,但任何開發人員也不可能預測所有的錯誤,好的設計應該是當錯誤發生時捕捉到錯誤並給方便使用的提示。FME對象應用程式的錯誤捕捉如下:
Sub MyProcedure()
On Error Goto ERROR_HANDLER
'你的代碼
'…
Exit Sub
ERROR_HANDLER:
If Err.Number<0 Then
Err.Number=Err.Number Xor vbObjectError
End If
Err.Raise Err.Number,Err.Source,Err.Description
End Sub
提示:如果FME對象發生錯誤,FMEOSession對象變成無效並且不能在應用程式的生命週期中繼續使用,為了繼續使用,應用程式必須重新建立FMEOSession對象。
為了協助你分析執行階段錯誤,FMEOSession對象提供兩個屬性包含診斷資訊:
lastErrorNum和lastErrorStackTrace,如果你的程式有記錄檔,這兩個屬性可以被記錄便於診斷。
提示:為了簡潔,本文中的範常式序中省略了錯誤捕捉,但我們強烈建議你的程式中加入。
記錄檔對象
FMEOSession對象允許你的應用程式通過logFile屬性訪問會話的FMEOLogFile對象。用FMEOLogFile對象可以命名記錄檔。
下面的代碼示範用應用程式路徑和標題命名記錄檔,並寫入日誌測試資訊:
Public m_fmeLogfile AS FMEOLogFile
Set m_fmeLogfile=m_fmeSession.logFile
sLogFileName=App.Path & “\" & App.Title & “.log”
Call m_fmeLogfile.setFileName(sLogFileName,False)
Call m_fmeLogfile.logMessageString(0,”FME Objects test.”)
FMEOLogFile對象可以講每條資訊寫入記錄檔,用於查看之前產生的資訊,調用holdMessage方法,參數為True則日誌被吸入內部緩衝,為False則停止緩衝。
Set m_fmeMessages=m_fmeSession.createStringArray
Call m_fmeLogfile.HoldMessage(True)
Call m_fmeLogfile.logMessageString(0,”First Message”)
Call m_fmeLogfile.logMessageString(0,”Second Message”)
Call m_fmeLogfile.HoldMessage(False)
Call m_fmeLogfile.logMessageString(0.”Third Message”)
Call m_fmeLogfile.getHeldMessage(m_fmeMessages)
函數配置
FME函數是通過FMEOPipeline和FMEOFeature對象暴露給應用程式的,函數配置的描述在FME Functions,Factories,and Transformers手冊中,FMEOSession configure方法允許為函數指定配置,下面的代碼展示了如何給@SQL函數配置參數。
Dim fmConfigRow as FMEOStringArray
Set fmeConfigRow=m_fmeSession.createStringArray
fmeConfigrow.append(“SQL”)
fmeConfigrow.append(“sampleConn”)
fmeConfigrow.append(“SERVER_TYPE”)
fmeConfigrow.append(“ORACLE”)
fmeConfigrow.append(“SERVER_NAME”)
fmeConfigrow.append(“sea_world”)
m_fmeSession.configure(fmeConfigRow)
銷毀會話
一旦會話對象工作完畢,你可以銷毀它:
Set m_fmeSession=Nothing
這將會釋放會話所佔用的所有資源。
參考資料:
《Building Applications with FME Objects》February 2005
轉載請註明文章來源 http://www.cnblogs.com/booolee