1. 低代码DevOps教程 - 人事管理

本教程指导您如何使用华炎魔方,一键启动远程开发环境,创建人事管理应用,并基于华炎魔方软件包开发生命周期,实现包括开发、调试、测试、部署在内的整个DevOps开发生命周期管理。

业务需求

在人事管理需求中,最常见的就是需要对员工花名册数据进行维护,而花名册数据会随入职、转正、调动、离职等过程变更员工状态,一般来说这些员工数据变更都会需要按照公司内部章程经历正规的流程审批过程。

下面我们以实现人事管理应用中入职功能为例,了解如何在华炎魔方中创建人事管理应用,包括在对象设置界面进行数据建模,并同步到代码,然后进一步基于华炎魔方低代码内核编写代码来实现高级业务逻辑。

启动远程开发环境

请参考官网教程 开发环境部署 - DevOps 远程开发 来启动远程开发环境,主要分为三个步骤:

可视化开发

数据建模

请参考教程 创建自定义对象,在对象设置界面分别新建名为“入职管理”和“花名册”的对象,并参考文档 字段类型索引 为它们创建字段。

提示:因为入职管理过程需要走审批流程,而配置审批表单时选择框字段类型目前并不能分别设置选项的显示名和选项值,所以这两个对象中在设置选择框类型的字段时需要把其选项的显示名和选项值设置成同一个值,比如“证件类型”字段的第一个选项“身份证”的显示名和选项值应该都设置为“身份证”而不能分别设置为”身份证“和”identity”。

入职管理

  • 员工名称:文本类型字段。
  • 证件类型:选择框字段类型,有“身份证”、“护照”和“其他”三个选项。
  • 证件号码:文本类型字段。
  • 手机号:文本类型字段。
  • 预计入职日期:日期类型字段。
  • 入职状态:选择框字段类型,有“待入职”、“已入职”和“放弃入职”三个选项。
  • 备注:多行文本类型字段。

请注意应该把该对象功能开关中以下开关打开:

  • 允许搜索
  • 允许配置对象流程
  • 允许查看申请单
  • 启用弹出窗口查找模式

花名册

  • 员工名称:文本类型字段。
  • 证件类型:选择框字段类型,有“身份证”、“护照”和“其他”三个选项。
  • 证件号码:文本类型字段。
  • 手机号:文本类型字段。
  • 员工状态:选择框字段类型,有“试用”、“正式”和“离职”三个选项。
  • 入职单:相关表类型字段,关联到后面的“入职管理”对象。
  • 备注:多行文本类型字段。

请注意应该把该对象功能开关中以下开关打开:

  • 允许搜索
  • 启用弹出窗口查找模式

配置审批流程

请参考教程 设置和维护审批王 - 表单设计设置和维护审批王 - 流程设计,新建一个名为“入职申请流程”的流程,先在“表单设计器”中配置与上面“入职管理”的对象一样的字段,然后在“流程设计器”中配置入职申请流程。

为方便测试可以按以下截图只配置最简单的三个流程步骤,并把“审批”步骤的”处理人“配置为“申请人”,即申请人在入职管理对象记录详细界面点击“发起审批”按钮提交申请单时是提交给自己审核。

配置对象流程映射

请参考教程 设置和维护审批王 - 对象流程映射 在上述新建的“入职申请流程”中为对象“入职管理”配置对象流程映射,确保流程表单至对象及对象至流程表单的字段映射关系配置正确。

配置完成后就可以在对象“入职管理”的记录详细界面右上角看到名为“发起审批”的按钮。

配置字段权限

因为对象“入职管理”要走审批流程,所以需要额外配置该对象的字段权限,让其记录详细界面上显示“审批状态”字段用于查看流程审批状态。

请在”设置“应用中进入“入职管理”对象的对象设置界面,然后在“对象权限”子表中找到“admin”权限集的子表记录,并点击其左侧序号链接来进入对象权限记录详细界面,在对象权限记录详细界面我们可以看到底部有一个名为”字段权限“的子表,请按以下步骤来配置字段权限:

  • 找到要设置权限的字段“审批状态”。
  • 双击“允许查看”单元格来编辑,然后勾选该单元格中的勾选框。
  • 点击表格空白处可以看到页面底部弹出了保存按钮,点击保存来保存字段权限配置。

配置操作按钮

