关于在 FileMaker Server 上运行脚本
位于 FileMaker Server 所托管文件中的
脚本通常在
客户端上运行。但是,您可以通过以下方法在服务器上运行脚本(服务器端脚本):
在 FileMaker Server 上运行脚本的不同之处
通过以上两种方法启动的脚本由 FileMaker Script Engine (FMSE) 运行,它是 FileMaker Server 的组件。FMSE 是一个在服务器上以单独的会话运行每个脚本的客户端。因此,服务器端脚本:
•不具有客户端的上下文(当前布局、搜索结果、排序顺序、记录、全局字段值,以及本地或全局变量值)
您可以使用“在服务器上执行脚本”脚本步骤将客户端上下文的有关信息传递到服务器端脚本。服务器端脚本可以使用
转到布局脚本步骤和
执行查找脚本步骤等脚本步骤中的信息指定要进行操作的布局和搜索结果。
•支持多达一百万个字符的脚本参数和脚本结果。
•只要在以下两个条件为 true 时才能访问其他 FileMaker Pro 文件:
•文件位于同一主机上
•文件已由启动服务器端脚本的客户端打开,或者通过在文件的“文件选项”对话框中指定的帐户名和密码进行设置。
服务器端脚本的运行方式相同,与其启动方式无关,但以下情况除外:
•如果运行脚本超过指定的时间限制,FileMaker Server 计划可设置为中断。
处理不受支持的脚本步骤
许多脚本步骤受 FMSE 的支持。但是,尝试执行不受支持的脚本步骤会返回错误 3(“命令不可用”),跳过不受支持的步骤,并且继续进行下一步。要处理不受支持的步骤,您的脚本可以使用 If 脚本步骤:
•让
Get ( 上一个错误 ) 函数位于步骤之后,以检查步骤是否不受支持,然后执行支持的步骤。例如“打开文件”脚本步骤不受 FMSE 支持,因此服务器上运行的以下脚本将跳过该步骤并在结果中返回“不受支持”。
打开文件 [打开隐藏的窗口: 关闭 ; "发货单备份"]
If [ Get (上一个错误) = 3 ]
退出脚本 [ 文本结果: "不受支持" ]
End If
If [ PatternCount ( Get (应用程序版本) ; "服务器" ) > 0 ]
# 继续执行受 FMSE 支持的脚本步骤
End If
要查看受 FMSE 支持的脚本步骤,在 FileMaker Pro 的“脚本工作区”中,打开脚本,单击
![“兼容性”按钮](../FMP_Help/images/icon_sw_compat.png)
,然后选择“
服务器”。不受支持的脚本步骤以不同颜色显示。您还可以参阅兼容性表,了解
脚本步骤参考中的每个脚本步骤。
在服务器上运行脚本的原因
•通过减少客户端与服务器之间的网络流量改进性能
•从较慢客户端卸载长时间运行的任务,并将其转移到较快的服务器
•让 FileMaker Go 客户端执行需要
插件的任务,它们在 FileMaker Server 上受支持,但在 FileMaker Go 上不受支持
注释
•如果记录被客户端锁定,则服务器端脚本将无法访问未提交的数据或更改这些记录的内容。
•只有子脚本位于同一服务器的文件中并已由客户端打开时,服务器端脚本才可以使用
执行脚本脚本步骤执行
子脚本,这些子脚本也在服务器上运行。
•脚本在客户端上运行时,服务器端脚本不能使客户端显示 FileMaker 警报消息,因此服务器端脚本会一直执行,如同将
设置错误捕获脚本步骤设置为“开启”一样。使用服务器端脚本中的
Get ( 上一个错误 ) 函数可以处理错误条件。为帮助您排除问题的故障,错误也会写入 FileMaker Server 上的事件日志。
•客户端无法中断服务器端脚本。但是,在以下情况下,可以中断服务器端脚本:
•服务器管理员停止脚本,它会显示为独立的客户端并且可从 FileMaker Server Admin Console 断开。
•运行的脚本超出启动它的 FileMaker Server 计划中指定的时间限制
•在服务器端脚本中,与 Get (系统 IP 地址)等硬件相关的功能从 FileMaker Server 的数据库服务器组件而不是客户端返回信息。