页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

本章主要介绍如何利用后端脚本能力扩展DWF的数据模型中实体类与关联类后端事件管理机制。

...

数据模型扩展简介

之前的学习中,读者应该已经大量的接触了数据模型的基本概念,包括:实体类,实体类对象,关联类,关联类对象。数据模型的后端脚本扩展能力,是DWF在服务器端提供的一套事件机制,通过这套事件机制允许用户在实体类、关联类对象被创建、删除、修改的前后执行一段指定的脚本,从而丰富数据变化过程中相关的业务逻辑。

...

因此,提供基于后端脚本的扩展能力对于快速实现低代码量的应用而言有在的的必要性。

...

如何实现扩展

了解了数据模型的后端脚本机制扩展存在的意义后,接下来介绍如何实现对数据模型的扩展。

...

  • this.obj:在前处理脚本中表示即将更新到数据库中的JSON对象。
  • this.oldObj:在更新和删除的后处理脚本中表示完成之前原始的JSON对象。
  • this.className:在脚本正在处理及的实体类或者关联类的英文名。

...

脚本案例:工单和设备属性联动

接下来,结合之前介绍的设备管理应用的案例,介绍如何编写数据模型扩展脚本。

...

(一)新增工单和删除工单自动更新设备属性

在 第五章 多对象表单控件脚本 中介绍了一个例子:如何实现在工单创建完毕以后更新设备的总工单数量,这个例子使用了操作的后处理脚本动态更新了设备的总工单数+1,这个例子虽然实现了创建工单的时候修改设备属性的目的,但是其存在如下的两点局限性:

...

代码块
languagejs
linenumberstrue
// 工单对象删除后更新设备的工单数量
var assetID = this.obj.assetOid;
if (assetID) {
	// 得到工单上填写设备对应的实体类对象
    var asset = this.omf.getByOid(assetID, "Asset");
    if (asset.woCount){
        asset.woCount -= 1;
    } else {
        asset.woCount = 0;
    }
	// 将设备对象更新到数据库中
    this.omf.edit(asset, "Asset");
}

...

(二)删除设备级联删除工单

完成了工单和设备属性的联动之后,如果是设备删除,那么需要将与设备有关的工单一并删除怎么办呢?同样也可以在设备类对象删除后的事件里,删除工单。

...

信息

在这个脚本中删除工单类的SQL语句,针对的表名是plt_cus_workorder,而DWF中工单类的英文名是WorkOrder,这中间的对应关系是按照如下的规则实现的:

对于实体类,命名规则是:PLT_[前缀]_[类名],对于关联类,命名规则是:PLT_[前缀]_R_[类名]。其中【前缀】是在类属性界面中指定的,默认为CUS代表自定义。

所以,根据这个规则,工单类在数据库中的对应的表名是:plt_cus_workorder

...

小结

本章着重介绍了后端数据模型的事件机制,利用数据模型的事件扩展机制,类似数据库的触发器,可以有效解决很多实际应用需求。

...

此外,还通过设备删除与工单的级联删除的例子解释了DWF数据库表的命名规则,这也是二次开发必须了解掌握内容。

5. 附件

...

示例模型包

后端脚本扩展数据模型.zipheight250