主题中的问题:“nodejs” https://knowledge.亚搏在线safe.com/questions/topics/single/44335.html网站 “nodejs”主题的最新问题 javascript/nodejs pluginbuilder…FME中javascript的未来 https://knowledge.亚搏在线safe.com/questions/50898/javascriptnodejs-pluginbuilderfuture-of-javascript.html

我看过你的pluginbuilder API,还可以使用JavaScript Transformer进行一些操作。我想知道是否有意为nodejs开发PluginBuilderAPI?我认为这真的很有趣,因为有这么多的开发人员,以及在nodejs中可用的库,看起来非常适合于FME。

也,从我自己的角度来看,我正在做一些D3可视化,我想作为一个变压器纳入到FME。这将涉及到使用一些外部的库,这些库也是变压器中需要的。

我已经看到了,例如/node_模块在模块路径中,并且能够作为一个测试将lodash放到其中,并在javascript中要求它。不确定这是否是您推荐的方法?

不管怎样,现在关于在知识库中使用javascript和nodejs的讨论还不多,也许有人可以分享这里是否有未来。

谢谢,汤姆

JavaScript 诺迪斯 清华大学,2017年8月17日格林尼治标准时间15:06:45 T2
从Postgis到Amazon SQS的流式功能-在jlutherthomas的kbentry上进行FME过程 https://knowledge.亚搏在线safe.com/articles/44339/streaming-features-from-postgis-to-amazon-sqs-proc.html

使用Amazon SQS,或者,任何队列服务都是存储不能或不需要立即处理的数据的好方法。它还提供了一些保证,即只有在处理完某个特性之后,它才会从队列中删除。对FME中的SQS有一个很好的概述。在这里.

与前面讨论的两种方法不同(http-post-to-a-topic和websockets)。使用AmazonSQS不需要长期的工作流程或大量的通知(尽管它可以两者兼备!).

FME使与SQS的交互变得容易,通过通知服务(创建SQS发布/订阅)或使用可用的SQS变压器。在本练习中,将使用sqsreceiver转换器接收来自sqs队列的消息。此变压器允许您指定变压器何时停止接收功能,要么:永不,当队列为空或在固定数量的消息之后。这使得运行作业和使用引擎具有更大的灵活性。

每次在postgis中的表中更改一个特征(行)时,node.js接收有关该功能的信息。在javascript文件中,当node.js从postgis接收到一个特性时,它使用awsdk模块将特性推送到AmazonSQS队列中。

var pg=require('pg');var request=require('request');var pgnostring=“postgres://username:password@server:port/database”;var aws=require('aws-sdk');aws.config.update(accesskeyid:'accesskey',secretaccesskey:'secretaccesskey');var sqs=new aws.sqs(region:'region');console.log(“向sqs发送消息”);pg.connect(pgconstring,函数(Err)客户端)if(err)console.log(err);}client.on(“通知”,函数(msg)//console.log(msg);//console.log(json.parse(msg.payload));db_body=json.parse(msg.payload);var sqsmsg=payload:'a message'var sqsparams=message body:json.stringify(db_body),queueurl:'queueurl'sqs.sendmessage(sqsparams,函数(Err)data)if(err)console.log('err',错误;}console.log(data););(});var query=client.query(“listen watchers2”););

完整的工作区在这里可用:SQS-接收器-完成.fmw

试试看:

有关需求的更多信息,请参见教程的起始页。

修改postgis2sqs.js文件以匹配数据库和AWS SQS连接要求。

在命令提示窗口中,导航到节点可执行文件所在的文件夹。在命令窗口中,键入:node Postgis2sqs.js后

如果什么都没有发生,那很好。代码中的任何错误都将在此处报告。

在FME工作台中,添加一个sqsreceiver变压器并填写Amazon sqs连接详细信息。将“停止接收”参数设置为“队列为空时”。

现在是时候去编辑了,从Postgis表中创建或删除一些功能。这可以使用FME(在单独的工作空间中)或使用GIS。

创建了一些功能之后,删除或更改您应该能够在AWS SQS管理控制台中看到这些更改:

一旦队列中有了特性,就可以运行工作区。您应该发现从SQS接收到相同数量的特性并将其输出到日志消息中:

因为sqs_content属性是json,JSonFlatener将有助于将每个键转换为一个属性。然后,可以使用attributeManager创建一条消息,用于通知某人功能的更改。

通知服务 FMESER 实时性 邮政地理信息系统 话题 亚马逊网络服务 REST API 网络套接字 FMEU2017 改变 HTTP邮局 诺迪斯 小比特 SQS接收器 太阳2017年5月14日07:05:04格林尼治标准时间 圣卢瑟马斯
使用jlutherthomas的kbentry上的WebSockets将PostGIS的功能流式传输到FME https://knowledge.亚搏在线safe.com/articles/44338/streaming-features-from-postgis-to-fme-using-webso.html

有关作为WebSocket服务器的FME服务器的信息,见WebSocket文档.

每次在postgis中的表中更改一个特征(行)时,node.js接收有关该功能的信息。在javascript文件中,当node.js从postgis接收到一个特性时,它使用WS模块将特性流式传输到FME服务器。

