本文记录了用灵基自动化扩展职位基础资料的实战过程。通过自然语言对话,灵基自动完成表单扩展、字段添加、布局调整、KingScript插件开发与注册,实现了控制策略联动备注、日期交叉校验等功能。整个过程零代码,仅需人工配合平台扩展操作,将传统多步骤流程压缩为一次对话,显著提升效率。

痛点

在 HR 模块的实际业务中,我们经常需要对标准基础资料进行扩展——比如在"职位"基础资料上新增字段、配置联动逻辑、设置日期校验。传统方式下,这需要经历:打开开发工具→扩展表单→手动加字段→调布局→写 Java 插件→编译部署→重启服务,整个流程耗时长、门槛高,非开发人员几乎无法参与。

那么,能不能用自然语言对话的方式,让 AI 帮我们完成从需求到实现的全流程自动化?本文记录了用灵基在职位基础资料(hbjm_jobhr)上扩展三个字段并实现联动逻辑的完整实战过程。

实践过程

一、需求描述

需求很明确,两条:

  1. 添加生效开始日期和生效结束日期字段,控件选择上要走控制——结束日期不能选到早于开始日期的日期,反之亦然

  2. 添加备注字段,当控制策略选择不同值时在备注中填写对应含义说明,当控制策略选"私有"时同步设置备注字段为只读

直接用自然语言告诉灵基,它就能自动理解并开始执行。

二、自动扩展表单

灵基首先发现"职位"表单(hbjm_jobhr)属于原开发商 hbjm,当前开发商 kdtest 没有编辑权限。它自动引导我到苍穹平台完成表单扩展,生成了扩展表单 kdtest_hbjm_jobhr_ext。

这个过程完全由灵基驱动——它检测到权限不足后,明确告诉我需要到平台做扩展操作,等扩展完成后继续执行,不需要我自己查文档找扩展入口。

三、添加字段 + 自动布局

灵基通过 quickfield 命令依次添加了三个字段:

字段

类型

布局位置

生效开始日期

DateField

基本信息面板,生效日期之后

生效结束日期

DateField

基本信息面板,生效开始日期之后

备注说明

TextField

基本信息面板,单独占整行(FullLine)

字段添加后,灵基自动验证了布局结构,确认三个字段都已正确挂载到基本信息面板(fs_baseinfo)中。备注说明字段还通过 setProperties 设置了 FullLine 属性,实现单独占整行的效果。

四、控制策略选项处理

控制策略字段(ctrlstrategy)是继承自原表单的 ComboField,原有选项值为:

标签

私有

7

自由分配

2

全局共享

5

灵基通过 getPropertySchema 读取到字段的完整属性配置,确认了选项值。

五、即时触发值更新

这是容易被忽略但非常关键的一步。灵基为三个联动字段开启了"即时触发值更新"(FireUpdEvt)属性:

  • 控制策略(ctrlstrategy)

  • 生效开始日期(kdtest_eff_start_date)

  • 生效结束日期(kdtest_eff_end_date)

如果没有开启这个属性,字段值变化时不会触发 propertyChanged 事件,插件的联动逻辑就不会生效。灵基通过 setProperties 命令一次性设置完成。

六、KingScript 插件开发

这是整个流程中最核心、也最具挑战性的部分。灵基选择了 KingScript 方式(无需重启),而不是传统 Java 插件方式(需要编译部署重启)。

插件自动注册

灵基通过 createScript 创建 KingScript 脚本后,自动调用 registerPlugin 完成注册。下图是插件编辑器界面,红框标注的就是灵基自动注册的 KingScript 插件:

关键发现:KingScript 插件注册为 BILL_FORM 类型才能在表单插件编辑器中看到,而不是 BASEDATA_CONTROLLER 类型。前者注册到表单级别插件列表,后者注册到基础资料控制器位置,两者不可混用。

KingScript 语法规范

灵基通过苍穹平台的脚本开发平台自动生成了插件代码,如下图所示:

灵基在多次试错中总结出了苍穹平台 KingScript 的正确写法:

  • import 语法:使用 ES Module 风格,模块路径以 @cosmic/ 前缀

  • 基类:AbstractBillPlugIn(从 @cosmic/bos-core/kd/bos/bill 导入)

  • 事件参数:EventObject 和 PropertyChangedArgs 分别从对应路径导入

  • 导出方式:let plugin = new ClassName(); export { plugin };

API 规范

在插件代码中,苍穹平台的 API 有严格规范:

  • 控制字段只读:getView().setEnable(Boolean, String[]),参数顺序是布尔值在前、字段数组在后,没有 setLock 方法

  • 日期比较:用 compareTo() 方法,不是 after()/before()。compareTo 返回 >0 表示晚于,<0 表示早于

  • 取值赋值:getModel().getValue("fieldKey") / getModel().setValue("fieldKey", value)

  • 日期可选范围:DateEdit 控件的 SelectableRange 是只读复杂属性,不支持运行时动态设置,只能通过数据校验替代