请参考教程 开发人员快速向导 - 自定义操作按钮,为对象“入职管理”设置界面新建一个名为“确认入职”的按钮:

  • 显示名称:确认入职
  • 显示位置:请选择“显示在记录查看页右上角”,以让该按钮显示在“入职管理”记录详细界面右上角。
  • 执行的脚本:请参考文档 前端函数索引 - SteedosUI 编写按钮事件脚本,实现弹出一个名称为“确认入职”的表单填写窗口,在该窗口中显示的是新建“花名册”记录时需要填写的字段信息,当点击该窗口右下角的“提交”按钮时可以新建一条“花名册”记录。

需要注意点击该按钮后窗口弹出时应该把当前“入职管理”记录中相关字段信息自动填入到适当的字段中,并且新窗口中“入职单”这个字段应该也被自动填充为当前“入职管理”记录。

配置应用

请参考教程 创建自定义应用,创建一个名为“人事管理”的应用,并把上面创建的“花名册”和“入职管理”对象菜单加到该应用中。

阶段测试1

以上是实现人事管理应用业务需求过程中需要在界面上做的开发内容,在进行下一步开发前我们应该先测试下之前的开发效果是否正常。

  • 应用入口:点击左上角的九宫格图标,在弹出的“应用程序启动器”中可以看到刚新建的名为“人事管理”的应用,点开该应用能在顶部导航看到上面刚新建的“花名册”和“入职管理”对象菜单。
  • 点击“入职管理”菜单,并在列表新建一条“入职管理”记录,填写相关信息并提交后会进入记录详细界面。
  • 此时我们在“入职管理”记录详细界面可以看到表单中有显示“审批状态”字段,其右上角也额外显示了名为“发起审批”和“确认入职”的按钮。
  • 点击“发起审批”按钮可以发起一个“入职申请流程”的申请单,发起后回到“入职管理”记录详细界面可以看到右上角的“发起审批”按钮变成了“查看审批单”。
  • 点击“确认入职”按钮可以在弹出的表单窗口中新建一条“花名册”的记录,并且该表单中默认填充了“入职管理”记录中相关字段值。

低代码开发

同步为代码

请参考教程 开发人员快速向导 - 同步元数据,把之前在界面上配置的相关元数据分别同步为代码,方便后续进一步通过传统编写代码的方式,增加处理业务逻辑的API接口、触发器、按钮等来实现高级业务逻辑。

推荐使用 多软件包模式 开发,并 设置元数据同步路径 为其中某个软件包文件夹,但是请注意如果希望把相关功能完整发布为一个软件包的话,上面的元数据应该都统一同步到同一个软件包文件夹中。

同步为代码后,我们需要通过编写代码的方式进一步实现以下需求:

  • “入职管理”对象记录详细界面右上角的“确认入职”按钮应该在“入职申请流程”申请单审核通过后才显示,审核不通过或审核中的情况下不应该显示出来。
  • 点击“入职管理”对象记录详细界面右上角的“确认入职”按钮新建好对应的“花名册”记录后,应该自动把当前“入职管理”对象记录的“入职状态”属性从“待入职”变更为“已入职”。

修改操作按钮

界面上配置的元数据同步为代码后,我们可以在代码中看到“入职管理”对象元数据文件夹中有自动多出来“确认入职”按钮的元数据代码,请参考教程 自定义操作按钮,为该按钮补充按钮 Visible函数,在其中编写实现只在“入职申请流程”申请单审核通过后才显示该操作按钮的逻辑代码。

提示1:应该判断只有当前“入职管理”记录的“入职状态”为“待入职”且入职申请单审核通过后才显示按钮。

提示2:所有对象记录上都默认有一个名为instance_state的字段,该字段总是会自动同步当前记录关联的申请单审批状态值,只有当该字段值为approved时才表示申请单审核通过。

Deploy代码测试

当开发人员在远程开发环境中编写了代码后,可以通过华炎魔方VS Code代码同步插件Deploy改过的代码元数据到界面上,然后就可以测试了,整个过程并不需要停止服务再重新启动。

上面我们修改了“入职管理”对象上的“确认入职”按钮的元数据代码,请参考教程 开发人员快速向导 - 上传元数据 把修改后的代码Deploy到界面上,后续我们可以在“阶段测试2”小节确认该按钮功能是否正常。

