概述
EZDML新版(3.45起)支持将模型文件保存到数据库,只要能访问数据库就可以随时加载模型,并且能在保存更改后实时通知其他用户更新,实现模型文件的共享和简单协作。
EZDML会在数据库中创建一个表来保存文件,这个表会在首次保存数据库文件时提示用户创建。
EZDML在保存数据库文件时,会保留历史文件记录,可以随时加载历史文件,实现一定的版本管理功能。
EZDML允许对数据库文件进行简单的锁定/解锁操作,方便多个用户之间协作,避免同时修改产生冲突(3.58版起支持)。
下面我们从头开始一步一步说明如何使用数据库文件功能。
连接数据库
打开自带demo文件(D:\EZDML\demo_ch.dmj),执行菜单命令“文件|保存到数据库”(或按住SHIFT键点工具栏上的保存按钮):
弹出保存数据库文件的窗口,并提示用户登录数据库:
连接成功后选择用户,输入文件名,点“确定”保存。
创建表结构
EZDML需要在数据库创建一个表也保存文件。第一次保存时,会提示用户创建表结构:
点“确定”后,弹出生成表结构的界面,连接数据库,指定用户名,生成SQL:
可以看到,需要创建ezdml_meta_file这一个表,大家也可以自己创建,其描述字内容为:
1 | ezdml_meta_file(EZDML文件) |
执行生成,完成创建,注意要选择用户模式名(这里为eztest),不然会创建到默认用户模式下:
然后可以关闭生成窗口,回到保存界面。
保存到数据库
创建表结构后,再次保存,出现保存进度:
在提交到数据库前,会提示输入备注:
确定,保存成功后,会浮动提示:
保存到数据库后,模型文件名变为db://开头的URL格式:
保存时会计算文件的HASH值并进行比对,如果文件没有任何变化,意味着这一次保存很可能是没有必要的,会提示用户确认:
从数据库加载
打开EZDML,新建空白文件,执行菜单命令“文件|从数据库加载”(或按住SHIFT键点工具栏上的打开按钮),弹出打开窗口:
选择文件,点击确定,加载数据库文件,结果如下图:
文件变更通知
对于数据库文件,EZDML新版(3.45起)会自动检测数据库文件的修改时间有无变化,有变化则通知用户更新。只要一个人修改保存了模型(或修改了文件备注),所有人都会及时得到相应通知:
关于数据库文件更新通知补充说明如下:
- 当前模型为数据库文件时,EZDML仍然会定时保存本地临时文件,一是加快打开速度,二是记录编辑版本历史防止意外损失;
- 会每隔10秒检查一次数据库文件有无更新;
- 关闭再重新打开时,也会检查数据库文件有无更新,有更新时会提示跳过本地缓存文件;
- 检查文件更新的前提是原数据库连接正常且文件存在,如果数据库连接断开,或连接发生变更(连到其它数据库了),或文件被其他人改名或删除,则会跳过检查;
- 检查到变更进行更新提示时,会将修改人和文件备注同时显示出来,因此修改保存文件者应尽量编写好合适的备注内容;
- 加载数据库更新内容时,会覆盖本地文件内容,如果本机文件和数据库文件同时发生了变更,产生了冲突,就要小心地进行备份和合并了;
- 从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,但对程序员或设计师之间共享一些模型是有帮助的。