const websocket=require('ws');var pg=require('pg');var request=require('request');var pgconstring=“postgres://username:password@server:port/database”;const ws=new websocket('ws://fmeserver:7078/websocket/',headers:“ws_op”:“打开”,“ws-stream-id”:“postgres”)console.log(“预打开就绪状态”+ws.ready state);ws.on(“打开”,function()ws.send('“ws_op”:“打开”,“ws-stream-id”:“Postgres”,“ws_msg”:“open”'););pg.connect(pgconstring,函数(Err)客户端)if(err)console.log(err);}else console.log('hello');client.on(“通知”,函数(msg)console.log(“msg is”味精;有效载荷;//db_body=json.parse(msg.payload);msgtype=typeof msg.payload;sendmsg2=“”ws_op“:”发送“,“ws-stream-id”:“Postgres”,“ws_msg”:'+msg.payload+'');ws.send(发送msg2);});var query=client.query(“listen watchers2”););

如果正在编辑大量数据,这将非常有用。而不是每次都向主题发送通知并为每个功能触发工作区,WebSockets允许使用一个工作区来处理出现的功能。

WebSockets可以设置为FME服务器中的发布,并且每个消息都发布到一个主题中。

也可以使用WebSocketReceiver转换器接收WebSocket。必须指定相同的参数:WebSocket服务器URL和流ID。

完整的工作区在这里可用:WebSocket-接收器-完成.fmw

试试看:

有关需求的更多信息,请参见教程的起始页。

修改postgis2ws.js文件以匹配数据库和FME服务器连接要求。

在命令提示窗口中,导航到节点可执行文件所在的文件夹。在命令窗口中,键入:node PASGIS2WS JS

如果什么都没有发生,那很好。代码中的任何错误都将在此处报告。

在FME工作台中添加一个创建者,一个WebSocketReceiver和一个记录器。需要设置WebSocketReceiver连接前导码以连接到postgis2ws.js文件中的流,在这个例子中,websocket流是“postgres”。

“ws_op”:“打开”,“ws-stream-id”:[“postgres”]

工作区完成后,运行它。只有一个功能可以从创建者移动到WebSocketReceiver。

您可能会在转换日志中注意到WebSocketReceiver正在等待传入的WebSocket消息。此工作区将继续运行,直到取消为止,并将一直等待消息。

WebSocketReceiver:正在尝试连接到端口“7078”上的主机“localhost”。WebSocketReceiver:已成功连接到端口“7078”上的主机“localhost”。WebSocketReceiver:与远程主机执行握手WebSocketReceiver:握手成功WebSocketReceiver:传输的连接前言WebSocketReceiver:正在等待传入的WebSocket MES圣人…

现在是时候去编辑了,从Postgis表中创建或删除一些功能。这可以使用FME(在单独的工作空间中)或使用GIS。

此工作区可以发布到FME服务器,并作为计划运行或设置。工作区将在作业运行的整个过程中使用一个引擎。这可能比快速跑要便宜,如果有很多功能作为主题信息出现,则会不断减少工作,为每个功能创建一个作业。

当运行作业或调度时,FME服务器现在具有高级属性:

这将允许作业继续,直到取消或取消,直到设置的到期时间。这将允许WebSocketReceiver工作区在工作时间或数据库表上存在活动时运行。

因为输出属性是json,JSonFlatener将有助于将每个键转换为一个属性。然后,可以使用attributeManager创建一条消息,用于通知某人功能的更改。

结果:

创建功能时,在postgis中删除或更改的特性应该开始通过工作区进行流式处理。由于日志转换器的存在,发送的消息将显示在翻译日志窗口中。

可以轻松扩展此工作区,以开始对新功能执行验证过程或通知相关方。

通知服务 FMESER 实时性 邮政地理信息系统 话题 亚马逊网络服务 REST API 网络套接字 FMEU2017 WebSocketReceiver 改变 HTTP邮局 诺迪斯 小比特 SQS接收器 太阳2017年5月14日06:32:18格林尼治标准时间 圣卢瑟马斯
从jlutherthomas的kbentry上的node.js向FME服务器发出HTTP POST请求 https://knowledge.亚搏在线safe.com/articles/44337/http-post-requests-to-fme-server-from-nodejs.html

每次在postgis中的表中更改一个特征(行)时,node.js接收有关该功能的信息。在javascript文件中,当node.js从postgis接收到一个特性时,它使用请求模块向fme服务器发出一个get请求,请求令牌。带着返回的令牌,node.js能够向fme服务器发出post请求,发布有关已创建的,删除或修改主题的功能。

var pg=require('pg');var request=require('request');var pgconstring=“postgres://username:password@server:port/database”;pg.connect(pgconstring,函数(Err)客户端)if(err)console.log(err);}client.on(“通知”,函数(msg)db_body=json.parse(msg.payload);request.get('http://fmeserver/fmetoken/generate?user=username&password=password&update=false',json:真,功能(错误,响应,body)console.log(response.body);token=response.body;topicurl='http://fmeserver/fmesrest/v3/notifications/topics/sample_topic/message?fmetoken='+token console.log(“主题URL正文为”+topicURL);请求后(topicurl,{Boo:dByBoobe,JSON:真的,功能(错误,响应,body)if(response.statuscode==201)else console.log(db_body);console.log('状态代码:'+response.status code);});(});(});var query=client.query(“listen watchers2”);//PostGIS通道);

试试看:

有关需求的更多信息,请参见教程的起始页。

