评测中篇
我们会在本篇着重介绍面向开发者的新特性。布局对象窗口,为开发者创建、维护复杂的布局提供了更便捷的工具;数据查看器及表达式编辑器,让开发者在查验记录内容、变量以及表达式时更加智能;Base64Enode 编码函数等新增函数…
布局对象窗口
在上篇中,我们了解到通过布局对象窗口,开发者可以按树状结构查看当前布局下的所有元素并进行选择、隐藏、命名或者指定层级顺序等操作。现在我们来看看这套新工具具体带来了哪些功能。
查看
这是我们体验布局对象所使用的布局
在上图所示的演示布局里,如果没有布局对象窗口的帮助,我们只能看到两个按钮成组的对象、3个重叠的矩形元素(这几个莫名其妙的元素只是为了测试 :P),以及右侧包括3个标签页的选项卡控件。
但实际上呢?由于选项卡控件不能针对其中某个标签按条件显示或隐藏,实际项目中常会遇到多个选项卡控件叠加的情况,要想查看或选择它们,得要多次调整元素们的 Z 轴层级,或者解开群组或重新成组,非常繁琐。
现在,借助布局对象窗口(左侧),您终于有办法清楚的知道布局中真实的情况:布局中有4个重叠的矩形而不是3个,选项卡空间有两组(而且非常近似),选项卡最后的标签页内包含一个字段的入口,所有的细节都历历在目。
在使用布局对象窗口这个新功能后,我们认为这对基于 FileMaker 平台进行大型系统开发提供了更好的支持,期待在后续的升级中能有更多的惊喜!
过滤
提供了丰富的过滤类型
左上角的过滤菜单,为我们提供了文本、图形、字段、按钮、面板控件、入口、图表以及 Web 查看器 8 种界面元素的类型过滤菜单。当我们需要针对所有的 Web 查看器进行状态检查或参数配置时,通过这个菜单就能很容易的找出需要的对象来。
搜索
搜索功能非常灵活
搜索功能与过滤相比更加灵活,您可以直接输入界面元素的关键词,比如“矩形”或者“Web”,当然您也可以输入自定义命名的关键词。从上面的测试可以看出,凡是元素名称中包含的字符都可以被搜索,甚至您直接输入空格,命名中包含空格的元素也会被找到。
选择
具有“穿透性”的选择能力
通过布局对象窗口来选择对象非常容易,树状结构非常清晰的展现出了界面元素相互之间的关系,您可以很轻松的选择到被遮盖元素,或者层层嵌套之下的元素。可以想象,在没有布局对象窗口前,我们需要经过多少环节才能选中它们进行操作。
显示/隐藏
简化布局对象的显示
开发者可以针对某个/组元素进行显示隐藏的切换,也可以通过邮件菜单“隐藏前面的对象”或“隐藏前面和后面的对象”来确保视图的清爽。
排序及其他
拖拽排序、命名或其他操作
像动图示例中表现的那样,我们可以直接拖拽进行布局对象的排序,或者对需要的对象进行命名便于脚本访问,也可以设置条件格式化、设置脚本触发器等。
从 URL 插入
也许从 URL 插入会成为您最常用的功能
支持 SSL 证书验证、直接设置为变量、支持 cURL 选项,提供了除 REST 函数、OAuth、Data API 之外的又一重要的,让 FileMaker 平台与第三方系统交换数据的重要途径。
验证 SSL 证书
支持 SSL 证书验证,使得通过 URL 交换数据有了安全保证,对于没有通过验证的场景,系统会给予提示由用户选择停止脚本或忽略提醒继续操作,或者直接停止操作。
目标-变量
现在,来自 URL 的内容可以直接创建为新的变量,或者追加/替换已有的变量内容。这一改进让灵活性得到了极大的增强,同时又降低了对表结构的影响和依赖。
比如我们的业务场景是需要根据关联网站的内容更新决定是否发送通知邮件,在以前我们必须创建一个全局字段,将数据从 URL 获取后放到字段中再取出进行处理、判断… 相信有过经历的开发者对此不难理解。
cURL 参数
对于很多 FileMaker 开发者来说,cURL 可能是个比较陌生的东西,我们看看维基上如何介绍 cURL 的:
cURL是一个利用URL语法在命令行下工作的文件传输工具,1997 年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL 还包含了用于程序开发的libcurl。
cURL 支持的通訊協定有 FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。
libcurl 支持的平台有 Solaris、NetBSD、FreeBSD、OpenBSD、Darwin、HP-UX、IRIX、AIX、Tru64、Linux、UnixWare、HURD、Windows、Symbian、Amiga、OS/2、BeOS、Mac OS X、Ultrix、QNX、BlackBerry Tablet OS、OpenVMS、RISC OS、Novell NetWare、DOS等。
cURL 拥有近 500 个选项/参数,FileMaker Pro 16 中的 cURL 参数支持 86 个选项,包括部分 FileMaker 特有的。那么,听起来这么厉害的cURL 选项,究竟可以做什么呢?您可以理解为,FileMaker 从此拥有了一套可充分定制的从网络上下载、上传资料的强大工具,能下载图片,能上传数据,也能访问 FTP,甚至还可以像常见的下载工具一样支持断点续传:
- 指定认证方式,比如 HTTP 基本验证或 CA 证书验证;
- 设置连接最大请求时间,10秒没有成功就中断连接;
- 连接失败如何处理,是否显示 HTTP 提示;
- 是采用 POST 方式连接,还是采用 GET 方式,甚至 Delete;
- 连接是否使用代理,如果需要可设置代理信息;
- 是否使用断点续传,以及从哪个位置开始续传;
- 指定传输内容编码,是否更改字串换行方式;
- …
也许这样说还是很抽象,来看一下简单的示例:我们尝试获取 http://www.filemaker.com/cn 的头信息,在头信息中可以了解到服务器类型、缓存设置、默认编码等,只需要使用添加 "-I"
cURL 选项即可:
您可以看看不添加 cURL 参数后获取的内容是什么
配合新增的 REST 系列函数及编解码函数,cURL 选项使 FileMaker 拥有了非常强大的网络数据交换能力。FileMaker Pro 16 文档提供了有关 cURL 的部分示例,可以看到它与其他函数配合使用的场景。
对 cURL 参数有兴趣的朋友,则可通过 这本免费电子书 进行学习,了解 cURL 的强大之处。
变量
我们看到从 URL 插入脚本步骤允许将变量作为插入目标。此外,这次 FileMaker 升级还有插入计算结果、插入当前日期、插入当前时间、插入当前用户名、插入文件和插入文本 6 个脚本步骤支持变量目标。甚至,在指定外部数据源的路径时,也可以使用变量。
对变量可用场景的增加,进一步提升了开发的灵活性和效率。
编码
FileMaker Pro 16 更新/增加了不少编码相关的函数。Base64EncodeRFC 为 Base64Encode 函数提供了 RFC 标准支持,HexDecode、HexEncode 允许以 16 进制的形式编码/解码字串或容器数据,TextDecode、TextEncode 则为交换不同编码的文本提供了必要的工具,允许开发者自由掌控字符编码及换行编码方式。
Base64EncodeRFC
我们在上篇提到,增强的 Base64Encode 版本 Base64EncodeRFC 支持 RFC 标准,可以更加容易的控制转码后字串的形式,我们来看看示例:
RFC编号 | 编码文本的方式 |
---|---|
1421 | 每行最大字符数为 64,CRLF 格式(Windows 平台默认方式)换行 |
2045 | 每行最大字符数为 76,CRLF 格式换行 |
3548 | 不增加换行符 |
4648 | 不增加换行符 |
4880 | M每行最大字符数为 76,CRLF 格式换行, 附带 24位 CRC 校验值 |
Base64EncodeRFC 支持的 RFC 标准 如上表所示,对照动图的实例,相信您已经知道支持 RFC 标准会有多方便了。
HexEncode & HexDecode
新增的 16 进制编解码器,让开发者处理非字串数据多了一种途径。
16 进制编码的图标素材
在以前,UI 所需的图标等小文件大多使用容器类型的字段存储,现在可以将他们直接编码后存储到表中,以适应某些特别的应用场景。
另外可能的用法是,将签名等非字串类数据进行编码,如此便可以更方便的进行加密处理,提升此类数据的安全级别。
TextEncode & TextDecode
编码名称 | 适用场合 |
---|---|
utf-8 | Unicode |
iso-8859-1 | Latin 1 |
windows-1251 | Cyrillic |
shift_jis | Japanese |
windows-1252 | Windows |
gb18030 | Simplified Chinese |
euc-kr | Korean |
big5 | Traditional Chinese |
Macintosh | Mac Roman |
文本编解码函数,为不同语系、不同换行方式的文本兼容与转换提供了支持。FileMaker 给出的类型并不多,但选择的标准都较好的平衡了务实和最新两个要求。
以简体中文 Simplified Chinese 为例,并没有提供常见的 GB2312 或者 GBK 字符集,而是选择了向下兼容这两种标准的 GB18030。了解这部分知识的朋友可能会好奇,为什么没有直接选择最新的 GB13000 标注呢?其原因就是我们认为 FileMaker 务实的原因——GB13000 等同于 ISO10646.1 即 Unicode 标准——没必要提供重复冗余的选项增加学习、使用成本。
稍显遗憾的是,TextEncode / TextDecode 函数目前只能操作容器字段的数据,而不能直接对变量或其他类型的字段进行处理,这一定程度上限制了这对函数的使用场景。
JSON
在上篇中,我们介绍了 FileMaker Pro 16 新增 6 个 JSON 函数的名称和功能,并以 JSONGetElement 函数为例进行了基本展示。
- JSONSetElement,在 JSON 数据中添加或修改由对象名、数组索引或路径指定的元素;
- JSONGetElement,在 JSON 数据中查询由对象名、数组索引或路径指定的元素;
- JSONListKeys,列出 JSON 数据中由对象名、数组索引或路径指定的元素的对象名(键)或数组索引;
- JSONListValues,列出 JSON 数据中由对象名、数组索引或路径指定的元素的值;
- JSONFormatElements,设置 JSON 数据中元素的格式,使其更容易辨认;
- JSONDeleteElement,删除由对象名、数组索引或路径指定的 JSON 数据元素;
相对于 JS、Python 等“传统”开发语言,FileMaker 这次提供的 JSON 数量上算是不少了,涵盖了 JSON 数据的创建(JSONSetElement)、编辑(JSONDeleteElement)、检索(JSONGetElement、JSONListKeys、JSONListValues)以及格式化(JSONFormatElements)。
由于 FileMaker 本身缺少“对象”这类概念,无法像 JS 或 Python 一样进行更简单的转换。举例来说,如果需要将搜索出来的记录创建为 JSON 数据,使用 JSONSetElement 函数按如下方式创建:
JSONSetElement ( "{}" ;
[ "id" ; "FB4" ; JSONString ] ;
[ "name" ; "Vanilla Cake" ; JSONString ] ;
[ "price" ; 17.5 ; JSONNumber ] ;
[ "stock" ; 12 ; JSONNumber ] ;
[ "category" ; "Cakes" ; JSONString ] ;
[ "special" ; true ; JSONBoolean ]
)
注意到了吗,中间的内容仍需要通过文本操作函数、ExecuteSQL 函数等结合生成。在这一点上,我们期待下一次升级有进一步的增强改进。
扩展权限
扩展权限,是 FileMaker Pro 16 在安全性上的重要提升之一,为开发者更好的控制系统访问途径和权限提供了更精细的控制工具。
FileMaker Pro 15 扩展权限
FileMaker Pro 16 扩展权限
fmurlscript 以及 fmrest 是 16 新增的权限类型,可以对通过 URL 执行 FileMaker 脚本或是通过 FileMaker Data API 访问数据进行限制。fmextscriptaccess 是对禁止 AppleScript、ActiveX 执行脚本的权限—— fmscriptdisabled——的改进。由此可以感受到,FileMaker 在平台兼容能力的提升(从早先的 AppleScript 上升到现在的 AppleEvent )以及开放态度的变化(以前是控制谁不可以访问该权限,现在则是谁可以访问该权限。
也因为这组扩展权限的改进,需要对涉及使用 fmp 自定义协议调用脚本的项目进行更新——因为默认 fmurlscript 权限是关闭的。
本篇结语
在本篇介绍的布局对象窗口、表达式编辑器、扩展权限级还是我们比较熟悉的概念,而 REST 系列函数、编码系列函数(以及加解密函数),对于大部分 FileMaker 开发者来说,可能会显得比较陌生。
正是这些陌生的新“伙伴”,让 FileMaker 更像是“标准”的开发工具,让 FileMaker 更容易与“标准”的 IT 系统进行兼容互通,让此次更新成为 FileMaker 系列值得记录的一个版本。