1 个不稳定版本
0.1.0 | 2020 年 6 月 24 日 |
---|
#28 在 #事件流
140KB
2.5K SLoC
ActyxOS 的实时数据导出工具
ActyxOS 是一个针对工厂车间去中心化事件溯源系统。在工厂部署应用程序的目的之一是通过报告和可视化车间的情况来获得业务洞察。
使用此库,可以轻松地将事件数据导出到 SQL 数据库,如下面的代码所示
pub fn dashboard_logic<'a>(
scope: &mut Scope<'a>,
) -> (
Input<Event<MachineEvent>>,
Flow<'a, DashboardEntry, Stateful>,
) {
let (injector, events) = Flow::<Event<MachineEvent>, _>::new(scope);
let out = events
.filter(|ev| ev.stream.name.as_str().starts_with("Drill"))
.map(|ev| match ev.payload {
MachineEvent::Started { order } => {
DashboardEntry::working(ev.stream.name.to_string(), order, ev.timestamp)
}
MachineEvent::Stopped { .. } => {
DashboardEntry::idle(ev.stream.name.to_string(), ev.timestamp)
}
})
.group_by(|entry| entry.machine.clone())
.max_by(|entry| entry.since)
.ungroup();
(injector, out)
}
整个项目位于 example
文件夹中,生成底层事件的示例 web 应用程序位于 webapp
文件夹中。两者都可以部署到 ActyxOS 节点或以开发者模式运行,请参阅 快速入门指南。
有关更多背景信息,请参阅 博客文章。
构建 Docker 应用
使用以下命令在 Linux 上构建二进制文件和 Docker 镜像
cd machine-dashboard-app
./build.sh
然后将它打包成一个 ActyxOS 应用程序并部署它
ax apps package
ax apps deploy --local com.actyx.data_flow.machine-dashboard-1.0.0-x86_64.tar.gz localhost
ax apps start --local com.actyx.data_flow.machine-dashboard localhost
ax logs tail --local -f localhost
后续步骤
从示例中,您可以探索库提供的更多数据流转换,以及连接到 PostgreSQL 或 Microsoft SQL Server 数据库以存储转换结果。
DB 驱动代码也进行了注释,并允许扩展其他数据库。
如果您想在其他操作系统或架构上构建,可以查看 Rust Docker 镜像。
依赖项
~59MB
~1M SLoC