在FME服务器中,创建可接收有关数据库表更改通知的主题。
修改postgis2topic.js文件以符合数据库要求。

在命令提示窗口中,导航到节点可执行文件所在的文件夹。在命令窗口中,键入:node postgis2topic.js网站

如果什么都没有发生,那很好。代码中的任何错误都将在此处报告。

在FME服务器中,导航到“主题监视”选项卡并开始监视主题。
现在,您需要编辑被监视表中的数据。您可以使用FME或地理信息系统包来实现这一点。当数据被保存或写入数据库时,您应该看到主题消息出现在FME服务器Web UI中。

结果:

一旦在Postgis中编辑了某个功能,您就会看到主题消息出现。
您可以观看视频演示在这里.

通知服务 FMESER 实时性 邮政地理信息系统 话题 亚马逊网络服务 REST API 网络套接字 FMEU2017 改变 HTTP邮局 诺迪斯 小比特 SQS接收器 话题 主题信息 太阳2017年5月14日05:12:09格林尼治标准时间 圣卢瑟马斯
在实时(node.js)教程中发布地理信息系统到FME服务器 https://knowledge.亚搏在线safe.com/articles/44336/postgis-to-fme-server-in-real-time-nodejs-tutorial.html

概述:

接下来的几个例子使用postgis和node.js通过各种方法将通知实时传递到FME服务器。所使用的方法将取决于各个业务需求和需要处理的数据量。

它背后的体系结构有一个PostGIS数据库,在一个被“监视”的特定表上有一个触发器和函数。创建行时,删除或修改此函数。该函数提取数据中任何所需的列,并构建一个JSON消息以发送到开放的通道。Nodejs正在监视频道,并可以在它到达时对其进行处理。

以下博客文章记录了这种方法:

postgres使用node.js侦听/通知

Postgres的publish-subscribe特性通过JSON变得更好

在下面的练习中,node.js使用各种方法与FME通信:

  1. 对FME服务器的HTTP POST请求本练习将每次更改带入数据库表,并向FME服务器中的主题发送通知。如果工作区订阅了该主题,那么它将能够阅读主题消息并处理该功能。
  2. 使用WebSockets从PostGIS到FME的流特征本练习演示node.js如何打开websocket通道,使用FME服务器作为WebSocket服务器。如果在FME服务器中使用WebSocket发布,则流式信息可以作为主题消息查看。本练习使用FME工作台中的WebSocketReceiver Transformer来允许在特性到达时进行处理。
  3. 从Postgis到Amazon SQS的流化特性——FME中的流程本练习演示node.js如何向Amazon SQS(简单队列服务)发送消息。当数据库中的一行发生更改时,node.js将向队列添加有关此功能的信息。可以设置FME,以将此信息作为Amazon SQS发布服务进行处理,将特性发送到主题或使用FME工作台中的sqsreceiver。sqsreceiver为Amazon的sqs出版物增加了额外的灵活性。

要求:

你需要这些练习FME服务器,一PostGIS数据库PG管理,安亚马逊简单队列服务以及J.N.以及各种包装。

NPM软件包在不同的练习中会有所不同:

资源:

此.zip文件中使用的SQL和javascript。您需要替换任何凭据或连接信息。

资源,邮编

通知服务 FMESER 实时性 邮政地理信息系统 话题 亚马逊网络服务 REST API 网络套接字 FMEU2017 改变 HTTP邮局 诺迪斯 小比特 SQS接收器 太阳2017年5月14日04:45:33格林尼治标准时间 圣卢瑟马斯
Jlutherthomas Kbentry道路工程变更 https://knowledge.亚搏在线safe.com/articles/44315/roadworks-change.html网站

概述:

本教程将介绍如何将变更逻辑合并到工作区中,以仅传播那些或新的或更新的特性,不缓存整个数据集。

这将通过创建一个sqlite数据库文件来完成,以存储工作区的名称和上次运行时间。最后一次运行时间将用于与道路工程数据集上的时间戳进行比较,并发送新功能或更改功能的通知。

工作空间:

道路工程

工作区运行记录器.fmw

新道路工程.fmw

试试看:

读取道路工程数据

下载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服务器

现在我们要将sqlite非空间数据库上传到fme服务器,所以工作区可以访问它。导航到资源>数据。创建一个名为changedetection的新文件夹,并在其中上载sqlite非空间数据库。

选择上载的文件,然后单击“属性”。复制系统路径,因为我们将在工作区中使用它作为目标路径。

在工作区的导航器中,将系统路径粘贴到目标数据集参数:

在JSON阅读器和DateFormatter之间添加一个记录器转换器。这可用于检查工作区作业日志中的正确作业信息。

将工作区发布到FME服务器

将此工作区发布到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)或生成道路工程的图像以通知某人。

通知服务 实时性 话题 行程安排 REST API 网络套接字 订阅 FMEU2017 主题监控 改变 诺迪斯 小比特 坐,2017年5月13日05:11:35格林尼治标准时间 圣卢瑟马斯
在jlutherthomas的kbentry上发布到LittleBits CloudBit https://knowledge.亚搏在线safe.com/articles/44313/posting-to-the-littlebits-cloudbit.html网站

LittleBitsConnector Transformer具有允许用户“WriteToDevice”的操作。它使用littlebits API将JSON消息发送到cloudbit,打开电路中Cloudbit后面的输出位。

