如何控制同一用户PC和mobile中允许同时登录,但PC和mobile分别只能登录一次

平台默认提供的在线用户列表中没有记录用户登录的终端,因此要分别控制pc和mobile一个用户只能登录一次,需要自己记录用户登录的终端等信息 第一步:可以定义一个全局的map,在登录后把登录的用户名和终端作为key,登录产生的session做为value存储到map中 第二步:在登录前获取到当前登录的用户名和终端,判断map中是否有,如果有说明已经登录过了,可以抛出异常不让登录 第三步:当注销和session超时应该删除map中的信息,可以监听session失效实现 定义全局的map和监听session失效,可以在BusinessServer下创建servlet和listener实现,具体实现如下: 在\runtime\BusinessServer\WEB-INF下创建src 在src下创建servlet:/com/justep/user/OnLineMap.java,注意有包名目录/com/justep/user package com.justep.user; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServlet; public class OnLineMap extends HttpServlet { //定义一个mapping存在登录者的相关信息 public static Map<String, Object> OnLineMaps = new HashMap<String, Object>(); } 创建listener:/com/justep/user/SessionListener.java,注意有包名目录/com/justep/user [...]

printHtml打印默认显示当前日期和url怎么去掉

普通表单的打印平台提供的printHtml,用的是浏览器的打印 在打印的时候页面上可能会在头部显示当前日期,在底部显示url,这个浏览器打印的页眉页脚控制的 可以设置不要页眉页脚或者设置页眉页脚为空 IE的页眉页脚设置在菜单栏——文件——页面设置中 chrome的在打印的时候提供的有打印设置

流程回退时如何修改任务标题

流程的回退规则中没有设置任务标题的,因此回退时要修改任务标题需要通过代码控制 可以在onAfterBackQuery事件中修改ProcessControl的信息,如下: public static void businessActivity3AfterBackQuery() { ProcessControl control = (ProcessControl) ContextHelper.getActionContext().getActionResult(); for (ProcessControlItem to : control.getFlowTos()) { to.getTask().setName("test修改任务名称"+to.getTask().getName()); } }

自定义action返回的数据如何以新增的状态加载给data

自定义action返回的数据加载给data可以参考 http://docs.wex5.com/bex5-ui-question-list-10069/ 如果要新增的方式加载给data,可以在action的Table返回前遍历Table设置设置行状态,如下: public static Table loadData() throws InterruptedException { String ksql = "select rq, rq.fName ,rq.fCode,rq.fRQ, rq.fRQSJ from AP_RQ rq where rq.fName = 'aaaa'";//需要查询数据的ksql Table table = KSQL.select(ksql, null, "/appdemo/test/data", null);//调用平台提供的API执行sql,并返回table Iterator<Row> rows [...]

报错”请求错误编码:200, 刷新数据失败! “

查询数据时前端报错如下: Uncaught Error: __justepServerErrorStart__{"message":"请求错误编码:200, 刷新数据失败! ","reason":"","code":"","stack":"","messages":[] 但后端应用服务(tmocat等)未报错时,把 runtime\UIServer\WEB-INF\justep.xml中 <request-use-base64>false</request-use-base64> 配置的false改为true 然后保存重启应用服务(tmocat等) 这个错误是一般是因为网络进行了安全设置对某些特殊字符进行了拦截,而在查询数据时传的参数(拼的过滤条件)等包含这些特殊字符,导致被拦截了

process根上事件-流转前事件中统一设置任务标题

设置流程标题的地方有:总流程的启动规则,每个环节的执行规则,但是如果环节太多了,维护就会麻烦的, 如果每个环节 标题的规则都是一样的,就可以在总流程的流转前事件中接管,一个方法就可以搞定了 public static void conReviewApprovalProcessBeforeAdvance() { String key = ProcessUtils.getProcessData1(); String fUnitName = getfUnitName(key);//根据id列去查询其他字段的值 ProcessControl flowControl = (ProcessControl)ContextHelper.getActionContext().getParameter("control"); for (ProcessControlItem to : flowControl.getFlowTos()) { Task task = to.getTask(); String sActivityNames = task.getActivityName(); [...]

grid中的input如何控制最大长度

控制最大长度需要通过maxlength属性控制 可以在grid中的input的onFocus事件中如下控制: Model.prototype.input2Focus = function(event) { var grid = this.comp("mainGrid"); var data = this.comp("mainData"); var rowid = data.getCurrentRowID(); var cell = grid.getCell(rowid, "fName");//获取要控制长度的cell,fName是input关联的data的action grid.editCell(cell); $(cell).find("input").attr("maxlength", 10); }; mainGrid是grid的xid mainData是data的xid

如何判断流程是否流转到了结束

如果要判断流转是否流转到结束,然后加自己的操作逻辑可以在process组件的onAdvanceCommit事件中判断 如下: Model.prototype.processAdvanceCommit = function(event){ var processControl = event.processControl;//获取流转信息processControl var toItems = processControl.getToItems();//获取环节相应的流转信息 if (toItems) { var unit = toItems[0].getUnit();//获取环节 if(unit == "end1"){//end1就是process文件中结束环节的name属性的值 alert("end"); } } };

待办任务中如何显示业务字段的值

待办任务中的信息默认显示都是SA_Task中的字段信息,如果要显示业务字段的值,可以把业务字段的值存到SA_Task 平台默认提供了sData1、sData2、sData3、sData4是用于存储业务数据的字段,其中sData1中平台默认存储的业务数据的主键值,用于任务数据业务数据关联 sData2、sData3、sData4可以自己填充业务数据,因此可以把要在待办任务中显示的业务字段的信息存储到这3个字段中 如下,在process组件的onBeforeStart中把业务数据存储到sData2 Model.prototype.processBeforeStart = function(event){ var data = this.comp("mainData"); var fCode = data.getValueByID("fCode", event.relations["sData1"]); event.relations["sData2"] = fCode; }; 操作sData2还可以参考http://docs.wex5.com/bex5-process-question-list-10044/ 然后通过扩展空间修改在待办任务页面/UI2/SA/task/taskView/waitActivity.w 在list中放output设置bind-ref为sData2关系