EZDML 数据建模

超轻量级的免费数据建模工具

0%

EZDML模型文件通过数据库共享

概述

EZDML新版(3.45起)支持将模型文件保存到数据库,只要能访问数据库就可以随时加载模型,并且能在保存更改后实时通知其他用户更新,实现模型文件的共享和简单协作。

EZDML会在数据库中创建一个表来保存文件,这个表会在首次保存数据库文件时提示用户创建。

EZDML在保存数据库文件时,会保留历史文件记录,可以随时加载历史文件,实现一定的版本管理功能。

EZDML允许对数据库文件进行简单的锁定/解锁操作,方便多个用户之间协作,避免同时修改产生冲突(3.58版起支持)。

下面我们从头开始一步一步说明如何使用数据库文件功能。

连接数据库

打开自带demo文件(D:\EZDML\demo_ch.dmj),执行菜单命令“文件|保存到数据库”(或按住SHIFT键点工具栏上的保存按钮):

弹出保存数据库文件的窗口,并提示用户登录数据库:

连接成功后选择用户,输入文件名,点“确定”保存。

创建表结构

EZDML需要在数据库创建一个表也保存文件。第一次保存时,会提示用户创建表结构:

点“确定”后,弹出生成表结构的界面,连接数据库,指定用户名,生成SQL:

可以看到,需要创建ezdml_meta_file这一个表,大家也可以自己创建,其描述字内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ezdml_meta_file(EZDML文件)
---------------------------------------------------
fileGuid(唯一标识) PKString(127)
historyGuid(历史文件标识) String(127) //同一个文件的历史记录有相同的historyGuid
fileName(文件名) String(127)
fileHash(文件哈希值) String(127) //通过此值判断文件内容没有变化,无变化时不需要写入
fileSize(文件大小) Integer
fileBlob(文件内容) Blob
fileMemo(文件备注) String(2000)
createDate(创建时间) Date
creatorName(创建人) String(127)
modifyDate(修改时间) Date
modifierName(修改人) String(127)
deleteDate(删除时间) Date
deleterName(删除人) String(127)
fileStatus(文件状态) Enum //0正常 1历史 -1删除
fileVersion(文件版本号) Integer //从一开始,每修改一次加一
dbver_001(数据库版本号) Integer

执行生成,完成创建,注意要选择用户模式名(这里为eztest),不然会创建到默认用户模式下:

然后可以关闭生成窗口,回到保存界面。

保存到数据库

创建表结构后,再次保存,出现保存进度:

在提交到数据库前,会提示输入备注:

确定,保存成功后,会浮动提示:

保存到数据库后,模型文件名变为db://开头的URL格式:

保存时会计算文件的HASH值并进行比对,如果文件没有任何变化,意味着这一次保存很可能是没有必要的,会提示用户确认:

从数据库加载

打开EZDML,新建空白文件,执行菜单命令“文件|从数据库加载”(或按住SHIFT键点工具栏上的打开按钮),弹出打开窗口:

选择文件,点击确定,加载数据库文件,结果如下图:

文件变更通知

对于数据库文件,EZDML新版(3.45起)会自动检测数据库文件的修改时间有无变化,有变化则通知用户更新。只要一个人修改保存了模型(或修改了文件备注),所有人都会及时得到相应通知:

关于数据库文件更新通知补充说明如下:

  1. 当前模型为数据库文件时,EZDML仍然会定时保存本地临时文件,一是加快打开速度,二是记录编辑版本历史防止意外损失;
  2. 会每隔10秒检查一次数据库文件有无更新;
  3. 关闭再重新打开时,也会检查数据库文件有无更新,有更新时会提示跳过本地缓存文件;
  4. 检查文件更新的前提是原数据库连接正常且文件存在,如果数据库连接断开,或连接发生变更(连到其它数据库了),或文件被其他人改名或删除,则会跳过检查;
  5. 检查到变更进行更新提示时,会将修改人和文件备注同时显示出来,因此修改保存文件者应尽量编写好合适的备注内容;
  6. 加载数据库更新内容时,会覆盖本地文件内容,如果本机文件和数据库文件同时发生了变更,产生了冲突,就要小心地进行备份和合并了;
  7. 从3.58版起,EZDML在检测到数据库连接断开时,会提示用户重连,并在主窗口标题上提示“已离线”。

修改文件备注

如果不想修改数据库文件内容,只想简单通知一下其它用户,可以直接修改文件备注。

在数据库文件的对话框里,选中文件右键弹出菜单里执行“修改备注”:

在弹出输入窗口中输入内容:

确定保存后,其他正在查看模型的用户会收到更新提示:

保存历史版本

对于数据库文件,EZDML在本地和数据库上都会保存历史版本。本地是定时缓存临时文件,跟普通文件是一样的了;我们重点看下数据库版本历史。

为方便演示,再次保存前我们改一下这个文件,将ez_area删除,ez_memberrank改成绿色,ez_users的颜色改成红色,ez_member后面的attributeValue字段删除,结果如下:

再次保存到数据库,系统会提示覆盖:

点确定,输入备注,即可保存新的数据库文件:

但旧的文件并不会直接删除,而是会保留为历史版本,下面我们再来查看下历史。

查看历史版本

再次执行从数据库加载,将文件列表向右翻到最右边,会发现有一个“版本”的列:

选中文件,点鼠标右键,在弹出菜单中选择“显示历史文件”:

这时会列表此文件的所有历史版本:

选择版本1,确定,就可以加载查看这一版本的文件内容了:

注意:数据库历史版本文件不会缓存,会当成临时文件处理,退出时会提示保存为正式文件。

保存模型片段

当然,有时候我们不希望将整个模型共享,或者只想把改过的一点内容共享给其它人看,这时我们可以只保存模型片段。

我们打开刚才改过的数据库文件,删除其它模型图,只保留变化的内容:

然后将这一小点内容保存到数据库,实现有限的共享:

锁定与解锁

多个人同时修改模型时,数据库文件共享容易产生冲突。从3.58版起,EZDML数据库文件支持简单的锁定/解锁操作,方便多个用户之间协作,以避免这种同时修改产生的冲突。

可直接在数据库文件的右键菜单上执行锁定/解锁:

也可以在打开/保存数据库文件的同时进行锁定/解锁。比如,用户A在打开文件时进行锁定:

锁定时会提示输入备注:

点确定即可打开并锁定,这时其他正在使用此文件的如用户B将收到提示:

用户B执行打开或保存数据库文件,会看到此文件已被用户A锁定:

这时用户B进行锁定或保存操作都会报错,提示文件被其他用户锁定:

正常情况下应该找用户A协商解锁,当然我们也可以强制解锁:

强制解锁同样需要输入备注:

这时其他用户同样会收到变更提醒。

数据库文件的锁定功能只是用来简单地提醒其他人减少修改冲突。文件锁定后,EZDML并不限制模型的修改,其他用户仍然可以是编辑修改模型的,只是无法正常保存回数据库文件,因此还是会可能产生冲突的。但如果每个人都能规范的执行操作,要修改内容前都进行锁定或通知其他人解除锁定,就可以避免冲突的产生。

小结

通过将模型文件保存到数据库,我们可以实现简单的模型文件共享协作,以及简单的版本管理功能。当然它不能代替SVN或GIT,但对程序员或设计师之间共享一些模型是有帮助的。