在变压器内部,您可以选择发送输出百分比和持续时间,它将控制连接位上的事件。

输出百分比将控制LED亮度,电机旋转或扬声器音量。

持续时间以毫秒(ms)为单位,并控制事件持续的时间。

试试看:

打开一个空白工作区并将LittleBitsConnector Transformer下载到画布。在LittleBitsConnector之前连接一个创建者转换器-这将发送一个功能,在运行工作区时启动进程。

打开LittleBitsConnector参数并选择操作“WriteToDevice”。此操作所需的参数为:LittleBitsAccessToken,DeviceID输出百分比和输出持续时间。

当工作区运行时,每个进入变压器的功能都会触发一个小比特事件。您可能希望增加“输出持续时间”,以提供更大的机会看到或听到事件。

在小数位上测试不同的输出位元,看看会发生什么。

结果:

当工作区运行时,您应该在输出小数位上看到一个事件。这将取决于cloudbit后面的位。这可能是一个LED灯亮起,声音播放,马达运动,等。

通知服务 FMESER 实时性 电视传真机 话题 应用程序编程接口 REST API 网络套接字 订阅 FMEU2017 改变 诺迪斯 小比特 坐,2017年5月13日格林尼治标准时间03:43:43 圣卢瑟马斯
将LittleBits工作区发布为jlutherthomas的kbentry上的FME服务器工作区订阅 https://knowledge.亚搏在线safe.com/articles/44207/publish-a-littlebits-workspace-as-an-fme-server-wo.html网站

您需要确保在电路中的cloudbit之后有一个输出位。

订阅在FME中,服务器将收到来自主题的通知。作为回应,它们通过受支持的协议向FME工作区或其他客户机传递消息。

在上一个练习中,创建了一个工作区,该工作区使用LittleBitsConnector转换器通过使用WriteToDevice操作触发LittleBits上的事件。在本练习中,工作区将发布到FME服务器,在那里可以根据其他事件触发工作区。
这是通过向通知服务注册工作区并订阅主题来完成的。当所选主题在FME服务器中触发时,与该主题关联的任何订阅都将运行。在这种情况下,订阅将是LittleBits工作区。

与电子邮件相比,这是一个更令人兴奋和有趣的选择!

向NotificationService注册工作区将自动创建订阅。然而,您还可以通过FME服务器的Web UI创建订阅:

试试看:

创建LittleBits工作区

按照中的说明操作'发布到LittleBits CloudBit'创建一个可以在小数位上触发事件的工作区。

一旦你有了一个可以发布到LittleBits的工作区,这可以转换为一个FME服务器订阅。然后,这个订阅将由FME服务器中的一个主题触发。

创建主题

在FME服务器的Web UI中,创建一个名为JobOutcomelittleBits的新主题。 .

将LittleBits工作区发布到FME服务器

从工作台开始,将使用LittleBitsConnector中的“WriteToDevice”操作的工作区发布到FME服务器。在通知服务中注册它。编辑通知服务属性并订阅您刚刚创建的主题:joboutcomelittlebits。 .发布工作区。

创建工作区以触发订阅

在工作台上,创建将失败的新工作区。它应该由创造者组成,减速器和终止器。在减速器内选择适当的延迟。

将工作区发布到FME服务器,确保作业提交者服务的属性设置为发布到joboutcomelittlebits。 关于失败的主题。

结果:

从FME服务器运行故障工作区。
当工作区失败时,这将向主题发送消息。然后该主题触发任何订阅,导致工作区调用LittleBits。

工作区(故障工作区)->主题(JobOutcomeLittleBits)->订阅工作区(LittleBits工作区)
当作业失败时,您应该发现事件发生在小部分上。这可能是一个LED灯亮起,声音播放,马达运动,等。

通知服务 FMESER 实时性 电视传真机 话题 应用程序编程接口 REST API 网络套接字 订阅 FMEU2017 改变 诺迪斯 小比特 清华大学,2017年5月11日23:31:43格林尼治标准时间 圣卢瑟马斯
作为jlutherthomas的kbentry上LittleBits的Webhook的FME服务器 https://knowledge.亚搏在线safe.com/articles/44194/fme-server-as-a-webhook-for-littlebits.html网站

注意:您的FME服务器将需要外部访问才能进行此项工作。您需要确保在电路中的cloudbit之前有一个输入位。

对于视频演示,见变压器文件.

LittleBits有一个API,它允许用户为他们的小部分设置一个Webhook。这允许设备将有关事件的消息发布到用户提供的端点URL。

试试看:

获取用作终结点的URL

用于FME服务器或FME云,这可能是主题文章的URL。要访问主题文章URL,通过导航到FME服务器的Web界面中的“通知>主题>新建”来创建主题。为了避免主题名称冲突,添加。 在主题名称的末尾。

展开“高级”部分。这将允许您查看两个不同的发布URL。在此示例中,将使用“作为订阅服务器内容的消息”URL。发布URL将采用以下格式:

http(s):/ /
       
         /fmerest/v3/通知/主题/
         
          /消息/订阅内容?FMeooKe=
          
         
        
       

用LittleBits注册URL端点

在空白工作区中添加创建者,一个小插接器和一个记录器。