使用华炎魔方VS Code代码同步插件不但可以通过“Deploy”来把本地的代码发布到数据库中,也可以通过“Retrieve Source”操作来把在界面上可视化开发的元数据同步成代码下载到本地,对于可以通过在界面上进行可视化开发来维护的元数据,我们推荐开发人员不要在本地VS Code中开发,以尽量保证系统中的元数据配置始终来源于同一个方向,这样可以避免元数据重复等问题的发生。

编写触发器

请参考教程 开发人员快速向导 - 触发器 为“花名册”对象编写触发器,实现当记录新建后自动把其入职单属性值引用的“入职管理”记录的“入职状态”属性从“待入职”变更为“已入职”。

提示:在触发器中实现数据的增删改查可以参考文档 ObjectQL服务端语法说明

重新加载软件包测试

目前并不是所有元数据都支持Deploy代码来测试的,而且我们也有可以在项目中编写的并不是元数据代码,比如我们上面编写的触发器,这时虽然无法通过Deploy来测试修改后的效果,但是可以通过重新加载软件包的方式来让整个软件包“重启”,而不需要重启华炎魔方服务来测试这些代码。

请参考文档 开发人员快速向导 - 重新加载软件包 来重新加载当前软件包,以便我们后续在界面上测试上面编写的触发器代码是否能正常工作。

阶段测试2

在把元数据同步为本地代码后,我们以编写代码的方式进一步完整实现了包括从入职流程审批,到最终花名册记录的入库,以及入职后入职状态的自动变更在内的完整入职功能。

在进行下一步开发前我们应该再回顾下业务需求,完整测试下之前的开发效果是否正常。

  • 应用入口:点击左上角的九宫格图标,在弹出的“应用程序启动器”中可以看到刚新建的名为“人事管理”的应用,点开该应用能在顶部导航看到上面刚新建的“花名册”和“入职管理”对象菜单。
  • 点击“入职管理”菜单,并在列表新建一条“入职管理”记录,填写相关信息并提交后会进入记录详细界面。
  • 此时我们在“入职管理”记录详细界面可以看到表单中有显示“审批状态”字段,其右上角额外显示了名为“发起审批”,但是并没有显示“确认入职”的按钮。
  • 点击“发起审批”按钮可以发起一个“入职申请流程”的申请单,发起后回到“入职管理”记录详细界面可以看到右上角的“发起审批”按钮变成了“查看审批单”,同时我们还会看到右上角又额外多了一个”确认入职”的按钮。
  • 点击“确认入职”按钮可以在弹出的表单窗口中新建一条“花名册”的记录,并且该表单中默认填充了“入职管理”记录中相关字段值,同时“入职管理”记录的“入职状态”值变成了“已入职”。

Debug模式调试

如果未能测试通过,有必要的话,可以参考教程 Debug模式调试 进行断点调试快速定位错误。

提交代码

如果能测试通过的话,应该参考教程 提交代码 随时把代码提交到 Git仓库 中。

进一步开发

上面阶段测试2测试通过后就表明我们已经完整实现了人事管理应用中的“入职功能”,有兴趣的话,参考该功能的实现过程,在必要的时候查阅更多 华炎魔方官网文档,就可以轻松实现人事管理应用中剩余的 转正、调动、离职等业务需求。

发布软件包

我们之前强调过应该把人事管理应用相关元数据统一存放到某一个软件包文件夹中,这样我们就可以把人事管理应用发布为一个完整的软件包了,请参考教程 软件包发布与安装 来发布人事管理应用为一个软件包。

安装软件包测试

为了更准确更完整的测试开发成果,我们推荐重新启动一个全新的 远程开发环境 专门用于测试,无论是远程开发环境提交代码后需要进行阶段测试还是工程完工后需要完整测试,我们随时可以在独立的远程测试环境中更新最新代码来测试相关功能。

当项目工程拆分为一个或多个软件包发布后,我们更推荐的严格测试方式是,重新创建一个全新的华炎魔方模板项目,然后再为其启动一个 远程开发环境 并使用安装软件包的方式来测试相关功能。

部署

基于华炎魔方软件包开发的应用,不需要像传统开发项目一样部署整个项目代码到生产环境,而只需要把发布后的软件包直接安装到部署好的华炎魔方生产环境即可,这里所说的生产环境可以是 华炎魔方客户门户 这样的多租户云环境,也可以是基于 私有部署 - Docker (推荐)部署的私有华炎魔方项目生产环境。

也正是得益于基于华炎魔方软件包的DevOps开发方式,任何个人开发者或开发团队开发的软件包都可以直接放到 华炎魔方应用 市场售卖。