學習《Building Applications with FME Objects》 之二 使用Sessions(會話)

來源:互聯網
上載者:User

    使用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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.