在4月13号举办的 Neo4j 关联数据之一带一路主题活动上,Neo4j 亚太区售前和服务总监 Joshua Yu 分享了使用知识图谱、物联网和数字孪生构建的智能供应链数字基础设施的案例及演示,直观和酷炫的前端交互和可视化界面吸引了不少观众。本文基于此案例给大家深度解析源代码,让你也能立刻拥有一套可定制和运行的智能供应链基础程序。
我们可以先看一段本系统的展示。
接下来我们从以下几个部分来解析本案例。
业务需求
为了应对需求波动,组织正在依靠预测性和规范性分析、机器学习、人工智能和增强技术,为突发问题和未来的潜在问题提供明确的解决方案。这包括缩短生产时间、确定缓冲供应和库存的最佳方式,以及自动化流程以应对供应短缺。
图技术对于优化物流、发现漏洞和提高整体供应链弹性至关重要。在任何业务中,尤其是在零售和仓库配送中,对库存、产品库存以及如何配送的准确信息的需求至关重要。供应链中的步骤越多,不稳定的风险就越大。图数据库非常适合这项任务,因为它们擅长表示复杂的关系。因此,基于图的供应链管理方法提供了应对这些挑战所需的灵活性和可扩展性。通过将数据表示为一系列相互连接的节点,Neo4j 可以轻松地对复杂关系进行建模,并识别隐藏在传统表格数据集中的模式和见解。
在这个演示中,我们关注的是仓库、配送和车队管理问题。
在业务分析阶段,我们就可以进行图数据建模了,别忘了跟业务专家一起来画出业务和之间的关联。本演示的数据模型如下:
你能从图数据模型看出具体的业务吗?
系统架构
为了直观的展示供应链的情况,我们需要一套视觉上非常直观和交互很灵活的方式,本演示采用了一系列前端的可视化框架,以及使用Angular作为承载框架。
同时我们需要一套服务端来跟数据库和前端交互,以及实现业务逻辑和API。在这里我们采用了.NET Core来实现,默认提供了Web API的架构以及使用Repository作为数据层交互接口。
数据库端我们使用了Neo4j AuraDB,无需任何运维即可快速使用。
另外我们也设计了一套完整的部署架构,你可以参照该设计将整套系统部署在云端。
源代码解析
听上去就跃跃欲试了对不对,接下来我们从底层数据库开始来一步一步解读源代码,完成后希望你可以直接运行一个你自己的版本。
本案例的源代码在GitHub,你可以先克隆到本地准备开发。在这里我使用Visual Studio Code来进行开发和调试。
Neo4j AuraDB 初始化
我们首先创建AuraDB的实例。你可以选择你想部署的数据中心,也可以参考整个系统需要部署的数据中心来灵活选择。
实例创建好之后,本演示准备了一些测试数据,Cypher脚本位于路径supply-chain-demo/DBScripts/populateDB.txt
。使用Neo4j Browser运行脚本即可将数据导入。
下一步需要记下数据库的连接字符串信息,用来从服务端连接到数据库。
服务端 Neo4j Back 源代码
有了数据库实例和连接字符串后,我们来看看服务端代码。首先看一下目录结构。