精工动态看板

数据流向

静态数据

系统中静态数据,由底层到顶层,可分为如下四个层级:

数据源

动态看板运行时的数据来源配置。

定义了数据源的标识,以及Java后台获取数据源的方式。

常见的数据源获取方式包括:UDP端口/数据库查询/TCP连接/ICE连接等。

系统运行时,Java后端会抹平数据源的差异,使用统一的格式发往页面进行显示。

页面元素

看板的构成组件。

页面元素需要维护自身的大小/位置/展现形式。不同种类的页面元素有不同的配置方式。

向上而言,由多个页面元素可以拼成完整的看板,向下而言,页面元素负责获得数据源的数据,并可以定义数据的处理规则。

看板实体

页面元素的集合,用户可见的看板。

维护自身的尺寸,看板内的chart风格。

在运行时以看板为单位逐个生成可视页面。

在拖拽系统中,编辑状态的看板既是画板,页面元素既是最小绘图单位。参加chartEz

ChartEz

管理数据

维护用户登录,看板展示等信息。

页面渲染

看板展示页面为showOne.html

主要页面逻辑在js/showPage.js

下面将整个页面的展现分为几个具体步骤

动态约束

在页面中定义了约束设定的表单,当用户点击看板时可以弹出进行设置

页面加载时,通过接口获取约束的可选项。例如用户的列表,产线的列表等。

当约束条件发生变化时,记录当前的约束条件,并且重置看板页,重新完成动态SQL的计算,事件触发等操作。

约束设置完毕后执行的initPage方法,既是页面生成的方法。

页面生成

通过约束计算本页的uuid,保证了即使是相同的页面,当查询条件不同时,也会向后台注册不同的事件

通过看板组生成多块看板(不重要,略过)

渲染看板组件

根据看板ID获得页面元素表记录,通过不同的load方法进行组件的生成。

以loadHtml为例解释组件生成的方式

可以看到,一个页面元素创建的基本流程就是

  1. 创建dom对象

  2. 设置对象的大小,位置,自定义样式

  3. 将对象加入到看板中

  4. 执行after脚本(对于chart对象,会在chart创建前执行before脚本,可以完成数据初始化工作)

  5. 进行数据源绑定

动态数据

详细解释当页面元素进行数据源绑定时,到底发生了什么。

先看代码:

eventId是事件向后端注册的标识符。由uuid和页面元素的类型+id组合形成。

uuid由页面约束经过hash计算得到。

因此我们可以得知,当两个页面打开的看板相同,而且页面约束也相同时。他们会向后端发送同样的eventId。既是完全相同的事件不会重复注册。

页面中的socket根据eventId建立监听,当后端通过webSocket推送数据时,页面既可以执行用户配置的回调。同时使用data/backLife接口刷新后端事件的TTL。

之后,页面会通过接口请求该数据源的模板。通过页面中的约束将模板变为实际可执行的SQL语句。

将可执行的SQL和eventId共同发往后端,完成事件注册。

Last updated