要用LittleBits注册URL端点,从FME服务器Web UI复制的日志URL需要设置为LittleBitsConnector内的服务器Webhook参数。将LittleBits操作设置为CreatePublisation,并确保设置了正确的设备ID和访问令牌。

运行工作区并检查日志文件以确保已正确设置。

结果:

在FME服务器Web UI中,开始监视在本练习开始时创建的主题。当小数位上发生事件时,主题消息应在主题监视中可见。
每次你触发一个输入-按下一个按钮,发出一些声音等,这将向该cloudbit的所有注册端点发送有关事件的JSON消息。

通知服务 FMESER 实时性 电视传真机 话题 应用程序编程接口 REST API 网络套接字 订阅 FMEU2017 改变 诺迪斯 小比特 韦伯克斯 话题 清华大学,2017年5月11日20:36:31格林尼治标准时间 圣卢瑟马斯
天气更新和FME服务器(教程) https://knowledge.亚搏在线safe.com/articles/43904/weather-updates-and-fme-server-tutorial.html网站

FME工作台可用于构建一个工作区,该工作区将检查数据集或服务以获得所需的结果,已更改的值或符合特定条件的值。然后可以在FME服务器上定期运行这些程序,按计划进行。

如果返回数据,已标识的更改或满足条件工作区可以触发事件(订阅)。这可能是数据处理或发送通知。

在本教程中,我们将使用OpenWeatherMapForCaster检查天气并向FME服务器发送有关当前条件的通知。

工作空间:

天气更新-开始.fmw
天气更新-完成.fmw

试试看:

请下载OpenWeathermapForecaster变压器从FME轮毂。您需要注册来自的API密钥开放式天气图.

该变压器采用点几何来返回天气预报,因此,您需要在FME中创建一个感兴趣的点(您需要天气预报的地方)。

一些有用的坐标可能是:

会议中心(FME UC位置):lat:49.2892260,伦敦:123.1169553

亚搏在线安全软件办公室:lat:49.138036 lon:-122.857629

你也可以使用谷歌地图找到你自己的纬度/经度坐标。

通过将lon值输入“x值”,将lat值输入“y值”,将坐标输入创建者。为此,您需要单击“几何对象:点”旁边的“…”。

运行工作区并检查输出。

在OpenWeatherMapForecaster中,将天气设置为“当前”,然后输入API键。

现在我们要创建一个通知消息。添加一个attributeCreator,并使用OpenWeatherMapForecaster的输出构造消息。

例如:

新属性:天气消息

属性值:现在天气是@value(天气描述)。云量为@value(clouds)%。

我们需要找个地方来发送这个信息,所以我们将把它发送到一个关于FME服务器的主题。打开FME服务器的Web UI,然后转到通知>主题。添加新主题,称为天气警报。您还应该看到主题监视选项。选择天气警报主题,然后按播放按钮开始监视。不要关闭此选项卡,在运行完天气工作区后,我们想回到这里。

回到工作台,添加一个fmeservernotifier并打开参数。添加到FME服务器的连接,选择天气警报主题,对于内容,选择天气信息属性。

运行工作区。一旦完成,返回在浏览器中打开的通知页面。您应该看到您的消息出现在主题监控下。

一脉相承,您是否可以调整工作区以检查未来天气预报,并根据不同的天气事件进行通知?
提示:查看weatherupdates-complete.fmw

结果:

您应该看到在attributeCreator中构建的消息在FME服务器中显示为主题消息,当监视天气警报主题时。

您可以创建一个由这个主题触发的订阅,它可以提醒某人即将到来的天气状况,例如发送电子邮件或短信息。

通知服务 实时性 话题 REST API 网络套接字 FMEU2017 主题监控 改变 诺迪斯 小比特 主题信息 天气 周一,2017年5月8日00:06:35格林尼治标准时间 圣卢瑟马斯
数据加载,更新和删除 https://knowledge.亚搏在线safe.com/articles/43885/data-loading-updating-and-deleting.html网站

加载数据的最简单方法之一是批量下载和加载。然而,这可能不是最好的方法。
如果您有需要定期更新的数据集,或者由于数据更改或实时数据更改而需要更新的数据集,是否有更有效的方法将更改传播到数据集?

如果要删除和加载数据,需要多长时间进行处理,它们对其他需要这些数据的服务或用户有何影响?

FME有更好的方法来处理数据变更。

FME特性操作

FME中的某些格式允许您控制正在写入的数据的特征操作。这些操作可以是:插入,更新,删除或取消插入。这些可以控制在功能类型级别,或在按功能基础。

将操作设置为功能类型级别,打开特征类型参数并选择所需的操作。

将操作设置为按功能基础,创建一个名为fme_db_operation的新属性,并将该值设置为正确的,支持的操作。

任何依赖现有功能的操作都需要选择具有唯一值的列,这样编写器就可以将特性与现有的行相匹配。

这些选项还可以与表或工作表处理选项一起使用。这些可能包括:使用现有的,根据需要创建,删除并创建或截断现有的。

我应该选择什么操作或处理选项?

这取决于:

您是否担心数据写入的速度?
您是否担心交易速度/交易量?
你的数据重要吗?

是否需要覆盖数据?

功能类型处理选项

使用现有的:

如果已设置现有表并希望插入新行,则使用,或者更新或删除现有行。

根据需要创建:

如果插入数据且不确定表是否已存在,则使用。如果确实如此,FME会给它写信。如果没有,FME可以创建它。

删除并创建:

如果需要删除任何现有数据并删除表结构,请使用,可能添加或删除列,更改数据类型等。

截断现有:

如果要删除所有现有数据,但保留表格结构。

实时影响:

如果要删除或截断表,此选项将比插入/更新/删除选择功能慢,因为需要额外的时间删除所有功能并重新写入。由于数据行很少,这次可能无关紧要,但对于更大的数据集,这将更加明显。

使用谷歌表单演示

你需要一个谷歌帐号来完成这个练习。

资源:

谷歌工作表数据加载.fmwt

演示这些不同功能的一个简单方法是使用Google工作表,这将允许您查看正在写入的工作表。

试试看:

下载谷歌工作表数据加载.fmwt

您需要替换Google Sheets Writer,以便它使用您的凭证进行连接。在google sheets参数中,您需要设置刷新令牌(将提示您登录到您的google帐户)和电子表格名称或url(现有google sheet的url)。

工作区应如下所示:

确保仅启用取样器,你可以在工作区运行时看到谷歌的工作表。

当FME写出单元格时,您应该能够看到Google的工作表。正如Google Sheets Writer在单元基础上编写的那样,而不是特征/行(如数据库),写的属性和特性越多,写的时间就越长。

如果您禁用了取样器并从PostAddress Reader功能类型发送功能,你应该直接看到,写出来要花很长时间。您需要将工作表处理选项设置为“截断现有”。
如果有什么导致工作区无法写入,可能会留下丢失或不完整的数据集。如果在截断和写入过程中数据在一段时间内不可用,您还可能会发现尝试访问存储在那里的数据的其他系统或服务是否会产生不正确的结果。

有了谷歌表,更新或删除现有行的选项基于行号。
启用采样器并打开随机采样。在取样器前面加一个计数器。在Google Sheets Writer功能类型中,将功能操作设置为“fme_db_operation”,将行号属性设置为“u count”属性。您应该看到工作表处理选项更改为“使用现有”。

采样输出采样端口后,添加一个attributeCreator,并创建值为delete的fme_db_operation属性。对于非采样输出端口,添加attributeCreate并创建值为update的fme_db_operation属性。将两个属性创建器的输出发送到Google Sheets Writer功能类型。

如果你在FME运行的时候看谷歌的表单,当FME写入时,您应该看到一些行消失,一些行值改变。

通知服务 实时性 REST API 网络套接字 谷歌床单 FMEU2017 改变 诺迪斯 小比特 数据加载 功能操作 太阳2017年5月7日06:32:11格林尼治标准时间 圣卢瑟马斯
与FME服务器通知服务实时数据集成 https://knowledge.亚搏在线safe.com/articles/43880/real-time-data-integration-with-fme-servers-noti.html(https://knowledge.safe.com/articles/43880/real-time-data-integration-with-fme-servers

欢迎来到与FME服务器的通知服务培训课程资源中心的实时数据集成。在这里你可以找到你的课堂材料,在线课程的连接信息,以及在上课前后可能会发现有用的其他资源。

概述

改变发生了。随着数据的变化,您是否确保您的系统是最新的?随着使用数据的系统的变化,你的解决方案能适应吗?学习实时数据集成的新方法,这些方法可以根据业务需要快速调整。前面稍微用力一点,你将获得更快的洞察和敏捷的时间。您将了解传播数据更改的各种方法,以及如何使用FME服务器的强大通知服务处理更改。

先决条件/难度

具备FME桌面的工作知识和FME服务器的基本知识。完成FME服务器创作课程建议但不必要。建议在FME中使用JSON,但不必。

虚拟机

我们将使用Amazon AWS EC2“虚拟机”进行本课程的练习。本课程中的每个参与者都有一个虚拟机。虚拟机包含安装的FME桌面2017.1,FME服务器2017.1,QGISPostGISnode.js和所需的所有示例数据。

注:这些虚拟机专门为2017年的FME UC培训设计和构建。

使用远程桌面连接软件连接到虚拟机。大多数Windows操作系统都预先安装了远程桌面连接。对于Mac OS X,您可以从应用商店安装“Microsoft远程桌面”。

请点击在这里,并按照说明请求fmetraining.rdp文件连接到虚拟机。

请在培训课程开始前至少12小时尝试连接到虚拟机。

在注册时和课程开始前一天发送的课程确认电子邮件中提供了虚拟机的密码。

如果无法连接到虚拟机,请参阅从上述链接下载的zip文件中的readme.txt文件。

测试完虚拟机后,只需关闭远程桌面——不要注销或关闭实例。

样本数据

如果您需要所有FME桌面培训材料的样本数据集,下载在这里.请将此文件解压缩到C:\驱动器。

您不需要下载示例数据,除非您的指导老师告诉您(例如,如果无法连接到虚拟教室)。对于本课程,任何数据将在FME模板中提供,或通过API连接提供。

所有必需的工作空间都将随教程一起提供。

文件

培训材料将包括以下主题的精选文章:

数据加载

轮询系统

使用FME检查所需系统或数据集的状态。工作区内置于包含状态逻辑的FME桌面中,并发布到FME服务器以按计划运行。

外部系统

一些系统或服务能够直接与FME通信,通过“手动”保存轮询或拉取数据的需要。

