资讯详情

资讯详情

金蝶云星空二次开发:业务数据中心创建与注册全攻略

做金蝶云星空二次开发第一次要搭自己的开发环境时我们部门新来的同事差不多折腾了整整一个下午才把“业务数据中心创建和注册”这两步彻底搞明白。在别人眼里这不过是管理中心里点两下鼠标的事但真到自己建库、建中心、注册、验证的时候每一步都有坑等着。尤其是做插件开发、BOS设计器调试的场景如果连业务数据中心和注册逻辑都理不清后面写单子、做扩展、部署补丁全都会卡住。这篇文章就是把我实际踩过的坑、验证过的流程以及给团队培训时整理出来的操作要点完整讲一遍。重点是解决这么几个问题业务数据中心到底是什么、为什么要单独创建、创建完了之后“注册”到底在注册什么、常见报错怎么排查。内容尽量说人话少堆术语哪怕是刚接手金蝶云星空开发的新人按这个路子走也能把环境搭起来。1. 业务数据中心到底是个什么角色1.1 管理中心、业务数据中心、数据库三者的关系很多第一次接触金蝶云星空的人会被“管理中心”“业务数据中心”“数据库实例”这几个词绕晕。实际上用大白话理解就行金蝶云星空装完之后会有一套“管理中心”它是一个Web应用负责管理整个平台的登录、授权、补丁和数据中心列表。你可以把它当成物业中心所有业务数据的“房间”都由它统一登记和调度。而业务数据中心就是一个个“房间”。每个业务数据中心在底层对应一个独立的SQL Server数据库里面存放企业的组织架构、物料、客户、单据、审批流程、报表等业务数据同时也会存放开发产生的元数据。换句话说你在BOS平台上画的单据、写的Python插件、发布的审批流最终都落在某个业务数据中心的数据库表里。我见过不少人把“业务数据中心”和“账套”混为一谈这么理解也不能说全错。一个业务数据中心在登录界面上就是一套可以选择的环境用户选对了数据中心看到的数据和单据才是对的那套。所以开发环境和生产环境必须是不同的业务数据中心否则你在测试阶段改的一个字段、删的一条数据就可能直接影响到正式业务。1.2 开发场景里为什么要手动建业务数据中心如果公司买的是标准云租赁环境数据中心大概率由服务商配好甚至用户根本看不到登录选择界面。但做开发就完全不一样了。第一BOS集成开发平台或者说金蝶云星空的设计器登录的时候是要求选数据中心的。你得有一个能登录、能写入元数据的中心才能在上面创建单据、添加字段、调试插件。第二开发过程中要频繁改结构、重置数据、打补丁如果把这些动作放在正式数据中心上做风险极大。我们团队的规定是一个项目至少拆三套中心开发一套、测试一套、生产一套。数据中心之间物理隔离开发和测试再折腾也不至于把生产数据搞坏。第三还有一些场景需要从别的环境迁移过来比如客户那边提供了一份初始化数据备份你要在自己的环境里还原出来这时候也需要手动建一个业务数据中心并注册到管理中心否则数据还原了也登录不上。这类需求往往比“向导新建”更常出现在开发工作里。1.3 一套实用的开发数据中心命名规划给大家一个我们自己项目里用的命名参考。不要小看命名这件事团队几个人、多套环境的时候命名乱直接导致连错库、报错排查困难。环境业务数据中心显示名数据库名称备注本地开发环境DEV-客户AK3Cloud_Dev_A给BOS设计器和插件调试用团队测试环境TEST-客户AK3Cloud_Test_A集成测试、UAT用仿真环境PRE-客户AK3Cloud_Pre_A可选项和数据中心注册关系不大生产环境PRD-客户AK3Cloud_Prod_A一般由服务商管理数据库名建议统一前缀加环境缩写加客户标识显示名则写清楚“环境用途”这样在管理中心列表里扫一眼就知道是哪套。数据中心ID一般可以用简短的字母数字比如 DEV_A、TEST_A方便对接BOS设计器时认环境。2. 动手创建前的环境检查与准备2.1 产品安装和IIS站点检查打开管理中心之前先确认产品和IIS站点是不是正常的。金蝶云星空的服务端通常挂在IIS上安装完成后会有一个对应站点访问路径一般是http://服务器IP:端口/也可能带虚拟目录。如果直接访问不了先检查IIS管理器里对应站点有没有启动、应用程序池有没有被回收。我遇到过一次很诡异的情况IIS站点显示正在运行管理中心页面却始终打不开后台日志报数据库连接失败。查了半天才发现是安装时给管理中心配置的数据库实例被后面重装SQL Server时给换掉了服务端配置文件里的连接串指向了一个不存在的库。所以第一件事不是急着创建业务数据中心而是先用默认账号登录管理中心确认整套环境是活的。如果安装的是全新环境第一次打开管理中心会要求初始化系统管理员密码顺便会创建一个初始业务数据中心。这一步按向导走完就有一个基础环境可用。但要注意这个初始中心通常不适合直接拿来做项目开发一是名字可能不够规范二是里面带了一堆演示数据最好还是按我们第一节的规划新建一个独立的。2.2 数据库服务和账号权限创建业务数据中心本质上是让金蝶云星空帮你新建一个业务数据库并完成初始化脚本。所以SQL Server服务必须正常而且用来注册数据中心的账号必须有建库、建表、执行脚本的权限。如果是本机全装在一起通常在管理中心配置里用的就是SQL Server的sa账号或者有sysadmin权限的Windows账号。如果公司安全策略要求用普通账号至少得保证它有CREATE ANY DATABASE、ALTER ANY DATABASE级别的权限否则点击创建后大概率会报“没有权限执行该操作”。另外注意一点数据库的排序规则最好统一。金蝶云星空对数据库排序规则有要求装产品的时候会检查。如果你在创建业务数据中心的时候手滑选了一个和默认库不同的排序规则后面执行初始化脚本很容易出现“无法解决排序规则冲突”的报错。这点在给客户迁移环境时尤其常见因为客户那边的SQL Server排序规则往往不是默认设置。2.3 确认补丁版本一致避免注册后版本不匹配这是开发场景里非常容易忽略的一点管理中心、业务数据中心、站点程序集三者的版本最好是同一条线。简单说金蝶云星空是有补丁版本的管理中心通过注册信息判断一个业务数据中心能不能用它当前的产品版本登录。如果你拿到的数据库备份是从客户那边还原过来的而客户那边打的补丁版本比你本地管理中心高那么注册之后很可能会提示“当前数据中心版本高于管理中心版本无法使用”反过来也可能提示需要升级。处理办法就是先升级本地的金蝶云星空服务端和BOS平台到对应补丁再去注册。做开发最忌讳的就是用一套老产品去连一套新补丁客户库单据和元数据很容易出兼容性问题。3. 业务数据中心创建实操全流程3.1 方式一通过管理中心向导新建数据中心这是最省事的路径。登录管理中心后找到“数据中心列表”或类似入口点击新建系统会弹出创建向导。需要填的内容通常包括数据中心显示名、数据库服务器、数据库名称、身份验证方式、数据库文件存放路径有些版本还会有数据中心ID等选项。拿我们项目举例我会这样填数据中心显示名DEV-客户A数据库服务器127.0.0.1\MSSQLSERVER2019按实际实例名写数据库名称K3Cloud_Dev_A身份验证SQL Server身份验证填sa账号数据中心IDDEV_A填完点确定系统会自动执行几个步骤创建数据库文件、执行建表脚本、写入初始化元数据、把这张中心注册到管理中心库。整个过程看起来像进度条实际上数据库后台在跑一长串初始化SQL。如果数据量大或服务器性能一般等个十几分钟都正常千万别在中途把页面关了。这里要特别提醒创建完成后向导可能会提示你重新登录或者刷新列表。不要急着立刻登录先到管理中心列表里确认这条记录的状态是不是“正常”或“启用”。如果状态显示异常多半是初始化脚本执行中断了直接登录基本进不去。3.2 方式二手工建库后通过注册挂接用于备份恢复和迁移真正做开发项目时更多情况不是“从零新建”而是“拿到一个现成的数据中心备份需要挂到自己的环境里”。比如客户把生产库备份丢过来让你排查问题或者从同事那边拷了一个测试环境备份。我的常规操作流程是先把.bak文件还原到自己本机的SQL Server实例上数据库名称按规范改好比如还原成K3Cloud_Dev_A。打开管理中心进入数据中心列表找到“注册”或“恢复”入口。填写数据库服务器、数据库名称、显示名等信息。提交后系统会去读取这个数据库里的元数据版本信息然后往管理中心库里写入一条注册记录。这一步和新建最大的不同是数据库结构和数据都是现成的系统不会重新初始化它主要做的是“认亲”把这个库和当前管理中心以及产品版本绑定起来。从实际经验看最容易在“版本不一致”和“权限不足”上翻车。还原后的库在SQL Server里正常打开但管理中心读取不到十有八九是账号权限不够连sys.databases都查不到或者读取到了库但发现版本号高于当前产品版本直接拒之门外。3.3 创建过程中的关键参数怎么填才不踩坑这里把几个字段展开说一下填对了能少走很多弯路。数据库服务器这一栏如果是本机默认实例写机器名或127.0.0.1就行如果是命名实例一定要写成机器名\实例名或IP\实例名漏掉反斜杠后面的实例名会直接连不上。数据库名称要谨慎因为创建后一般不允许随便改。如果填的库名在目标SQL Server实例上已经存在管理中心会提示冲突或者覆盖风险不允许继续。所以要么提前删掉旧库要么换个新名字。我建议在填之前先到SQL Server Management Studio里看一眼有没有同名残留库别让小问题浪费一次创建时间。身份验证方式如果是域环境且服务账号配置好了可以用Windows身份验证如果是纯本机开发用SQL Server身份验证更方便但前提是产品配置文件里的连接账号要有足够权限。权限不够的典型报错是“用户没有执行此操作的权限”这种问题不是让你反复点创建而是应该先回管理中心配置里把连接凭据升级权限。4. 业务数据中心“注册”的核心环节4.1 注册到底干了什么事很多人做完“新建”或“注册”后以为只是数据库多了一个库其实管理中心库里还发生了一件关键动作写入了一条注册记录。这条记录就相当于物业中心的花名册记录了这个数据中心的ID、名称、数据库服务器、数据库名称、当前版本号、状态、最近登录时间等信息。为什么这条记录很重要因为用户登录金蝶云星空时其实不会直接去连业务数据中心而是先访问管理中心由管理中心根据用户选择的数据中心去匹配花名册里的注册记录再找到对应的数据库去校验账号和加载业务数据。花名册里没有这个库库建得再完整也登录不进去。做开发时也要理解这一点。比如你直接把业务数据库从一个环境复制到另一个环境但不做注册只是在SQL Server里附加了库那么管理中心列表里永远不会有这条记录。我见过不少新人拿着库文件过来问“为什么数据库看得到但系统登录不了”原因就是没走“注册”这一步。4.2 注册后如何登录验证注册完成后第一件事是回到金蝶云星空的登录页面刷新一遍。正常情况下数据中心下拉框里会出现你注册的这条记录。选择它用系统管理员账号登录看能不能进到主界面。我第一次注册完新产品环境后习惯先做这几个检查登录页能不能看到新中心点击进入后是否能正常显示列表界面打开一个标准单据比如“物料”或“客户”确认能正常打开界面而不是抛异常到后台SQL里看一眼睛确认登录后相关会话表有新数据写入。如果登录时就报“数据中心不存在”先别怀疑数据库数据有问题大概率是注册记录状态异常或者当前管理中心数据库连接串指向的不是真正管理它的那个库。4.3 让BOS开发平台识别到新的业务数据中心开发者的登录入口除了网页端还有金蝶云星空的集成开发平台也就是BOS设计器。打开设计器登录的时候同样需要选择数据中心。这里有一个经常被忽略的细节设计器刚打开时数据中心列表可能还是旧的需要手动刷新或重新登录一次才能看到刚注册的中心。BOS设计器登录成功后你所做的所有元数据修改比如新建单据、新增字段、添加表单插件引用都是直接写进当前业务数据中心的元数据表里的。换句话说你在设计器里选中的数据中心其实就是你代码要部署的目标环境。因此我强烈建议开发机上把常用的几个中心固定下来登录设计器时尽量用带明确环境标识的显示名避免一个不留神把插件部署错了环境。尤其是同时开了多个项目窗口的时候选错数据中心是真实发生过的事故不是在开玩笑。5. 高频问题排查与避坑实录5.1 创建时报“数据库已存在”这个报错基本不用怀疑就是目标数据库名称已经被占用了。可能是之前创建失败残留的半成品库也可能是其他环境顺手建了同名的库。处理步骤是先到SQL Server Management Studio里确认这个库是否存在如果确定是可以删的残留库就脚本删除如果是有用的库就把新中心的数据库名称换一个。删除残留库时要注意有些半成品库虽然创建失败但里面可能已经有部分表直接删除之前最好先截图备份一下库名和文件路径免得后面排查时说不清楚。另外用界面删除不掉的时候看看是不是有连接还在占用切换成单用户模式再删是常见操作。5.2 登录时提示“数据中心不存在”或“已被暂停”这个报错的本质是管理中心的花名册里查不到对应记录或者查到了但状态字段不是可用状态。常见原因有两个。一是注册记录确实没写进去。比如手工注册时报了错但没有处理干净表面上看起来注册了实际上管理中心库里没有数据。解决办法就是在中心列表里重新注册或者删掉这条记录再注册一次。二是注册记录里有一个“状态/禁用”字段被置为了禁用。有些版本的界面里有“启用”和“暂停”按钮如果不小心点了暂停登录时就会提示数据中心已被暂停。到列表里检查状态栏恢复为启用即可。5.3 注册后列表刷新不出来一直看不到新中心这种问题我遇到得很多多数不是数据没写入而是浏览器缓存或者管理中心站点的缓存没刷新。处理顺序是强制刷新浏览器页面CtrlF5清除浏览器缓存如果还看不到去IIS里把金蝶云星空对应的应用程序池回收一下再重新启动站点实在不行检查管理中心库里有没有这条注册记录有的话且状态正常基本就是Web缓存问题重启服务端进程一定能解决。另外有一个容易被忽略的点登录管理中心的浏览器版本不能太老。有的老内核浏览器对管理中心页面支持不好列表数据不刷新是常态。换Chrome或者Edge试一下往往立竿见影。5.4 开发过程中要重建/重置数据中心开发环境用久了数据会变得很乱经常需要回滚到初始状态。最省事的办法不是在这个库上手动清数据而是做一个完整的备份然后删除注册记录、删除数据库、重新创建再注册。我们的标准操作是先在管理中心里对当前数据中心做一次备份备份文件留档删除注册记录如果系统允许或在后台停用到SQL Server里把业务数据库删除再走一遍新建流程或者直接还原备份并重新注册。这一套流程熟练了之后重建一套开发环境大概就是几分钟的事。但千万记住删除注册记录和删除数据库之前先确认没有同事正在使用这个环境。我们因为没打招呼直接重建了测试环境搞得别人辛苦做了一上午的验证数据全没了后来团队就约定重建前必须在群里说一声。回到主题做金蝶云星空开发业务数据中心的创建和注册其实是最底层也是最基础的能力。这个环节理解了后面BOS设计器、插件开发、数据迁移才有一个稳定的落脚点。我个人的建议是每个新项目都别省这一步花十分钟把环境规划和注册流程走一遍比后面出问题了再折腾划算得多。最后再分享一个小习惯新建或注册完数据中心之后立刻在浏览器里保存一个登录快捷方式顺手把中心名称和数据库名记录到项目文档里过一个月再回来看你会感谢当初这个动作的。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →