学习《Building Applications with FME Objects》 之二 使用Sessions(会话)
2009-08-16 17:06
417 查看
使用FME Objects的起点是创建一个FME Object session(会话)对象FMEOSession,除非你的应用程序要操作有限的虚拟内存,当你的应用程序初始化市可以简单的创建FMEOSession对象,并且保持该对象到应用程序关闭,你可以创建全局的会话或者通过任何对象或方法的参数来访问。
提示:一个进程只能有一个会话可用,试图创建第二个会话会导致错误
在VB中,用CreateObject方法创建并返回一个ActiveX对象,可以用这个方法创建FMEOSession对象。
一旦创建,FMEOSession对象必须在使用前初始化,下面为初始化代码:
下面的图展示的FMEOSession对象的属性和方法:
所有的FME Object AcitveX对象都是用Session对象创建的,下面创建一个字符串数组对象并赋给一个变量
fmeHome,fmeVersion和fmeBuildNumber属性可以用来了解FME安装信息。
在本章,我们将学习到:
初始化会话设置 改变会话设置 捕捉错误 创建日志文件 配置函数和处理器(factories)
会话设置
FME对象的配置参数和FME一样,详细信息参考FME Foundation手册中的FME Configuration章节。
用init方法来设置会话参数,例如,设置FME对象临时目录,你可以用下列代码:
在会话被初始化后,可以使用updateSettings方法来改变会话参数。
捕捉错误
一个好的应用程序应该能捕捉运行时错误,最好是在用户不知情的情况下将错误恢复,但任何开发人员也不可能预测所有的错误,好的设计应该是当错误发生时捕捉到错误并给用户友好的提示。FME对象应用程序的错误捕捉如下:
提示:如果FME对象发生错误,FMEOSession对象变成无效并且不能在应用程序的生命周期中继续使用,为了继续使用,应用程序必须重新创建FMEOSession对象。
为了帮助你分析运行时错误,FMEOSession对象提供两个属性包含诊断信息:
lastErrorNum和lastErrorStackTrace,如果你的程序有日志文件,这两个属性可以被记录便于诊断。
提示:为了简洁,本文中的范例程序中省略了错误捕捉,但我们强烈建议你的程序中加入。
日志文件对象
FMEOSession对象允许你的应用程序通过logFile属性访问会话的FMEOLogFile对象。用FMEOLogFile对象可以命名日志文件。
下面的代码演示用应用程序路径和标题命名日志文件,并写入日志测试信息:
函数配置
FME函数是通过FMEOPipeline和FMEOFeature对象暴露给应用程序的,函数配置的描述在FME Functions,Factories,and Transformers手册中,FMEOSession configure方法允许为函数指定配置,下面的代码展示了如何给@SQL函数配置参数。
一旦会话对象工作完毕,你可以销毁它:
参考资料: 《Building Applications with FME Objects》February 2005 转载请注明文章来源 http://www.cnblogs.com/booolee
提示:一个进程只能有一个会话可用,试图创建第二个会话会导致错误
在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)
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
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
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_fmeLogfile=m_fmeSession.logFile
sLogFileName=App.Path & “\" & App.Title & “.log”
Call m_fmeLogfile.setFileName(sLogFileName,False)
Call m_fmeLogfile.logMessageString(0,”FME Objects test.”)
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)
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 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
相关文章推荐
- 学习《Building Applications with FME Objects》 之十 使用集合
- 学习《Building Applications with FME Objects》 之七 坐标系统
- 学习《Building Applications with FME Objects》 之三 操作要素(Features)2
- 学习《Building Applications with FME Objects》 之五 向数据集写要素
- 学习《Building Applications with FME Objects》 之六 转换要素
- 学习《Building Applications with FME Objects》 之一 关于FME Objects
- 学习《Building Applications with FME Objects》 之四 从数据集读取要素
- 学习《Building Applications with FME Objects》 之三 操作要素(Features)
- 学习《Building Applications with FME Objects》 url
- 学习《Building Applications with FME Objects》 之九 高级要素处理
- 学习《Building Applications with FME Objects》 之八 空间索引
- Yii学习(7)----使用with关系
- 使用openframeworks无需配置学习新版本opengl 之二 使用自带载入图片
- Building Enterprise Applications with Windows Presentation Foundation and the
- 电子书下载:Windows Phone 7 Developer Guide: Building connected mobile applications with Microsoft Silverlight
- EJB中JNDI的逻辑名的使用及部署_{EJB之无状态会话Bean简单应用-学习与实践}续(inber原作)
- Building Applications with Force.com and VisualForce(Dev401)(十三):Implementing Business Processes:Automating Business Processes Part II
- Building Applications with Force.com and VisualForce (DEV401) (三):Application Essential:Building Your Data Model
- Building Flex Applications with JSPs
- Building J2EE Applications with the Rational Unified Process