通知服务 实时性 REST API 网络套接字 FMEU2017 改变 诺迪斯 小比特 太阳2017年5月7日06:15:50格林尼治标准时间 圣卢瑟马斯
FME服务器中的调度和变更检测工作流介绍亚搏在线 https://knowledge.亚搏在线safe.com/articles/43879/introduction-to-scheduling-and-change-detection-wo.html

FME服务器中的调度和变更检测工作流介绍亚搏在线

FME服务器通知服务允许创建发布-一种通过支持的协议从客户端接收内容的方法。此内容作为主题的通知传递。出版物的例子可能是收到的电子邮件,目录监视,平方米。这些发布包含通知新事件的逻辑。

如果您的客户机或数据集不支持作为FME中的发布,您可以创建一个工作区,并安排它以所需的间隔在FME服务器上运行。然后可以使用工作区发送通知来触发订阅(这可能是另一个要进行处理的工作区)。

工作区要求:

要构建可检查系统或数据集状态的工作区,检查FME工作台是否支持数据格式或通信方法。
如果要检查数据集的更改或新功能,数据集是否有任何字段包含有关何时更改数据的信息,例如,时间戳。

如果数据集无法识别变更,您想保留数据的副本以进行比较(缓存)还是只处理整个数据集?

缓存数据:

