zoukankan      html  css  js  c++  java
  • 学习《Building Applications with FME Objects》 之二 使用Sessions(会话)

        使用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对象的属性和方法:

    image

        所有的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对象可以命名日志文件。

    image

    下面的代码演示用应用程序路径和标题命名日志文件,并写入日志测试信息:

    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

  • 相关阅读:
    django实现github第三方本地登录
    django扩展User模型(model),profile
    WSGI
    Linux查看配置文件中未被注释的有效配置行
    virsh 命令
    qemu-img命令
    python logging
    oslo.messaging
    集成kafka的身份认证(SASL/PLAIN)到kubernets环境中
    Helm基础知识
  • 原文地址:https://www.cnblogs.com/booolee/p/1547401.html
Copyright © 2011-2022 走看看