Skip to content

GoodERP代码变更的限制

开阖软件 Jeff Wang edited this page Oct 14, 2017 · 1 revision

滚动发布

GoodERP采取滚动发布的更新原则,应保证更新不会造成用户已有数据丢失,并保证程序可升级到最新版本运行,所以变更必须遵循以下原则:

最少变更原则

每个变更都要尽力保证价值与风险对等。如果变更对系统现有数据和运行稳定性有很大的影响但未增加相应的价值,变更就不会被合并。考虑通过继承的方式在独立的模块中实现(而非直接修改核心功能模块)。如 tree_zero_display_blank

  • 尽量避免增加非存储的字段
  • 视图、菜单、默认值等xml文件尽量不动
  • xml文件的变更不要同时对python逻辑造成影响

无“颠覆”原则(技术或功能特性)

一般技术上的重大变更对最终用户来说都是风险低于价值的。而项目主导者也要避免贡献者提交超出范围的功能。

避免单纯粉饰原则

针对代码格式、编码规范、PEP8标准等,不改变系统功能的变更

模型的公开方法参数无变更原则

是指那些没有下划线开头(按python习惯约定为私有方法,不推荐外部直接调用)的方法

数据结构无变更原则

无论如何都不能做不兼容的数据列定义变更

  • 添加无默认值的必输字段
  • 删除字段
  • 对字段类型做无法自动转换的修改 级联删除的策略和字段长度的修改一般是必要的,在保证兼容的前提下可稍作变更

自动填坑原则

对于不兼容的变更,在极端情况下,可以添加额外的自动安装的模块,以便修复变更对现有数据的破坏。

引用标识不变原则

  • 不可改变现有模块XML文件中记录的ID值
  • 不允许删除可能已被现存数据库用户用到的模块数据记录
  • 除非变更非常必要且记录的 noupdate 值为 0。

工作流结构无变更原则

尽量避免新建或移动流程节点、流向,除非保证对现有的工作流实例是100%安全的,无论是否更新均不带任何破坏。

升级提示原则

  • 如果变更要求用户在应用列表升级对应的模块,要及时地通知用户并保证用户的升级是安全的。
  • 一次变更不能要求用户更新2个不同的模块。

补丁立即生效原则

关键的安全补丁修复不能要求更新模块,而是拉取最新代码并重启应用即生效。