span8
span4
本教程将研究如何将更改逻辑合并到工作区中,以只传播新或更新的特性,而不缓存整个数据集。
这将通过创建一个SQLite数据库文件来存储工作空间的名称和最后一次运行时来实现。最后的运行时间将用于与道路工程数据集上的时间戳进行比较,并发送新特性或更改特性的通知。
下载道路施工。FMW,花点时间查看工作空间。
工作空间读取温哥华所有计划的道路工程,并生成JSON消息来通知FME Server。
要确保工作空间正确运行,您需要在FME Server中创建一个名为roadworks的新主题。在FME服务器的Web UI中,导航到Notifications > Topics > New。
创建主题后,检查道路工程中的FMEServerNotifier连接设置。FMW,它正在通知道路工程主题。
在FME Server Web界面中,开始对道路工程主题进行监控。
运行工作空间。
如果工作空间正确运行,您应该看到工作空间中处理的每个道路工程特性都会出现一个主题消息。
为了记录工作空间最后一次运行的时间,我们将创建一个工作空间在这个工作空间之后运行(如果成功的话),以记录工作空间和运行时的名称。
在FME服务器中创建一个名为“RoadworksSuccess”的新主题,并开始监控它。发布道路施工。fmw工作区到FME服务器。确保您编辑了Job Submitter属性,将RoadworksSuccess设置为成功时要发布的主题。
发布工作空间后,打开一个新选项卡并导航到FME Server Web UI来运行工作空间。完成后,检查主题监视选项卡。
您应该会看到一个JSON消息出现,其中包含成功运行作业的详细信息。
接下来,我们需要创建一个可以解释该JSON并存储工作区名称和运行时的工作区。将JSON复制并粘贴到文本编辑器中,并将其保存为JSON文件。这将是下一个工作区的输入。
打开一个空白工作区,并读取刚刚保存的JSON文件。
然后添加一个SQLite非空间数据库写入器,并只创建2个属性—WorkspaceName和lastun。
在读取器和写入器之间添加一个DateTimeFormatter和一个SubstringExtractor。
DateTimeFormatter属性见下面:
SubstringExtractor属性见下面:
将_substring连接到WorkspaceName属性,将timeStarted连接到lastun属性。
运行工作区并检查是否成功。
现在,我们要将SQLite Non-Spatial数据库上传到FME服务器,以便工作空间可以访问它。导航到资源>数据。创建一个名为ChangeDetection的新文件夹,并在那里上传SQLite Non-Spatial数据库。
选择上传的文件,单击“属性”。复制系统路径,因为我们将在工作空间中使用它作为目标路径。
在工作区的导航器中,将系统路径粘贴到目标数据集参数:
在JSON阅读器和DateFormatter之间添加一个Logger转换器。这可以用来检查工作空间作业日志中是否有正确的作业信息。
将此工作区发布到FME服务器。在本例中,发布的工作区名为WorkspaceRunRecorder.fmw。
不要用它上传任何数据文件。
向Notification Service注册工作区,订阅RoadworksSuccess主题,并设置Parameter以获取Source JSON的topic Message。
当工作区发布后,转到FME服务器并运行Roadworks.fmw。您应该能够从已完成的作业中检查WorkspaceRunRecorder。跑在roadworks后面。
现在,我们需要从SQLite Non-Spatial数据库读取最后一次运行时,以确定Roadworks数据是否有新的。
要比较工作空间最后一次运行的时间和道路工程数据更新的时间,使用SQLite Non-Spatial数据库获取最后一次运行时间,并使用DateTimeCalculator计算出日期时间的差异。
下载道路施工。之前上传到FME服务器的fmw。
为了进行测试,在上传到FME Server之前读取创建的SQLite数据库。将其连接到featuereader,而不是Creator。
确保featuereader属性处理参数被设置为“合并启动器和结果”:
要确定是否有任何道路工程数据是新的,在现有的DateTimeCalculator和JSONTemplator之间添加一个DateTimeCalculator和Tester。
在DateTimeCalculator中将参数设置为Datetimes之间的计算间隔,使用Start Datetime作为lastun属性,End Datetime作为_result_datetime属性。将结果类型设置为Seconds,并记录Result属性。
在Tester中,测试DateTimeCalculator的结果以获得任何积极的结果(> 0)。
运行要测试的工作区。
如果成功,将SQLite数据库替换为工作区第一个版本中FME Server位置的路径。将工作区重新发布到FME Server。
现在工作区应该只通知FME服务器关于数据集中的新道路工程。您可以通过等待作业运行两次来进行测试。不是所有的道路工程出现在主题监控页面,只有少数或没有应该出现。
这个流程可以作为订阅链接到另一个FME服务器工作区。工作区可用于生成电子邮件、检查geofence内的道路工程(如果使用GeoRSS feed)或生成道路工程的图像以通知某人。
©2020 S亚搏在线afe Software Inc |法律