
简介面向用友NC6.5开发者的系统教程适合需要从零搭建NC开发环境、掌握数据库与账套机制并落地个性化业务功能的后台开发人员。文档从建立标准数据库结构、创建NC数据库用户、安装代码、配置数据源连接并部署到开发环境搭建均给出细致步骤Eclipse与数据库连接工具的配置讲解可帮助开发者快速准备本地研发环境。核心案例HelloNC贯穿新建NC项目、编写后台服务、通过UPM文件注册服务、从开发环境运行及节点注册等环节完整演示了后台服务与界面联动的实现方式。资源为单个PDF文件压缩包16.38MB已有478人学习适合初学者入门也可作为中高级开发者的备查手册。指南还覆盖业务元数据、实体组件、操作组件与持久化框架等进阶内容目录结构清晰能显著缩短NC专项开发的探索时间。 说实话第一次拿到《NC6X开发指南.pdf》的时候我内心是拒绝的。厚厚一本目录长得像字典各种术语堆在一起翻了几十页都在讲平台概念根本不知道从哪下手。直到在供应链项目上被单据开发连续折腾了两周再回头翻这份指南才发现真正值钱的东西全藏在目录背后。NC6X的二次开发从来不是打开IDE按F5跑通一个接口就完事。它是一整套围绕元数据、单据模板、后台动作、节点权限展开的业务开发体系。如果你正准备做NC6X的项目或者刚接手一个基于NC6X的集团ERP二次开发这篇内容会把这份指南里最核心的东西帮你拆开揉碎按实战顺序讲清楚。1. 先搞懂NC6X是什么再决定怎么读这份指南1.1 一套业务框架不是一个普通后台项目很多从传统Java开发转过来的人第一次打开NC6X的代码会有种错觉这不就是个SSH项目吗然后就开始找Controller、找Service、找Mapper结果翻了半天连一个正经的XML配置文件都没找全。原因在于NC6X本质上不是让你从零写CRUD的框架而是一套以UAP平台NC标准模块为底座的企业业务框架。NC633、NC65乃至后续NC Cloud的不少底层套路都一脉相承。在这个体系里业务单据才是开发的核心单位增删改查这些事平台替你做了大半你需要做的是定义好数据结构元数据、配置好界面单据模板、把业务动作挂到按钮上后台Action。所以读开发指南的时候千万别抱着我要找Controller怎么写的心态。指南里讲元数据、讲单据模板、讲动作注册这些才是整个开发体系的真正骨架。1.2 这份指南最该先读的三个部分市面上的NC6X开发指南版本很多但结构大同小异。我的建议是第一遍不要从头读到尾先把下面这三块找出来精读元数据与实体管理搞懂一张业务表是如何通过UAP平台注册出来的而不是直接写SQL建表。单据开发与模板配置搞懂卡片界面、列表界面是怎么通过模板配置生成的。动作与后台服务扩展搞懂按钮点击之后代码是怎么被调起来的如何在保存、删除、审批这些动作里塞进自己的逻辑。这三块是NC6X开发的最小知识闭环。先把它们读透指南里其他内容比如权限、流程、报表、接口对接都是在往这个闭环上挂东西。2. 环境准备与工程结构照着指南搭环境时最容易被忽略的细节2.1 编译与部署环境的版本匹配NC6X的开发环境说简单也简单说麻烦是真麻烦。最怕的不是装不上而是版本对不上。不同版本的NC6X对应的JDK版本、中间件、数据库驱动都有差异一旦环境不对后面的问题会一个接一个冒出来。实操中我的建议是先确认项目现场用的是哪个版本然后照着这个版本来搭建环境。常见的组合大致是环境项常见取值需要注意的事JDKJDK 1.7或1.8高版本JDK未必兼容别追新数据库Oracle / PostgreSQL / SQL Server驱动版本必须和NC版本配套中间件WebLogic / 自带轻量中间件开发阶段用自带中间件最省事开发工具Eclipse加NC插件 / IDEA加插件关键在于能正常发布模块到NCHome我见过太多人在JDK版本上栽跟头一启动就报各种莫名其妙的ClassNotFoundException。排查半天发现是本地JDK版本跟中间件不兼容。所以搭环境前先把指南里关于环境要求的章节找出来对一遍比什么都重要。2.2 别被NCHome目录吓到它是有规律的第一次打开NCHome目录满屏的modules、bin、hotwebs确实会让人头皮发麻。但实际开发中你打交道最多的就那几个NCHome/bin启动脚本、系统配置工具sysConfig都在这里。NCHome/modules按模块存放业务代码和资源配置开发的时候你的项目就在这里。NCHome/hotwebs前端资源的部署目录改界面资源后要部署到这里才会生效。NCHome/logs运行日志目录排查问题先来这里看。理解这个结构之后再去看指南里的部署与发布章节就不会一头雾水了。你只需要记住一句话改了Java代码要停服编译部署改了元数据和模板要在UAP里发布改了前端资源要部署到hotwebs并清缓存。2.3 把代码跑起来的三个必备动作开发指南里通常会讲如何部署模块但实际项目里把NC6X跑起来其实就三件事用sysConfig配置好数据源和中间件这一步决定系统能不能连上数据库。启动中间件等日志里出现server start之类的标识说明启动成功。用管理员账号登录系统在UAP或系统管理里发布元数据、注册节点和菜单然后分配权限。很多人第一步走通了第二步也启动了结果登录进去看不到自己的功能节点就开始怀疑人生。其实十有八九是第三步没做全元数据发布了但节点没注册或者节点注册了但权限没分配给你当前账号。指南里讲系统初始化和权限管理的章节就是用来解决这类问题的建议提前画个重点。3. 元数据驱动开发NC6X里最核心的一套玩法3.1 从一张报销单的诞生看懂元数据的意义在传统Java项目里你要做一张报销单第一步大概是建表第二步写个实体类映射第三步写增删改查的接口和页面。在NC6X里顺序完全反过来。你先打开UAP的元数据管理新建一个实例如ReimburseBill给它加一堆属性报销人、部门、报销金额、备注……每个属性还能配置字段类型、长度、是否必输、是否为引用类型。这些属性并不直接等于数据库字段但当你点击发布之后UAP会自动按照元数据生成数据库表。这个设计最大的好处是数据结构不再被代码锁死。后面业务要加字段不用改类、改XML、跑数据库脚本直接在元数据上扩展然后重新发布开发效率完全是两个量级。这就是为什么指南里花大篇幅讲元数据——它确实是整个NC6X开发的地基。3.2 从模板配置到界面生成少写几千行前端代码数据库表有了接下来就是界面。在NC6X里界面同样不是手写的而是靠单据模板配置出来的。你进入模板管理选择刚建好的报销单实体然后画卡片模板和列表模板。卡片模板对应增删改查的单据界面列表模板对应查询列表。把字段拖到界面上设置显示名称、是否只读、是否参照保存发布一个能跑的单据界面就出来了。这里我多说一句前期配置模板时多花点心思后面能省非常多事。比如某些字段在录入时要求从参照里选你就要提前把参照类型配好某些字段要根据金额自动带出税率那就用显示公式。指南里关于显示公式和编辑公式的内容值得反复看几遍很多界面怎么和我想的不一样的问题根源都在公式配置上。3.3 把业务逻辑挂到Action上按钮才会真正干活界面只是壳真正的业务逻辑在后台Action里。NC6X的典型动作链路是界面上点保存按钮 → 触发注册的动作 → 调用后台Action → 执行保存逻辑。所以在指南里你会频繁看到BillAction、BillVO、BillManage这些类。举个例子我要在报销单保存之前做一次金额上限校验步骤是新建一个类继承BillAction。重写保存动作对应的方法比如doAfterSave或doBeforeSave。在这个方法里拿到单据数据做校验或加工。通过动作注册把按钮和这个Action绑定起来。写出来大致是这个感觉public class ReimburseBillAction extends BillAction { Override protected void doBeforeSave(ManageableBill bill) throws Exception { BaseVO[] vos bill.getBillVOs(); // 遍历单据内容做自己的业务校验 } }不要被这些类名唬住。它们的核心逻辑和Spring里的Service层没有本质差别只是被NC6X封装了一层。你只要记住什么样的界面操作对应什么样的Action方法再配合指南里的动作注册说明就能很顺畅地写业务代码了。4. 真正让我印象深刻的几个坑指南上通常不会写4.1 元数据发布了界面却一点不变这是新人踩得最多的坑。在UAP里把元数据发布成功数据库表也看到了但登录系统一看界面还是老样子新加字段不显示。后来排查才发现模板也有缓存。改完元数据之后如果模板还是旧版本前端界面不会自动更新。解决方法是在模板管理里把对应单据模板重新编译发布清理前端缓存包括浏览器缓存和NCHome下的临时文件再重新登录。顺带一提站在不同角色比如集团和公司登录默认加载的模板可能不一样。你改的是公司模板但登录用的账号匹配的是集团模板那自然看不到变化。检查模板分配关系是这类问题里最容易被忽略的一环。4.2 主子表保存顺序与事务边界问题我第一次在NC6X上开发带子表的业务单据时遇到过一个很诡异的现象子表数据偶尔会丢或者保存时报主外键约束错误。后来仔细看后台日志才发现主子表的保存顺序是平台控制好的但如果你在doBeforeSave里自己手动去插子表数据或者在一个不恰当的时间点提前保存了子表记录就会破坏平台自己的事务顺序导致数据异常。这里的原则是尽可能不要在保存动作里自己做插入操作而是通过修改单据VO数据让平台统一保存如果确实要额外写表尽量在主表保存完成之后比如doAfterSave再处理并且要注意事务的一致性和异常回滚。4.3 列表查不到数据十有八九是权限和查询模板的问题有段时间用户反馈列表里看不到新做的单据代码没问题数据在表里也存在。查来查去发现两个原因叠加了一是当前操作员没有该节点的数据权限NC6X的权限控制是细到数据行的给你的角色分配了节点权限不代表你能看到所有人的数据。二是列表查询模板里的字段条件太严默认查询条件把新数据过滤掉了。这类问题在指南里分散在权限管理和查询模板两章很少有人会把它们联系起来。但实际排查问题的时候这两个地方必须一起检查。4.4 遇到问题先看日志别靠猜NC6X项目出问题时我最怕听到的一句话是我觉得是这里的问题。线上问题十有八九靠猜是猜不准的。正确姿势是先去看NCHome/logs下的运行日志按时间点到出错现场把堆栈信息拉出来。很多看起来玄乎的问题比如按钮点了没反应数据保存特别慢界面白屏日志里都有明确线索。指南里关于日志配置与查看的内容看起来不起眼实际排错时比什么都好用。搞明白日志级别怎么调、日志目录在哪、什么错误对应什么问题你的排查速度能快一倍不止。5. 读《NC6X开发指南.pdf》的正确姿势给新人的倒序阅读法5.1 第一遍跑通元数据→模板→节点→功能的最小闭环我的建议是拿到这份开发指南后不要试图全读完先做一个最小实验新建一张简单的业务单据甚至可以用部门维护这种极简场景从元数据定义开始一路做到节点注册、权限分配、界面打开。这个过程会把你逼着去查阅指南里的元数据管理、模板管理、节点注册、权限管理这几个章节。等你把这个闭环跑通你对NC6X的整体认识就已经超过不少做了半年的人。5.2 第二遍围绕单据补全后台逻辑和接口知识最小闭环有了之后再往里面加东西。给这张单据加校验公式、加审批流、加后台Action、加列表查询条件每一步都从指南里找到对应章节对照着做。这时候你会发现指南里的内容不再枯燥因为每一段讲解你都能落到刚才那张单据上。单据主表子表的关系不理解回去翻元数据实体关系。审批流不会配翻流程配置。外部系统要对接单据翻接口开发相关部分注册WebService或REST服务。以功能场景为索引去用指南比按目录顺序读有效得多。5.3 第三遍把它当词典用而不是当书读过了前两个阶段你已经算入门了。之后就是把它放在手边当工具书遇到问题才翻。比如不清楚某个按钮事件的触发时机翻动作相关章节不清楚某个字段为什么权限控制失效翻权限数据规则章节。带着问题去读每次都能有新的收获。到后来你会发现指南里的大部分内容你都翻过一遍了但你依然说不出哪一章讲了什么——可这不重要重要的是你遇到问题的时候知道去哪一章找答案。还有个小习惯我觉得特别值钱每次踩完坑回到指南里找到对应的章节用彩色标记笔把坑旁边那句不起眼的话划出来。过一阵子再翻整本书就成了你自己整理过的实战手册。这一点比单纯从头到尾读两遍有用得多。我在带新人时经常说一句话指南是别人整理好的路但路上哪里有坑还是得你自己走一遍才知道。NC6X这套体系刚接触会觉得抽象因为它的核心思路是让业务配置替代代码编写但你一旦用最短闭环的方式把它跑起来后面所有的功能开发都只是在这个骨架上添砖加瓦。希望这篇内容能帮你少走一些我当时走过的弯路。本文还有配套的精品资源点击获取