BeX5使用疑难总结
1 eclipse 启动tomcat和 启动BeX5运行平台.bat 显示不一致
只需修改目录下conf中的server.xml中的版本号:
如:
<?xml version="1.0" encoding="utf-8"?>
<config>
<version>4686</version>
<default-user>
<name>admin</name>
<password>123456</password>
</default-user>
<ui-server>http://localhost:8080/x5</ui-server>
<business-server>http://localhost:8080/BusinessServer</business-server>
<doc-server>http://localhost:8080/DocServer</doc-server>
<report-server>http://localhost:8080/ReportServer/reportservice</report-server>
<auth-server>http://localhost:8080/BusinessServer</auth-server>
<push-server>http://localhost:8080/PushServer</push-server>
</config>
2 数据库表的限制
对于概念表的限制,可以通过 模型资源中的 BIZ 右键,
如需删除表,直接在 BIZ下删除对应的模块就行。
3 BeX5库表统计
概念数是ontology,库表数是统计的data下映射的,查看是否引用,通过model.config.xml,对于引用的system中的data,这些都不算在费用之内。
4 版本的升级
在V3.3版本的OA上进行了相应的修改,之后想把该版本添加到3.7上。过程如下:
把V33版本下model中BIZ和UI2模块中的OA,去替换V3.7下的OA,之后运行 启动MySQL数据库.bat , (中间比较了一下发现V3.7数据库缺少justep_oa.sql数据库,该数据库justep_oa.sql是通过V3.3版本的navicate备份而来),添加数据库justep_oa.sql,并运行3.3版本的数据。 之后打开 启动BeX5开发工具.bat,在eclipse中打开-》窗口->首选项->Studio配置-》数据源->添加即可,如数据源名称oa,数据库名称为justep_oa.
5 添加成员出现提示重复
组织权限——回收站”中清除删除的数据
6 获取数据成员模型的行ID
,this.comp("mainData").getCurrentRowID()或者
this.comp("mainData").getRowID()
Java代码如下:
public static BigDecimal my(String orderID){
Map<String,Object> params=new HashMap<String,Object>();
params.put("masterID", orderID);
Table table=KSQL.select("select sum(a.fSL) as HJ from SA_CGDetail a where a.fMasterID=:masterID", params, "/Sale/CGGL/data", null);
return table.iterator().next().getDecimal("HJ");
}
整个js代码如下:
Model.prototype.button2Click = function(event){
var biz = require("$UI/system/lib/biz");
var me = this;
var orderID=this.comp("mainData").getRowID();
//alert(this.getIDByXID("mainData"));
// alert(this.comp("mainData").getCurrentRowID());
biz.Request.sendBizRequest(
{
"context" : this.getContext(),
"dataType" : "application/json",
"action" : "myAction",
"parameters" : {
"orderID" : orderID
},
"callback" : function(result) {
debugger;
if(result.state){
alert(result.response)
/*
me.comp("output1").set({
"value" : result.response
})
*/
}else{
throw new Error("调用失败!"+ result.response.message);
}
}
})
/////////////
};
7 添加tabs组件,界面不显示
在最上的window上,class设置: window x-full-screen
对于tabs下面的层,需要设置长和宽,才可以展示。
以前的view,对应现在的div
8 出现 Data truncation: Data too long for column 'fPicture' at row 1
在开发环境的概念模型上,设置字段fPicture从String到Text
9 BeX5导入项目,不显示
主要是视图显示不对,
新建项目->使用缺省位置去掉,浏览项目,引入即可,按照提示打开说明,即可显示 其他的项目。
10 grid获取其他列的值
Model.prototype.mainGridCellRender = function(event){
if (event.colName == "操作") {
var OA_MT_Boardroom=event.row.val('OA_MT_Boardroom');//获取该列数据的ID值,即model的ID值
}
};
11 not in写法
String kSqlWhere =
"SELECT o1.*, o1.sCode AS sPCode, o1.sName AS sPName FROM SA_OPOrg o1 WHERE o1.sCode = 'JUSTEP' AND "
+
"NOT o1.sLevel IN(1, 2) "
;
12 grid传递参数
向bizData中传递参数:
KSQL中为: id=:ID
当渲染时会发生事件如下:
可定义全局变量
var beginTime="2017-11-15 08:58:00"; // beginTime=" ' 2017-11-15 08:58:00 ' "; //不可添加 ' 号,,
var endTime="2017-11-15 18:58:00";
Model.prototype.mainDataRefreshCreateParam = function(event){
//给queryAction中的参数赋值
var mapParam = new biz.Request.MapParam();
mapParam.put("beginTime", beginTime);
mapParam.put("endTime", endTime);
event.param.setMap("variables", mapParam);
};
点击事件: click(){ //通过修改事件,来更改渲染的变化,之后模型 mainData.refreshData(); 即可
beginTime="'2017-11-15 08:58:00'";
endTime="'2017-11-15 18:58:00'";
}
13 重新清空编译
清空:BeX5_V3.7\studio\workspace下所有文件
或者BeX5_V3.7\apache-tomcat\work下的所有文件。
14 debuge调试
把java代码设为源码路径,之后把 不以调试模型运行的勾去掉即可。
断点调试,上面有: 跳过所有调试,如果点击后,则无法断点,再次点击,不要跳过后,即可。
之后把自动设置源文件目录前面的勾去掉,并把下面的BIZ添加上去。
15 sql引用
KSQL中引用mysql中函数,需要添加SQL,即如SQL.TIMESTAMPDIFF(XXX)
实例:
(select (SQL.TIMESTAMPDIFF(SQL.MINUTE, OA_MT_RoomArrangeNewDate.fBeginTime, OA_MT_RoomArrangeNewDate.fEndTime)) as arrangeDate from OA_MT_RoomArrange OA_MT_RoomArrangeNewDate) as arrangeDate
对于KSQL中的可以以':'开头使用表达式函数,但是在select部分不能使用,表达式函数是在内存中计算的,先执行内存函数,然后执行sql。
16 20免用户证书获取
首先运行\license\bin下的key.bat,此会在\license生成key文件,之后在Bex5官网申请免费key,并上传生成的key文件,之后生成免费的***,之后运行register.bat,粘贴***,即可完成20用户免费。
17 报表
如果是自己定义的 action,如果不是标准的KSQL,即选择的是ksqlQueryProcedure,则在reportData选择动作的时候action,不要选择KSQLAction,需要直接选择Action
18 运行缓存
运行 启动BeX5运行平台.bat ,会采用缓存,解决方案:
- 方案二:修改UI2下自己应用的config\ application.xml 中的版本号,然后重启tomcat服务
- 方案三:修改model同级的config\server.xml文件中的version版本号,然后重启tomcat服务
19 java.lang.Error: 无法解析的编译问题:
无法解析类型 javax.servlet.http.HttpServletRequest。从必需的 .class 文件间接引用了它
类型 RequestContext 中的方法 getRequest()引用缺少的类型 HttpServletRequest
system/logic/code/dsrc/TenantEngine.java报错,
这句话MyCatMultiTenant.setMyCatMultiTenantInfo(ContextHelper.getRequestContext().getRequest(), tenant); 出现问题
解决方案,首先,设置源码路径,之后 构建路径,从外面导入包
E:\install\BeX5\BeX537\BeX5_V3.7\apache-tomcat\lib\servlet-api.jar
,即可。
20 BeX5用户登录问题
如果登录不校验密码,则需在BIZ/system/logic/code/dsrc中的OPMProcedure类中,在login方法中pwd为null,并且true改为false
public static Object login(String name, Date loginDate, String pwd, String lang, String ip, Map<Object, Object> options) {
return OPMProcedure.login(name, loginDate, pwd, lang, true, ip, options);
}
修改为
return OPMProcedure.login(name, loginDate, null, lang, false, ip, options);
22 单点登录
url可以直接调用.j文件,如
http://localhost:8080/x5/UI2/portal/base/loginCheck/login.j,此调用的是自定义的java文件,实际相当于servlet文件。
可以通过BeX5的.j文件,实现单点登录,参考为:
http://docs.wex5.com/bex5-ui-question-list-10258/
23 时间插件精确到时或者精确到分钟设置各页面相互不影响
在Input中如果设置为时,则在属性form-control 基础上添加属性hourTime。设置如下
$(".hourTime").click(function() {
setTimeout(function() {
//debugger;
// 设置值
//$("input[name='_calendar_hour_']").val("17");
$("input[name='_calendar_min_']").val("00");
$("input[name='_calendar_sec_']").val("00"); //秒最后的固定
// 控制不可编辑
$("input[name='_calendar_min_']").attr("disabled", "true");
$("input[name='_calendar_sec_']").attr("disabled", "true");
}, 50);
});
在属性form-control基础上添加属性selfMinuteTime,之后设置为
$(".selfMinuteTime").click(function() {
setTimeout(function() {
// 设置值
// $("input[name='_calendar_hour_']").val("17");
$("input[name='_calendar_sec_']").val("00"); // 秒最后的固定
// 控制不可编辑
$("input[name='_calendar_sec_']").attr("disabled", "true");
try {
$("input[name='_calendar_min_']").removeAttr("disabled"); //重点
} catch (err) {
console.log(err.name);
console.log(err.message);
}
}, 50);
});
24 隐藏表单
只需css visibility:hidden;
bind-visible="0>1" ---这种方式不可取。会有延迟。
25 修改系统的功能
如需要修改系统自带的portal中的index.w文件,则只需额外在添加同样的文件portal_X,index.w也同样的位置,这样既可覆盖。
26 添加空格
在设计上,添加 中文的空格既可。
27 添加超链接
报表添加超链接,即右键,点击添加批注既可。
内容可以为:
html:<a model="dialog" href="$UI/OA/meeting/process/statisticalsAnalysis/staticActivityw.w?param1=$param1&process='/OA/meeting/process/statisticalAnalysis/statisticalsAnalysisProcess'&activity='staticActivityw'" title="详情" />
如果为多个参数,则为:
staticActivity1.w?
A1=$A1&A2=$A2&
此列必须显示,即传参的是必须是report中的,如果不需要显示可以设置列宽为0,把字体设置为白色
28 每天第一次登录抛出bug
在长时间没有访问tomcat后,数据库连接已经失效,连接池因为没有检测,所以认为连接有效,导致连接出错。避免这种错误的方法是设置连接有效查询sql语句。设置后,连接池会使用该sql语句测试连接是否有效,如果无效,会重新建立连接。
设置方法为:在%JUSTEP_HOME%\apache-tomcat\conf\context.xml中的节点中增加属性validationQuery
mysql数据库:
<
Resource
name
=
"jdbc/cloud"
type
=
"javax.sql.DataSource"
maxActive
=
"100"
maxIdle
=
"30"
driverClassName
=
"com.mysql.jdbc.Driver"
url
=
"jdbc:mysql://127.0.0.1:3306/cloud"
username
=
"root"
password
=
"x5"
validationQuery
=
"select 1"
/>
29 查看用户在线数
http://IP:端口/x5/UI2/SA/online/mainActivity.w
30 设置失效时间
1、BusinessServer的session设置
\runtime\BusinessServer\WEB-INF\web.xml
<session-config>
<session-timeout>30</session-timeout>
</session-config>
31 linux下部署问题
1 启动mysql出现: mysqld: error while loading shared librarieshttp://mp.blog.csdn.net/postedit/78031359: libaio.so.1: cannot open shared object file: No such file or directory
解决方法:apt-get install libaio1 libaio-dev
2 mysql出现 Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
添加系统mysql组和mysql用户:
执行命令:groupadd mysql和useradd -r -g mysql mysql
chown -R mysql:mysql ./mysql
之后切换mysql : su mysql 启动即可。
对于mysql的服务关闭,切换到mysql用户,之后去mysql/bin/下shutdown.sh,即可。
3 对于bex5的启动,去tomcat目录下,即/apache-tomcat/bin/下进行启动和停止即可。
4 证书申请流程
如果不是集群,则linux部署,只需BeX5_V3.7-ent-linux.tar.gz,不需要license-server_V3.7-linux.tar.gz(集群时证书)。
5 对于库表的统计,只按BIZ下面的进行统计,对于实际数据库的多少不算。
6 对于左侧导航栏有重复的现在,可以先恢复到初始的portal,它是不重复。 之后慢慢修改发现其中的变化。
7 BIZ和UI2下一直不生效,方法1,把windows下生效的BIZ和UI2都移过去。方法2,对于BIZ下的system等的修改,直接找到对应的class文件,直接删除,即可。 其他的修改Bex5解压下 conf文件中,server.xml中版本号。
8 lsc与mysql数据同步,lsc中必须使用[email protected]%账号。中间可能产生乱码(由mysql中的存储函数 未指定编码方式导致的)。
需要:自己安装的Mysql下的/etc/my.cnf中,添加
character-set-server = utf8 //设置服务器用utf-8
init_connect='SET NAMES utf8' //都采用UTF-8编码
9 模块权限设置
在UI2中config目录XXX.function.xml中,
可以设置无、solid、hide。其中,无为设置了权限才可以查看。设置solid不分配权限既可查看,但运行可能会提示没有权限。
设置hide分配功能权限也不显示,但是有权限运行,如流程。
10 左侧导航栏重复
目前好像是portal->pc3->index.w文件中,由于注释掉137-142行,导致的
<ul class="sidebar-menu">
<li class="active">
<a class="x-portal-showMain">
<i class="x-functree-icon icon-home"/>
<span class="title">主页</span>
</a>
</li>
</ul>
11 测试环境向正式环境复制,特别是文档图片的复制,需要把data下doc下所有文件(除conf外,但我实际上都复制了),都复制到正式环境,同时把 x5doc和x5sys下有关的都复制到正式环境。
如果修改端口了,需要把 数据库x5sys下sa_docnamespace下的sUrl的http://localhost:8080/DocServer,改为:
http://localhost:8081/DocServer,sPort中8080修改为8081(实际上8080也正常显示)。
由于我把x5doc中某些数据删除了,导致移动到正式环境的图片不能显示,所以,慎重删除数据。
12 修改路由 localhost:8080/x5/ 为 localhost:8080/boardroom
需要修改的地方为:
- (1)、需要修改apache-tomcat\webapps\ROOT\index.html中的x5
- (2)、修改apache-tomcat\conf\Catalina\localhost中x5.xml这个文件名
- (3)、model同级的conf\server.xml中的配置地址
http://docs.wex5.com/wex5-server-question-list-2004/