精工动态看板
数据流向
静态数据

系统中静态数据,由底层到顶层,可分为如下四个层级:
数据源
动态看板运行时的数据来源配置。
定义了数据源的标识,以及Java后台获取数据源的方式。
常见的数据源获取方式包括:UDP端口/数据库查询/TCP连接/ICE连接等。
系统运行时,Java后端会抹平数据源的差异,使用统一的格式发往页面进行显示。
页面元素
看板的构成组件。
页面元素需要维护自身的大小/位置/展现形式。不同种类的页面元素有不同的配置方式。
向上而言,由多个页面元素可以拼成完整的看板,向下而言,页面元素负责获得数据源的数据,并可以定义数据的处理规则。
看板实体
页面元素的集合,用户可见的看板。
维护自身的尺寸,看板内的chart风格。
在运行时以看板为单位逐个生成可视页面。
在拖拽系统中,编辑状态的看板既是画板,页面元素既是最小绘图单位。参加chartEz
ChartEz管理数据
维护用户登录,看板展示等信息。
页面渲染
看板展示页面为showOne.html
主要页面逻辑在js/showPage.js
下面将整个页面的展现分为几个具体步骤
动态约束
在页面中定义了约束设定的表单,当用户点击看板时可以弹出进行设置
页面加载时,通过接口获取约束的可选项。例如用户的列表,产线的列表等。
当约束条件发生变化时,记录当前的约束条件,并且重置看板页,重新完成动态SQL的计算,事件触发等操作。
约束设置完毕后执行的initPage方法,既是页面生成的方法。
页面生成
通过约束计算本页的uuid,保证了即使是相同的页面,当查询条件不同时,也会向后台注册不同的事件
通过看板组生成多块看板(不重要,略过)
渲染看板组件
根据看板ID获得页面元素表记录,通过不同的load方法进行组件的生成。
以loadHtml为例解释组件生成的方式
可以看到,一个页面元素创建的基本流程就是
创建dom对象
设置对象的大小,位置,自定义样式
将对象加入到看板中
执行after脚本(对于chart对象,会在chart创建前执行before脚本,可以完成数据初始化工作)
进行数据源绑定
动态数据
详细解释当页面元素进行数据源绑定时,到底发生了什么。
先看代码:
eventId是事件向后端注册的标识符。由uuid和页面元素的类型+id组合形成。
uuid由页面约束经过hash计算得到。
因此我们可以得知,当两个页面打开的看板相同,而且页面约束也相同时。他们会向后端发送同样的eventId。既是完全相同的事件不会重复注册。
页面中的socket根据eventId建立监听,当后端通过webSocket推送数据时,页面既可以执行用户配置的回调。同时使用data/backLife接口刷新后端事件的TTL。
之后,页面会通过接口请求该数据源的模板。通过页面中的约束将模板变为实际可执行的SQL语句。
将可执行的SQL和eventId共同发往后端,完成事件注册。
Last updated