学习星空最关键在于了解业务,现实中的企业业务运行映射到系统的功能操作,这是最核心的。而作为星空体系下的开发人员,在了解业务的基础上,对星空系统的运行原理和BOS平台的理解对比其他角色的人员,又有更高的要求。
系统的二开很依赖经验,社区的知识和文章提供了很多开发的技巧和解决方案。仅仅依赖社区老师的分享远远不够,主动从可触达的系统功能、组件去分析研究更为关键。
有时候想要了解标准功能的插件是如何编写构建的,调用方式是怎么样的,那么反编译标准组件看源码就少不了了。 分享一个从功能出发,查阅源码的方法(庞大的星空系统凝聚了多少老师的智慧结晶啊)
以其他出库单为例,对于"库存查询",从BOS元数据找到对应的配置入口,识别是"表单操作"
由表单类型,在对应数据表中找到实现的组件名
类似的看"无源单批号拣货服务",同样的操作方式查找,识别是"表单服务"
SELECT * FROM T_MDL_FORMBUSINESS -- 可选表单服务
SELECT * FROM T_MDL_FORMBUSINESS_L -- 可选表单服务多语言
SELECT * FROM T_MDL_FORMOPERATIONTYPE -- 可选表单操作
SELECT * FROM T_MDL_FORMOPERATIONTYPE_L -- 可选表单操作多语言
对应组件及实现类:
Kingdee.K3.SCM.Business.DynamicForm.Operation.QueryStock,Kingdee.K3.SCM.Business.DynamicForm
Kingdee.K3.SCM.Business.DynamicForm.BusinessService.SingleLotPicking, Kingdee.K3.SCM.Business.DynamicForm
加载对应组件,反编译插件代码
说明:
1、反编译加载组件把组件放在包含所有组件的目录里,相当于加载bin目录下的组件,这样反编译会加载对应引用源码,较好的还原系统源码
2、反编译的源码由于解析的原因,部分变量可读性较差,跟源码还是存在一定差异,缺少注释,逻辑没问题,不影响学习使用
3、对于表单插件、列表插件等同样的原理,进行反编译
4、将系统功能的运行和代码相结合,对于二开的学习还是帮助挺大的
推荐阅读