七、最终效果

控制策略联动备注说明

切换控制策略时,备注说明字段自动填入对应含义。左侧选择"全局共享"时备注显示"全局范围内所有用户均可查看和编辑该职位",右侧选择"私有"时备注显示"仅数据创建者及指定授权人员可查看和编辑该职位":

当生效开始日期晚于结束日期时,系统自动弹出提示并清空不合法的日期值:

与灵基的沟通创造过程

这一章节记录了整个实践中与灵基的沟通方式、遇到的问题和解决路径,方便其他同事参考。

沟通方式:自然语言对话驱动

整个过程不需要写任何代码,全部通过自然语言对话完成。我的输入大致是这样的:

"在职位基础资料上实现如下需求:1、添加生效开始日期和结束日期字段,控件选择上要走控制;2、添加备注字段,当控制策略选择不同值时填写相关策略的含义说明,当控制策略选私有时同步设置备注字段为只读"

灵基接收到需求后,自动分解为多个执行步骤,每一步都会告诉我它在做什么,遇到问题会停下来等我处理。

遇到的问题与解决过程

整个过程并非一帆风顺,先后遇到了多个问题,但每个问题灵基都能定位原因并给出解决方案:

问题1:表单权限不足

灵基执行字段添加时,报错"表单不属于当前开发商"。灵基自动检测到原因——原表单属于 hbjm 开发商,当前开发商 kdtest 没有编辑权限。灵基引导我到苍穹平台完成表单扩展操作,扩展完成后灵基自动继续执行后续步骤。

问题2:控制策略选项值不正确

我最初告诉灵基控制策略的选项值是 private/free_assign/global_shared,但灵基通过 getPropertySchema 读取到原表单的实际选项值是 7/2/5(数字值)。灵基删除了错误添加的选项,更新了 KingScript 插件中的判断逻辑,使用正确的数字值。

问题3:KingScript 语法错误

灵基最初用 Java 风格的 import 语句写 KingScript,平台报 Babel 解析错误。我到平台上查看了系统默认生成的脚本模板,把正确的 import 语法发给了灵基,灵基参照模板格式重写了脚本。这说明人机协作中,人提供平台知识,灵基提供执行能力,两者配合才能高效完成。

问题4:API 方法名错误

灵基先后尝试了 setLock、setMin、setMax、setRangeMin、setRangeMax 等方法,全部报"Unknown identifier"错误。最终灵基查阅苍穹平台文档,找到了正确的 API:控制字段只读用 setEnable(Boolean, String[]),日期比较用 compareTo()。

问题5:即时触发值更新未开启

插件注册成功但联动不生效,原因是字段没有开启"即时触发值更新"(FireUpdEvt)属性。灵基通过 setProperties 命令为三个联动字段一次性开启了该属性。

沟通经验总结

  1. 需求要清晰但不需要技术化——告诉灵基"要什么效果"即可,不需要告诉它"怎么实现"

  2. 遇到错误把报错信息发给灵基——灵基能从报错信息中定位问题并调整方案

  3. 平台操作需要人配合——灵基能自动完成大部分操作,但涉及权限、扩展等平台操作需要人到平台手动完成

  4. 人提供平台知识,灵基提供执行能力——当灵基不熟悉平台的特定语法时,人可以到平台上查看默认模板,提供给灵基参考

效果

通过灵基全流程自动化,最终实现了:

  • 3个新字段自动添加到职位基础资料扩展表单,布局位置精准

  • 控制策略联动完全自动化——切换策略值时备注说明自动填入、只读状态自动切换

  • 日期交叉校验生效——选择不合法日期范围时立即清空并提示

  • 零代码编写——全程自然语言对话,灵基自动生成 KingScript 脚本并注册

整个过程中,灵基自动完成了表单扩展、字段添加、布局调整、属性设置、脚本创建、插件注册等全部操作。唯一需要人工介入的是到平台完成表单扩展操作(因为权限限制)。

总结

这次实践最大的体会是:用灵基做功能扩展,最大的价值不在于取代手写代码,而在于它能把一个需要多个工具、多个步骤、多个角色协作的流程,压缩成一次对话。

几个关键经验:

  1. 表单扩展是前提——灵基能自动检测权限并引导扩展,但扩展操作本身需要到平台完成

  2. 即时触发值更新要开启——不开启 FireUpdEvt,propertyChanged 事件不会触发,联动逻辑全部失效

  3. KingScript 比 Java 插件更适合灵基——无需编译部署重启,改完即生效

  4. API 要查文档不能猜——苍穹平台的 API 有严格规范(如 setEnable 的参数顺序、日期比较用 compareTo),猜出来的方法名大概率不对

对于还未体验过用灵基直接基于 AI HR 开发功能的同事,建议从一个简单的字段扩展+联动需求开始,感受全流程自动化的效率提升。

金蝶社区文章地址:#玩转灵基# 用灵基全流程自动化扩展职位基础资料功能实战

Logo

一站式 AI 云服务平台

更多推荐