平台基础相关问题
平台现有的二次开发自定义窗体、自定义控件都是基于vue框架,可自由引入各类第三方插件和UI库,可根据需求开发各类前端页面、封装各类UI组件。
目前适用于网页窗体、移动窗体。
问题描述:
执行期报错:未识别异常 Cannot read property \'getRuleInstance' of null。
原因:
在删除方法的时候,会提示 “是否要同步清除关联数据” 。
如果你点了「取消」,那么事件里的关联没有被删除,但是关联的方法已经不存在了。
解决方案:
可以用开发系统的 “配置检查” 功能,找到出问题的事件和方法,修复它。
问题描述:
在使用chrome浏览器打开富文本编辑控件,本地上传图片时,碰到:Flash插件初始化失败,请更新您的FlashPlayer版本之后重试!
解决方案:
网站设置,允许Flash插件运行。
问题描述:
后台报错 “未找到指定模块,请检查! 模块名称:vjs.framework.extension.publish.vbase_sys_mgr.SysMain.viewLib,版本号:null”。
解决方案:
- 登录配置中心,设置路径:配置中心 → 系统高级配置 → 系统诊断 → 业务构件发布状态查询,查看发布失败的构件。
- 如果显示没有发布失败,那么就找到 "
vbase_sys_mgr
"这 个业务构件,点右边的「重新发布」按钮。
问题描述:
开发系统登录,打开项目后,弹出“获取Cef调试服务失败”。
原因:
用户的Windows系统,不知道是没有权限,还是什么原因。
安装开发系统时,没有把开发系统添加到Windows防火墙信任里。
防火墙阻止了,服务端口都获取不到,无法启动服务。
解决办法:
设置路径:控制面板 → Windows防火墙 → 允许程序或功能通过Windows防火墙
允许另一程序 → 添加开发系统的桌面快捷方式。
问题描述:
部署的时候报错“前端模块不存在,请检查!模块名称:xxxx,版本号:null;该模块被模块。。。。依赖”。
原因:
- 开发系统和执行系统,版本不配套。
- 开发系统配置了规则,但是执行系统没有升级,执行服务里没有这个规则。
解决办法:
开发系统和执行系统同步升级。
原因:
插件过期,谷歌浏览器无法升级导致。
暂时解决方法:
谷歌浏览器属性中,快捷方式-目标后面加上“ --allow-outdated-plugins” ,允许过期插件自动运行。
注:.exe和--allow-outdated-plugins之间有个空格。
ios9 的 iPhone 在打开 银弹通App 时,弹出未受信任的开发者,记住弹框中冒号后面的 Guangdong Toone Technology Co., Ltd
注:系统更新常见问题,果粉们无需担心。在设置里,进入通用。
进入设备管理。
找到所对应的企业级应用:Guangdong Toone Technology Co., Ltd点击进入。
选择信任,进入。
点击弹出的弹框中的“信任“。
大功告成,可以愉快的进入银弹通App了!
执行系统的所有cmd命令,都存放在 ..\V-AppServer\V3Runtime\bin 目录中。
startup.cmd:正常启动执行系统。
在一体化版里面,开发系统会调用这个命令启动测试服务(执行系统)。
startupWithDebug.cmd:以调试方式启动执行系统。
在开发系统中,如果想对内嵌的测试服务进行调试,那么就把startupWithDebug.cmd拷贝成startup.cmd,重启开发系统就可以了。
当然要做好startup.cmd的备份。
setOptions.cmd:如果需要调整执行系统(或者开发系统测试服务)的内存、调试端口、或其他JVM参数,就可以修改这个文件。
把对应的 rem 去掉, 修改对应的数值就可以了。
注:系统升级时,startup.cmd、startupWithDebug.cmd会被升级覆盖,但setOptions.cmd会保留用户之前的配置。所以,需要修改JVM启动参数的话,尽量在setOptions.cmd中调整。restartup.cmd:重新启动执行系统。
restartupWithDebug.cmd:重新以调试方式启动执行系统。
stop.cmd:关闭执行系统。
agentCheck.cmd:云监控检查命令,自动检测,无需理会。
问题描述:
解决方案:
首先,查询表
v_sys_userGroup
和v_sys_userGroup_userGroup
,看看有没有这两个 id 的存在。
如果没有:清除本地数据库缓存,重启服务,手动同步图算法。
设置路径:配置中心 → 系统高级配置 → 数据管理 → 元数据管理。
步骤:
① 勾选前 2 项:清除 VTable 缓存、手痛同步图算法。
② 点击按钮「执行」。
注:此2表为vbase系统表,请谨慎处理,处理不当引发的问题平台不负责处理。
- 如果有:v_sys_userGroup 表删除一条 id 的记录,v_sys_userGroup_userGroup表,条件 srcUserGroupId 为空,删除对应 id 的记录,清除本地数据库缓存,重启服务,手动同步图算法。
支持短地址格式:http://IP:port/form/componentCode/windowCode
默认地址:http://IP:port/module-operation!executeOperation?operation=Form&componentCode=aaa&windowCode=bbb
短地址:http://IP:port/form/aaa/bbb
如果有token参数的话,地址为:http://IP:port/form/aaa/bbb?token={"data":{"inputParam":{"variable":{"aa":"abc"}}}
传大文件和很多因素有关,服务器的性能、网络带宽、上传速率、内存大小、超时等等都会影响文件上传的速度 。
测试结果:
- 500mb的文件,内网上传用时 5 分钟内。
- 900多mb的文件,内网上传用时 11 分钟。
问题描述:
部署构件的时
如果在打包过程中,报错“打包异常,请检查执行文件是否存在:D:\v3\DevSystm\VDevenv.exe”
解决方案:
本机没有安装
framework4.0
。
select request_session_id as spid,
OBJECT_NAME(resource_associated_entity_id) as tableName
from sys.dm_tran_locks
where resource_type='OBJECT'在数据库中查询预览上面 sql ,如果有结果,证明该表正被事务占用,并且事务还没有结束。
解决方案:
- 如果不确定此事务是在做什么,或者是谁提交的,请不要动它。
- 如果确定此事务是自己提交的,并且知道事务的操作情况,可以执行 KILL spid 来结束此事务,释放表锁。
在执行系统文件夹
..\V3EXE\pages
里,把publish.jsp
文件删掉,就访问不了了。下次再想访问的时候,就把它放回去。
正确做法,测试环境保留 publish,生产环境删除。
执行系统目录里,替换里面的图标文件就可以了。
(1)访问配置中心时浏览器的图标:
(2)访问业务系统时浏览器的图标:
图片要求
- 名称:favicon.ico
- 尺寸:16*16
通过配置中心,可以配置不同的包记录不同级别的日志,
如:com.toone 包日志等级为 INFO,日志只记录INFO或以上等级的记录。
设置路径:配置中心 → 系统高级配置 → 系统维护 → 日志管理
此页面为动态页面,编辑完即时生效,重启服务则恢复为默认。
注:控制台日志打印级别若设为DEFAULT则恢复默认设置。包名称:
- 控制台日志打印级别:cmd窗口打印、log文件记录。
- ROOT:包总体日志。
- 其他:各个包日志。
可新增二次开发的第三方包,并设置日志级别。
日志级别设置,主要打印高于或者等于相应级别的日志。
- TRACE:追踪。级别较低,一般不会使用。
- DEBUG:调试。主要用于开发过程中打印一些运行信息。
- INFO:一般。这个用的最多了。
- WARN:警告。表明会出现潜在错误的情形,一般是给程序员的一些提示。
- ERROR:错误。发生错误事件的信息。
- DEFAULT:默认。恢复默认级别。
如果将日志级别设置在某一个级别上,那么比此级别优先级高的日志都能打印出来。
例如,如果设置优先级为INFO,那么ERROR、WARN、INFO 4个级别的日志能正常输出,而DEBUG、TRACE级别的日志则会被忽略。
API (Application Programming Interface)
大多数情况下,都是实现方来制定接口并完成对接口的不同实现,调用方仅仅依赖却无权选择不同实现。
SPI (Service Provider Interface)
如果是调用方来制定接口,实现方来针对接口来实现不同的实现。调用方来选择自己需要的实现方。
问题描述:
解决方案:
访问VSTORE异常的原因:
- 本机网络问题
- VSTORE服务问题。
可以尝试在浏览器访问 vstore.yindangu.com 以及其他网站,来确认是本地网络问题,还是VSTORE服务问题。
SPI 下的所有 EP 是可以在 SPI 所在的方法导航栏中查看。
如果要查找 EP 对应的方法扩展实现。
可以通过配置中心,查找出 EP 在运行时(构件服务映射)所对应的方法扩展实现。
设置路径:配置中心 → 系统高级配置 → 系统维护 → GogoWeb命令行
执行命令
component:servicemapping
显示结果有两部分,其中"原始ServiceMapping"下的信息就是运行时EP所对应的方法扩展实现。
以构件为分隔:
[原始ExtensionPoint] 是扩展点信息,有可能是引用构件的扩展点。
[原始extension] 是扩展点对应的方法扩展实现。
问题描述:
服务报这个错以后就一直连接转圈圈。
解决方案:
出现这个错的原因是:服务端写输出的时候,发现连接断开了(连接断开的可能原因是浏览器主动刷新造成的)。
所以一般情况下,不要急着刷新浏览器,就可以避免服务端这种EOF错误。
出现这个错误的话,就重试一下操作吧。
如果可以稳定重现,请联系平台客服人员。
问题描述:
在项目生产中遇到,使用 sql server 数据库,保存一些特殊字符到表里面后,会显示成问号 ?
解决方案:
对于特殊字符的支持,各数据库的情况如下。
- mysql:全支持
- oracle:全支持
- H2:全支持
- MSSQL不支持字符:
处理步骤:
开发系统中,表字段定义时,给 Unicode 编码打勾,保存部署。
在执行系统目录
..\V3Runtime\userdata\conf\preferences\com.toone.v3.platform-09jdbc\DbCfg\itop
,打开配置文件config.xml
,修改字符集编码。把false 改为 true ,保存。然后,需要重启系统。
问题描述:
json 或者 token 的值,如果含有双引号的话,是不能通过表达式的合法性校验的。
因为双引号的转移字符在表达式内部是不支持的。
解决方案:
(1)json
直接把json值赋值给一个方法变量。
调用 WebApi规则 里面的参数,表达式配置这个方法变量。
(2)token
一样,先把 token 值赋值给变量 {"data":{"inputParam":{"variable":{"canshu":"#canshu#"}}}}
然后使用【给界面实体/控件/变量赋值】的规则,把#canshu#替换成你的值。
Replace(BR_VAR_PARENT.token,"#canshu#",[aaa].[bbb],True)
问题描述:
页签栏中配置了导航栏控件在自定义列表组控件上面。
预览后,导航栏控件会将自定义列表组的内容遮挡。
解决方案:
导航栏控件有一个「固定」属性,将其勾上,重新部署后则不会再被遮挡。
说明:
以下最低配置要求与建议配置是按PC作为独占服务器使用。
如果是大型系统,建议采用专业服务器,如IBM服务器。
CPU如果不是 I5 7500 这个型号,如何判断性能够不够?
可以使用 CPUZ(1.85)(工具在附件)进行初步检测。
多线程在 1700 左右就是平台最低配置的 I5 7500 水平。
下载:cpu-z_1.85-cn.zip 。
在开发系统中,窗体空白处点击鼠标右键,可以调整界面控件的Tab顺序。
具体使用请查看演示demo“Tab键的用处”。
原因:
在两个有事务规则间配置了打开规则,打开规则会阻塞后续逻辑执行,停顿50秒后,执行后续规则提交事务,这时后台事务超时早已回滚,导致前端报错。
解决方案:
这个需要调整配置,不要在事务规则间配置打开规则。
- 规则链:A事务-B事务-打开模态窗体——可以
- 规则链:打开模态窗体-A事务-B事务——可以
- 规则链:A事务-打开模态窗体-B事务——不可以
问题描述:
这三个函数的第二个参数,是一个字符串,其运算结果应该是一个布尔值。
解决方案:
(1)前台函数
GetEntityRowCount()
,若参数2中的条件值来源变量,则参数2需要用一个变量代替。如:
GetEntityRowCount("BR_IN_PARENT.TableName",BR_VAR_PARENT.cs2)
其中 BR_VAR_PARENT.cs2 的值 =ConcatStr("[TableName].[FieldValue]==",BR_VAR_PARENT.cs2_z);
若 BR_VAR_PARENT.cs2_z 为字符串,拼接参数2时,还需要加上双引号(将双引号存储到变量中,再拼接),
如:
ConcatStr("[TableName].[FieldValue]==",BR_VAR_PARENT.syh,BR_VAR_PARENT.cs2_z,BR_VAR_PARENT.syh)
其中 BR_VAR_PARENT.syh 中存储的是英文双引号常量。
(2)后台函数
GetConditionColumnValue()
、GetEntityRowCountFunc()
,若参数2中的条件值来源变量,则参数2需要用一个变量代替。如:
GetEntityRowCountFunc("BR_VAR_PARENT.TableName",BR_VAR_PARENT.cs2)
其中 BR_VAR_PARENT.cs2 的值=ConcatStr("name==",BR_VAR_PARENT.cs2_z)
若 BR_VAR_PARENT.cs2_z 为字符串,拼接参数2时,还需要加上单引号,
如:
ConcatStr("name==","'",BR_VAR_PARENT.cs2_z,"'")
前后台函数:GetTableData
参考后台函数GetEntityRowCountFunc第二个参数的写法。
参考配置见附件:函数demo.zip 。
问题描述:
预览附件时页面报错。
执行系统日志 ERROR。
解决方案:
确认一下服务所在的机子能否访问 http://open.yindangu.com/dcs/,不行的话,联系服务器或网络管理员开通本台服务器对该地址的访问权限即可。
问题描述:
导入树表数据时报错 H2TreeDataView 不支持 union 。
解决方案:
直接导入数据库是没问题的,但是导入前台实体后,又经过多规则在前台处理后保存的话就有这个问题。
原因:传到前台不是以加载方式,是以新增或更新方式,清除了实体状态,导致后台所有id记录都要到数据库再查一遍状态。
建议:使用导入excel到数据库规则
搜索控件需配置一个光标跳转规则,跳转到控件上,才能实现搜索功能。
问题描述:
确定数据库表里,是有数据的,但是在开发系统里预览表数据,就是0条记录。为什么呢?
需要确定:
- 开发系统默认部署地址的环境,关联的数据库是否正确。
- 数据库表里的数据,是否是使用平台的保存规则新增的。
- 是否对表进行了数据权限控制。
解决办法:
- 有把关联正确数据库的环境的地址设置为默认部署地址。
- 控制台里,清除缓存(查询缓存、vsql缓存、vtable缓存)。
- 去掉对表的数据权限控制,因为开发系统没有登录账号、没有session。
一体化版本在服务器上安装,如果服务器开启了防火墙,管理员需要把以下4个域名设置为白名单。
http://vstore.yindangu.com:8089
问题描述:
有此类提示的,基本都跟注册表相关。
解决方案:
开发系统安装后,第一次启动时,需要 “以管理员身份运行” 一次,才能执行某些写注册表的操作,否则没有权限,这个动作只需一次。
v 2.5 版本
进入目录 ..\webapps\v3\WEB-INF\itop
打开文件 systemCfg.xml
- 找到项 key="sessionAliveTime" des="登录后服务器session的存活时间(单位:分钟),设置时间就行了,保存文件,重启服务。
v3.x版本
通过设置服务器
session
的存活时间,设置用户登录自动过期时间。设置路径:配置中心 → 系统高级配置 → 系统维护 → 配置管理 → 系统配置 → 登录后服务器 session 存活时间
注意事项
- 如果设置的值小于 0 ,会被系统强制采用回默认值 60 min;
- 如果需要保持长期生效,那么建议设置一个比较长的过期时间即可;
- 不支持永不过期,因为此举会导致服务器内存不可回收的持续消耗,直至重启,才能释放 session 占用的内存。