斯潘8
斯潘4
本教程将介绍如何将变更逻辑合并到工作区中,以仅传播那些或新的或更新的特性,不缓存整个数据集。
这将通过创建一个sqlite数据库文件来完成,以存储工作区的名称和上次运行时间。最后一次运行时间将用于与道路工程数据集上的时间戳进行比较,并发送新功能或更改功能的通知。
下载roadworks.fmw,花点时间查看工作区。
工作区正在阅读温哥华所有计划的道路工程,生成JSON消息通知FME服务器。
为了确保工作区正确运行,您需要在FME服务器中创建一个名为roadworks的新主题。在FME服务器的Web UI中,导航到“通知>主题>新建”。
创建主题后,检查roadworks.fmw中的fmeservernotifier连接设置,并通知roadworks主题。
在FME服务器Web UI中,开始监控道路工程主题。
运行工作区。
如果工作区运行正确,对于工作区中处理的每个道路工程功能,您应该看到一条主题消息。
要记录上次运行工作区的时间,我们将创建一个要在此工作区之后运行的工作区(如果成功),以记录工作区和运行时的名称。
在FME服务器中,创建一个名为“roadworkssuccess”的新主题并开始监视它。将roadworks.fmw工作区发布到fme服务器。确保编辑作业提交者属性,将“道路工作成功”作为主题发布到“成功”上。
一旦发布工作区,打开一个新选项卡并导航到FME服务器Web UI以运行工作区。完成后,检查主题监视选项卡。
您应该会看到一条JSON消息出现,以及成功运行的作业的详细信息。
接下来,我们需要创建一个可以解释该JSON并存储工作区名称和运行时的工作区。将JSON复制粘贴到文本编辑器中,并将其保存为JSON文件。这将是下一个工作区的输入。
打开空白工作区,并读取刚刚保存的JSON文件。
然后添加一个sqlite非空间数据库编写器,只创建2个属性-workspacename和lastrun。
在读写器之间添加一个datetimeformatter和一个substringxtractor。
有关DateTimeFormatter属性,请参见以下内容:
有关substringextractor属性,请参见以下内容:
将子字符串连接到workspacename属性,并从time开始连接到lastrun属性。
运行工作区并检查是否成功。
现在我们要将sqlite非空间数据库上传到fme服务器,所以工作区可以访问它。导航到资源>数据。创建一个名为changedetection的新文件夹,并在其中上载sqlite非空间数据库。
选择上载的文件,然后单击“属性”。复制系统路径,因为我们将在工作区中使用它作为目标路径。
在工作区的导航器中,将系统路径粘贴到目标数据集参数:
在JSON阅读器和DateFormatter之间添加一个记录器转换器。这可用于检查工作区作业日志中的正确作业信息。
将此工作区发布到FME服务器。在这个例子中,发布的工作区称为WorkspaceRunRecorder.fmw。
不要用它上传任何数据文件。
向通知服务注册工作区,订阅roadworkssuccess主题并设置参数以将主题消息获取到源JSON。
工作区发布后,转到FME服务器并运行roadworks.fmw。您应该能够从已完成的作业中检查workspacerunrecorder.fmw是否在roadworks.fmw之后运行。
现在我们需要从sqlite非空间数据库读取上一次运行时,以确定是否有任何道路工程数据是新的。
将上次运行工作区的时间与道路工程数据更新的时间进行比较,使用sqlite非空间数据库获取上次运行时间,使用date time计算器计算日期时间的差异。
下载先前上传到FME服务器的roadworks.fmw。
为了测试,在上传到FME服务器之前读取创建的sqlite数据库。把这个连接到代替造物主的特征读取者。
确保FeatureReader属性处理参数设置为“合并发起程序和结果”:
为了确定道路工程数据是否是新的,在现有的datetimecalculator和jContemplator之间添加datetimecalculator和tester。
在DateTimeCalculator中,设置用于计算日期时间间隔的参数,以start datetime作为最后一个运行属性,end datetime作为结果datetime属性。将结果类型设置为秒,并注意结果属性。
在测试器中,测试datetimecalculator的结果是否有任何正结果(>0)。
运行工作区进行测试。
如果成功,将sqlite数据库替换为指向FME服务器位置的路径,与第一个版本的工作区中的路径相同。将工作区重新发布到FME服务器。
现在,工作区应该只通知FME服务器数据集中的新道路工程。您可以通过等待作业运行两次来测试这一点。而不是主题监控页面中出现的所有道路工程,只应出现少数或没有。
这个过程可以作为订阅链接到另一个FME服务器工作区。工作区可用于生成电子邮件,检查地理围栏内的道路工程(如果使用georss feed)或生成道路工程的图像以通知某人。
?2019安全亚搏在线软件公司|合法的