有了数据缓存,可能需要考虑数据大小和存储。如果你有一个大的数据集,将两组数据读取到工作区进行更改检测可能会增加工作区运行时和内存使用。您还需要足够的空间来存储数据的副本。
一些工作流亚搏在线可能需要一组最新的数据(例如当前数据的数据库表)。在这种情况下,您将已经有一个要与之比较的数据集,并且不需要重复的变更检测。如果您的工作流正亚搏在线在读取数据集并发布通知(例如,基于新数据或更改的电子邮件通知或短信息,不存储数据,这可能需要数据缓存。

变化检测器变压器可用于比较两组数据。

如果以支持SQL查询的格式缓存或存储数据,这可以节省时间,不需要FME读取整个数据集,只有两个值不同的功能。

例子:

在这种情况下,一个空气质量的卡通数据集需要保持最新。当前的空气质量值是从JSON数据馈送中获取的,写在卡通片上在地图上可视化。

有几种方法可以做到这一点:

ChangeDetector:

在此工作区中,正在读取现有的carto数据,以及JSON空气质量数据源。
两个数据集都通过changedetector传递,匹配UUID上的数据。已添加的任何功能都将发送到卡通作者以更新数据集。

特征读数:

此工作区获得的输出与使用FeatureReader使用ChangeDetector获得的输出相同。FeatureReader连接到Carto数据集,但只能读取请求的功能。在这种情况下,这由WHERE子句指定:

@value(uuid)=“uuid”和@value(aqi)!=“空气质量指数”


FeatureReader正在寻找UUID匹配的功能,但是空气质量指数是不同的。当读取这些特征时,空气质量指数值之间会发生冲突,所以FeatureReader设置为“使用启动器”,获取最新的空气质量指数值,并将其发送给制图员以更新数据集。

SQLExecutor:

还有一个步骤是使用sqlExecutor来识别carto数据集中的特征,其中空气质量指数值与JSON数据馈送不同,并通过SQL进行更新。

更新aqdata set aqi='@value(aqi)',其中uuid=@value(uuid)和@value(aqi)!=“AQI”

比较时间戳:

如果您的数据有时间戳,那么您可以使用它来比较数据是更新的还是自上次运行工作区以来更新的。
如果有常规计划,可以使用新的DateTimeCalculator根据时间间隔确定时间戳是否较新。

如果有可能你的工作在运行中被延迟,导致时间间隔不一致,您可以记录工作区上次运行时间。这可以存储在FME服务器上,每次运行工作区时都要读取和更新。

在本例中,工作区被分成两个部分。第一部分读取工作区的最后一次运行时,并使用variablesetter和variableretriever将时间戳传递到工作区的另一半。

输入数据是温哥华道路工程的一个原子饲料,包含更新的时间戳。计算工作区运行时和数据更新之间的差异。任何大于0的间隔值都是新的计划道路工程或更新的现有道路工程,这些可以过滤处理或通知。

FME服务器计划:

将工作区发布到FME服务器后,可以将其设置为按计划运行。

“时间表”选项卡(在FME 2017的左侧)将显示现有时间表的列表,显示有关计划以及是否已启用的信息。

创建新计划允许您输入名称,计划的类别和说明。循环可以设置为按间隔运行,一次或基于cron表达式进行更复杂的调度。

选择正确的工作区后,可以应用更多设置。通知有关工作成功或失败的主题,展开“通知”视图。

在2017年,一些额外的财产可以按时间表设置,如“取消前运行”,“排队作业到期时间”和“正在运行作业到期时间”。

通知服务 实时性 行程安排 REST API 网络套接字 FMEU2017 改变 诺迪斯 小比特 太阳2017年5月7日06:04:32格林尼治标准时间 圣卢瑟马斯
关于Jlutherthomas的Kbentry的FME和LittleBits教程 https://knowledge.亚搏在线safe.com/articles/43876/fme-and-littlebits-tutorial.html网站

FME和LittleBits教程

本教程从FME和LittleBits简介.

如果您拥有任何LittleBits和CloudBit,请按照以下步骤了解如何与FME集成。

概述:

在本教程中,我们将构建可以与LittleBits交互的工作空间,使用LittleBitsConnector变压器。LittleBits可以与FME服务器交互,通过运行或触发可以与LittleBits通信的工作区,或者在事件发生时设置LittleBits以发布到FME服务器。

  1. 创建一个可以发布到LittleBits的工作区这个工作区将展示如何用LittleBits连接器构建一个简单的工作区。当工作区运行时,LittleBits会做一些事情。
  2. 在FME服务器上创建LittleBits订阅使用在第1部分中创建的工作区,这可以用作FME服务器工作区订阅,也就是说,只要触发一个相关的主题,工作区就会运行并告诉小数位做些什么。这可以打开LED,使用MP3播放器播放音乐或移动电机。这为从FME服务器通知某人事件提供了另一种方法。
  3. 将FME服务器用作LittleBits的Webhook使用一个小的接地变压器,用户可以用littlebits注册URL端点。这意味着每当小数位上发生输入事件时,JSON消息将发送到注册的端点。

要求:

本教程要求FME桌面2017.0或更高,安外部FME服务器或云实例2017.0或更高小钻头套件,包括一个输入位,一个cloudbit和一个outputbit。

如果没有面向外部的FME服务器,您可以在这里注册一个FME云测试:https://www.亚搏在线safe.com/fme/fme-server/trial/试用版/.

您将需要一个设备ID和访问令牌,用于从网址:http://control.littlebitscloud.cc/.

通知服务 FMESER 实时性 电视传真机 话题 应用程序编程接口 REST API 网络套接字 订阅 FMEU2017 改变 诺迪斯 小比特 太阳2017年5月7日05:34:41格林尼治标准时间 圣卢瑟马斯
FME和LittleBits简介 https://knowledge.亚搏在线safe.com/articles/43875/fme-and-littlebits.html网站

什么是小比特?

小比特是一家公司

“易于使用的电子积木平台,使每个人都能创造发明,大和小”。

其中一个电子模块是“云位”,使设备能够与网络通信。LittleBits是一个物联网设备,使人们能够通过网络连接和控制日常设备,使用利特尔比特API.这些日常的“比特”是发光二极管,带扬声器或交流开关的MP3播放器。

要将LittleBits用于FME,您需要一些LittleBits,一个cloudbit和一个设备ID以及访问令牌,可从网址:http://control.littlebitscloud.cc/

有关使用FME和LittleBits的说明,跟随FME和LittleBits教程.

小钻头和FME

使用httpcaller,您可以使用API连接到您的littlebit。但是为了让事情更容易,有一个小钻头连接器在FME轮毂上提供变压器。这是一个自定义变压器.

LittleBitsConnector允许您:

  • 获取有关您的设备的信息
  • 列出您拥有的所有设备
  • 更新设备设置
  • 写入设备(触发小数位上的事件)
  • 列出所有关联的Web挂钩
  • 设置Web挂钩
  • 删除现有的Web挂钩

触发一个事件在小地方,比如打开一个LED或者一个电机,运行将LittleBitsConnector操作设置为“WriteToDevice”的工作区,并指定输出持续时间和输出百分比。带着LED,这将控制照明时间和亮度。

接收通知从LittleBits中,您给它一个URL端点(Webhook),它可以接收JSON消息,其中包含触发通知的事件的详细信息。在FME服务器上,URL端点可以是主题发布URL。然后,您可以在FME服务器Web UI中监视此主题,并查看从cloudbit实时到达的通知:

LittleBits电路示例

小钻头像其他电路一样工作,其中输入模块需要先来影响电路中的输出模块。
通过连接cloudbit之前的输入,这允许cloudbit让任何订阅的服务知道发生的任何事件。

声音→云

在这个回路中,声音比特与云比特相连。触发时,声音“振幅”值发送到任何注册的URL端点。

云→MP3播放器→扬声器

在这个电路中,输出是一个MP3播放器和一个扬声器。当系统发送到cloudbit时,这将触发电路中的输出位,在这种情况下,通过扬声器播放MP3播放器中的歌曲。

按钮→云端→LED

您还可以将输入和输出结合起来。在这种情况下,每次按下按钮都会向任何已注册的URL端点发送通知。任何对cloudbit的POST请求都会打开LED。

LittleBitsConnector-幕后

FME和LittleBits之间的交互是使用httpCaller完成的。这使FME能够向LittleBits API发出请求。

httpCaller用于向指定的请求URL发出HTTP请求。HTTP方法,头和主体是使用API文档确定的。Shell示例http://developers.littlebitscloud.cc网站/提供一种简单的方法来确定需求。

它们采用这种格式,可以很容易地转换为httpcaller:

curl“请求URL”

-X方法

-H“标题:标题值”

D“身体”


为了让您的生活更轻松,避免手动小数位配置,您可以下载LittleBitsConnector Transformer在这里

看看我们的《沙发上的编码员喝咖啡》,我们在这里讨论和演示LittleBits和FME:


如果你没有一个FME许可证,但想尝试它或在家里使用它的乐趣项目,像这样,看看我们的补助计划.

通知服务 FMESER 实时性 电视传真机 应用程序编程接口 REST API 网络套接字 FMEU2017 改变 诺迪斯 小比特 太阳2017年5月7日05:18:38格林尼治标准时间 圣卢瑟马斯