在 FileMaker Server 上运行脚本
FileMaker Server 托管的文件中的
脚本通常在
客户端上运行。但是,您可以通过使用以下方式在服务器上运行脚本(服务器端脚本):
脚本在 FileMaker Server 上运行有何不同
通过上述任一种方法启动的脚本由 FileMaker Server 的一个组件 FileMaker 脚本引擎 (FMSE) 运行。FMSE 是一个在服务器的不同会话中运行每个脚本的客户端。因此,服务器端脚本:
•没有客户端的上下文(当前布局、搜索结果、排序顺序、记录、全局字段值和局部或全局变量值)
您可以使用“在服务器上执行脚本”脚本步骤中的脚本参数,向服务器端脚本传递客户端上下文的相关信息。服务器端脚本可以使用
转到布局脚本步骤和
执行查找脚本步骤等脚本步骤中的该信息来执行要操作的布局和搜索结果。
•支持多达一百万个字符的脚本参数和脚本结果
•只有在以下两个条件都为真时,才能访问其他 FileMaker Pro 文件:
•文件在同一个主机上
•文件已由启动服务器端脚本的客户端打开,或在文件的“文件选项”对话框中指定的帐户名和密码进行设置
服务器端脚本运行的方式相同,与启动方式无关,除了以下方面:
•如果运行的脚本超过指定的时间限制,可以将 FileMaker Server 计划设置为中断。
处理不支持的脚本步骤
FMSE 支持很多脚本步骤。但是,尝试执行不支持的脚本步骤将返回错误 3(“命令不可用”),跳过不支持的步骤并继续到下一步。要处理不支持的步骤,您的脚本可以使用 If 脚本步骤:
•Get ( 上一个错误 ) 函数 位于步骤
之后,以检查该步骤是否不受支持,然后改为执行支持的步骤。例如,FMSE 不支持“打开文件”脚本步骤,因此在服务器上运行的以下脚本将跳过该步骤并在结果中返回“不支持”。
打开文件 ["发货单备份"]
If [Get ( 上一个错误 ) = 3]
退出脚本 [文本结果:"不支持"]
End If
If [LeftWords ( Get ( 主机应用程序版本 ) ; 1 ) = "服务器"]
# 继续执行 FMSE 支持的脚本步骤
End If
要查看 FMSE 支持哪些脚本步骤,请在 FileMaker Pro 中的脚本工作区中,打开一个脚本,单击
,然后选择“
服务器”。不支持的脚本步骤以不同颜色显示。您还可以参考
脚本步骤参考中每个脚本步骤的“兼容性”表。
在服务器上运行脚本的原因
•通过减少客户端和服务器之间的网络流量来提高性能
•从较慢的客户端上卸载长时间运行的任务,使服务器更快
•启用 FileMaker Go 客户端执行需要
插件的任务,这在 FileMaker Server 上支持,但在 FileMaker Go 上不支持
注释
•如果记录被客户端锁定,则服务器端脚本将无法访问未提交的数据或更改这些记录的内容。
•运行服务器端脚本将打开和关闭包含这些脚本的文件。因此,在该脚本开始时,会激活 OnFirstWindowOpen
脚本触发器,在脚本结束时激活 OnLastWindowClose。
•服务器端脚本可以使用
执行脚本脚本步骤来执行
子脚本,只有在这些子脚本位于同一服务器的文件中且已经由该客户端打开时,这些脚本才可以在服务器上运行。
•脚本在客户端上运行时,服务器端脚本不能导致客户端显示 FileMaker 警报消息,因此服务器端脚本始终按照
设置错误捕获脚本步骤设置为“打开”执行。在服务器端脚本中使用
Get ( 上一个错误 ) 函数来处理错误条件。要帮助您解决问题,也会将错误写入 FileMaker Server 中的事件日志。
•客户端无法中断服务器端脚本。但是,服务器端脚本可以中断,条件是:
•服务器管理员停止脚本,它以单独的客户端显示,可以在 FileMaker Server 管理控制台中断开连接
•运行的脚本超过启动它的 FileMaker Server 计划中指定的时间限制
•在服务器端脚本中,与硬件相关的函数,比如 Get (系统 IP 地址),是从 FileMaker Server 的数据库服务器组件中返回信息,而不是客户端。