配置文件布局
发动机配置文件由几个部分组成,每个部分执行一组特定的任务。配置文件可以包含两个组件:一个全局节和零个或多个子节。
一般布局看起来像这样:
global_section.
<GlobalDirectives>
SUB_SECTION <的名字>
<SubsectionDirectives>
全球部分
Global部分定义了应用于单个FME引擎会话的所有全局指令。会话定义为FME引擎启动、执行一些转换,然后关闭的一段时间。
全球部分的一般形式如下:
GLOBAL_SECTION \
[FME_WORKING_DIR < results-dirpath > \]
[FME_MAPPING_DIR < repository-root-dirpath > \]
[FME_RESULT_LIFETIME < results-lifetime-seconds > \]
[FME_PURGE_INTERVAL < results-deletion-interval-seconds > \]
[AUTO_DIR_PREFIX < dir_prefix > \]
[auto_file_prefix
[接收0 \
[fme_shared_resource_dir
[fme_server_log_file
[MACRO_DEF FME_DATA_REPOSITORY < data-repository-dirpath > \]
比例(FME_ENGINE_MEMORY_REDLINE < > \]
[SUCCESS_RESPONSE <消息> \]
[FAILURE_RESPONSE <消息> \]
全局指令在下表中描述。重要的是要记住分段指令覆盖全局指令。
Global_section指令 |
描述 |
FME_WORKING_DIR < results-dirpath > |
指定FME服务器将所有翻译结果写入的目录路径,除非fme_working_dir.在特定工作的小节中指定。 默认值:当前的工作目录 注意:当更改目录时,您还必须在您使用的任何web应用程序服务的属性文件中更改相应的指令。例如,如果使用Data Download服务,则必须更新 警告:注意确保fme_working_dir.值设置为适当的目录。此位置是FME引擎写入的翻译结果。这很重要 - 您可以定期设置FME引擎,并递归地删除此目录中的所有文件超过特定年龄(指定fme_result_lifetime.).当fme_working_dir.如果被设置为错误的目录,FME服务器将删除该目录中的文件,而不是在这里写入翻译结果。 |
FME_MAPPING_DIR < repository-root-dirpath > |
指定FME服务器的存储库根目录路径,其中包含FME引擎在翻译期间运行的工作区。 默认值:当前的工作目录 |
FME_RESULT_LIFETIME < results-lifetime-seconds > |
指定转换结果保存的时间(以秒为单位)。FME引擎定期检查并递归删除所有比这个数量更老的文件fme_working_dir.作为一种内务措施。的值设置此自动删除检查的频率FME_PURGE_INTERVAL描述下一个。无论何时执行自动文件删除,都是在翻译之后进行的。 默认值:如果value为零或没有指令,结果永远不会被删除-生存期是无限的。 |
FME_PURGE_INTERVAL < results-deletion-interval-seconds > |
自动删除检查周期,单位为秒。FME引擎检查旧于fme_result_lifetime.并删除任何它发现。此检查是在的FME_PURGE_INTERVAL时期。注意,FME引擎只在每次翻译之后才决定是否进行检查。它没有设置计时器来触发检查。这意味着检查可以在指定的时间间隔内进行,但也可以在更长的时间间隔内进行,这取决于转换的频率。 默认值:如果没有这个指令,默认值是0——在每次翻译后检查是否有翻译结果要清除。 |
auto_dir_prefix |
FME引擎配置文件使用两个伪变量 FME_AUTO_DIR_NAME ! FME_AUTO_FILE_NAME ! 分别表示翻译结果目录和文件的唯一名称。默认情况下,名字的形式如下: FME_ < cnnnnnnnnnnnnnn > 例如: FME_a03508997017636 您可以更改默认值FME_特定于站点的值的前缀。属性定义特定于站点的前缀auto_dir_prefix.指令设置目录名的前缀,而AUTO_FILE_PREFIX指令设置文件名的前缀。指令具有以下语法: AUTO_DIR_PREFIX <前缀> AUTO_FILE_PREFIX <前缀> 这些指令最有用的应用是用AUTO_FILE_PREFIX指令。这样做可以使翻译结果文件的名称更好地反映最初的组织。 当这些指令中的任何一个出现时,指定的<前缀>Value被用来代替FME_.当不存在时,前缀默认为FME_默认值。 例如,如果AUTO_FILE_PREFIXNoodle_被指定后,翻译结果文件名将采用以下形式: Noodle_ < cnnnnnnnnnnnnnn > 请注意,未假定前缀值中的尾随下划线字符。如果希望您的前缀具有其中一个字符,则必须将其明确包含它作为前缀值的一部分。 您可以在全局部分和/或配置文件的任何小节中指定这两个指令中的一个或两个。当在全局区段中指定该前缀时,所有本身没有指定前缀的子区段都会使用该前缀。没有指定前缀的子节使用该前缀,而不使用任何已指定的全局前缀。 默认值:当指令不存在时,前缀FME_用来。 |
receip_timeout |
这个超时以毫秒为单位。当FME引擎在这段时间内没有收到任何翻译请求时,FME引擎就会自动关闭。然后,FME服务器系统启动一个新的FME引擎实例。 在大多数操作条件下,该值被设置为建议的默认值零。此设置意味着FME引擎无限期地等待请求,并且永远不会因为缺少传入请求而关闭。 但是,您可以使用此指令在环境中指定有限的超时时段,其中网络监视器关闭了在预设时间内保持不活动的连接。完成FME引擎正在侦听接收请求的连接时,FME引擎不再响应并进入挂起状态。 将该指令设置为非零值将使FME引擎在指定的时间后终止自己。FME引擎有效地中断挂起状态,允许FME服务器系统启动一个新的FME引擎实例,该实例可以再次响应请求。 |
FME_SHARED_RESOURCE_DIR < shared_dirs > |
指定一个或多个根目录的文件路径。这些目录由FME引擎使用,获取不同类型的共享资源,例如自定义格式,变压器和坐标系定义。使用分号分隔多个共享目录文件路径。 默认值: |
FME_SERVER_LOG_FILE |
指定FME引擎的日志文件的文件路径。这个日志文件包含引擎的配置文件和与FME引擎的整体操作相关的其他信息的转储。请注意,此文件不会记录单个翻译请求处理的日志,它将分别记录在各个翻译日志文件中。 对于每个FME引擎,因此,对于每个fmeEngineConfig.txt,您需要指定一个不同的fmeEngine.log文件名。 您可以使用伪变量!fme_instance_name!要为如下创建名为实例名称的日志文件:< FMEServerDir > \ Logs \ fmeEngine_ FME_INSTANCE_NAME ! . log 这个指令包含一个附加的参数,它跟在文件路径后面。取值为真的或者假,指示日志文件是否应附加到每个FME引擎启动的时间。真的表示将文件追加到和假意味着它被覆盖。 默认值:< FMEServerDir > \ Logs \ fmeEngine.log假 |
MACRO_DEF FME_DATA_REPOSITORY < data-repository-dirpath > |
指定FME服务器的Web用户界面用于临时上传数据的目录。在分布式环境中,该目录必须能够被web服务器和FME引擎访问。建议指定UNC路径。 |
FME_ENGINE_MEMORY_ |
自动资源管理器确定FME引擎进程应该使用的最佳总内存。它还动态地将这个总内存最优地分配给请求它的FME中的算法。 FME_ENGINE_MEMORY_REDLINE指令是对FME引擎的提示,即在消耗内存时的攻击性。它介于0到1之间的值(0.5是默认值)。对于更具侵略性的内存使用情况,应使用高于0.5的值。对于更安亚搏在线全的内存使用情况,应使用低于0.5的值。过于激进的风险是内存或机器延迟的过程。保守的风险是,该过程需要更长时间才能完成。 默认值:0.5 |
响应消息 SUCCESS_RESPONSE fally_response. |
的SUCCESS_RESPONSE和fally_response.指令在全球范围内规定。它们定义了FME引擎返回的消息字符串,以便分别成功和翻译失败。这些指令提供了一种机制,FME引擎通过这种机制将结果传回客户端。 这些响应消息的内容仅对客户端有意义。FME引擎只需将邮件传递回客户端,然后以其选择的任何方式处理它。该消息可以包括预定义的伪变量和其他几个指令。 |
专用指令
除了上表中列出的通用Global节指令外,在需要时还可以使用以下特殊用途指令。重要的是要记住分段指令覆盖全局指令。
特殊目的 |
SDE30_PERM_CONNECT |
定义与ESRI SDE服务器的永久连接。在FME引擎执行第一个翻译之前,此连接会提升。然后通过发动机保持连接,因此随后的翻译不需要建立新的SDE连接。 使用此指令时要小心,因为SDE连接是一种有价值的资源,您应该谨慎使用它们。通常,在没有任何永久连接的情况下首先使用FME Engine是一种很好的做法。如果您发现连接和断开SDE的开销太大,您可以稍后考虑使用永久连接。 |
|
<主机> |
SDE服务器正在运行的主机的名称。 默认值:特定场地 |
<实例> |
FME引擎要连接到的SDE实例。 默认值:港口:5151 |
<数据库> |
要连接的实例上的数据库。当SDE在Oracle等数据库上时,指定的值不被使用。尽管您可以指定任何值,但约定是为数据库指定NOTUSED值。 默认值:特定场地 |
<标识> |
登录SDE的用户帐号。 默认值:特定场地 |
<密码> |
用户帐号的用户密码。 默认值:特定场地 |
部分
子节是可选的,当显示它们的指令时,会覆盖全局指令。当一个分段出现时,它用一个关键字命名,客户机应用程序可以通过这个关键字引用它。您可以为各种目的定义多个子部分。
在FME服务器环境中,每个服务(如数据下载,数据流,WF,WMS等)都有自己的小节。
如果作业请求 - 包括来自FME服务器服务的作业请求 - 指定一个小节,FME引擎使用指定的子部分中的指令运行该作业。下表显示了从该服务运行作业请求时FME Server服务和FME引擎使用的相应子部分。
注意:分段指令优先于全局指令。
FME服务器服务 |
FME引擎SUB_SECTION |
|
数据下载服务 |
FILE_DOWNLOAD_SERVICE |
|
数据流媒体服务 |
STREAM_DOWNLOAD_SERVICE |
|
OGC WFS服务 |
WFS_SERVICE |
|
OGC WMS服务 |
WMS_SERVICE |
|
FME服务器控制台 |
server_console_client. |
|
FMEServerJobSubmitter变压器 |
SERVER_JOB_SUBMITTER |
|
职位提交者服务 |
JOB_SUBMITTER_SERVICE |
|
REST服务 |
REST_SERVICE |
|
FME服务器调度程序 |
server_scheduler. |
每个子部分都可以指定FME引擎在处理翻译请求之前和之后的操作。小节还可以定义翻译成功和失败响应消息的转换响应消息,也可以定义FME工作区宏值。
除了它们自己的指令外,子节还可以使用一些Global节可用的指令来覆盖该特定小节的全局值。
通过在翻译请求中通过名称指定一个小节,客户端可以让FME引擎为被请求的翻译执行小节定义的操作。
每一小节的一般格式如下:
sub_section <关键字> \
[<全球指令> \]
[FME_TRANSFORMATION_LOG_DIR < logfile-dirpath > \]
[MACRO_DEF
[PRE_COMMAND < pre-command > \] *
[POST_COMMAND < post命令> \]*
[POST_COMMAND_ALL < post命令> \]*
[POST_COMMAND_SUCCESS < post命令> \]*
[post_command_failure
[SUCCESS_RESPONSE <消息> \]
[FAILURE_RESPONSE <消息> \]
分段指令覆盖全局指令,在下表中描述。
SUB_SECTION指令 |
描述 |
sub_section <关键词> |
识别正在定义的子部分。您可以定义的小节数没有限制。用一个唯一的识别每个子部分<关键词>-不能以…开始FME_. |
全球指令< > |
下列全局指令也可用于将它们重新定义有不同的值: fme_working_dir. FME_MAPPING_DIR auto_dir_prefix. AUTO_FILE_PREFIX SUCCESS_RESPONSE fally_response. 重新定义的指令覆盖了定义它们的特定小节的全局值。 |
FME_TRANSFORMATION_LOG_DIR < logfile-dirpath > |
指定默认目录的路径,该目录包含由FME引擎为该小节生成的逐翻译日志文件。 默认值:< FMEServerDir > \ Logs \ < subsectionSpecificDir > |
MACRO_DEF <宏名字> < macroValue > > |
定义在执行转换时提供给FME工作区的宏值。第一个参数<宏名字>指定宏的名称。 直到下一个指令或结束的所有令牌SUB_SECTION定义形成的值 可以嵌套宏引用。 在定义宏之后,可以使用伪变量(!macroName!)语法在前置和后前置命令、成功和失败响应字符串中使用宏。 一些FME引擎的子部分定义了一个特定的宏称为FME_SERVER_DEST_DIR其值设置为一个唯一的、系统生成的目录的路径。目的是将此目录用作翻译结果文件的输出位置。工作区作者可以将此值作为已发布的参数引用,并将其用作目标数据集的定义良好的位置。 |
预处理和post命令 的PRE_COMMAND和POST_COMMAND指令定义放置在FME引擎配置文件分段中的命令,这些命令在翻译运行之前或之后执行。 控件中可以定义的前置或后置命令的数量没有限制SUB_SECTION.命令按照SUB_SECTION中指定的顺序运行。任何能够从运行FME引擎的操作系统的命令行运行的命令都可以指定为预命令或后命令1在Windows计算机上运行FME Server时,一些操作系统命令可能无法工作。出现这种情况是因为Windows区分了一些操作系统命令是真正的操作系统命令(即,操作系统固有的)和一些程序是操作系统可访问的。为了确保预命令或后命令在Windows环境下工作,请使用如下语法:cmd.exe /c 这些命令可以使用附加指令来更准确地定义如何在失败时处理后续命令。 可用PRE_和POST_COMMANDs在这里列出: |
|
PRE_COMMAND |
定义要运行的操作系统命令前FME引擎执行转换。 |
POST_COMMAND |
看到post_command_success.. |
post_command_success. |
定义要运行的操作系统命令后FME引擎执行转换。此命令只在FME转换成功时运行。 |
post_command_failure. |
定义要运行的操作系统命令后FME引擎执行转换。这个命令只在FME转换失败时运行。 |
POST_COMMAND_ALL |
定义要运行的操作系统命令后FME引擎执行转换。此命令不管FME翻译成功或失败状态如何运行。 |
此外,Pre-和后命令都可以采用可选指令,该指令指示FME引擎在预先或后命令失败时如何行为。可用指令包括以下内容: |
|
!abort_with_error! |
当预或后命令失败时,整个转换将在此点停止。不执行任何进一步的处理,包括任何后续的预或后命令。 |
!continue_warn! |
当预或后命令失败时,转换将继续,并给出一个警告。 |
CONTINUE_NO_WARN ! |
当前置或后置命令失败时,转换将继续,但不会给出任何警告。 |
响应消息 SUCCESS_RESPONSE fally_response. |
的SUCCESS_RESPONSE和fally_response.指令分别定义由FME引擎返回的成功和失败翻译的消息字符串。这些指令提供了一种机制,FME引擎通过这种机制将结果传回客户端。 这些响应消息的内容仅对客户端有意义。FME引擎只需将邮件传递回客户端,然后以其选择的任何方式处理它。该消息可以包括预定义的伪变量和其他几个指令。 |