About jishuang

该作者尚未填入任何详情
So far jishuang has created 559 blog entries.

控制台报错“编码: JUSTEP191056; 提示: 解析Data(AA)定义失败,concept(BB), relation(XX)必须定义data-type”

在保存或刷新数据时控制报类似如下的错误: Caused by: com.justep.ui.system.SystemComponentException: 编码: JUSTEP191056; 提示: 解析Data(bizData1)定义失败,concept(AP_SZ), relation(fName)必须定义data-type at com.justep.ui.system.SystemComponentException.create(SystemComponentException.java:42) at BizData.createDataDef(BizData.java:35) at Data.execute(Data.java:40) 这个错误是关系没有找到关系类型导致的 找到并打开concept后面括号里的概念所在的ontology文件,找到这概念中的relation括号里的关系设置一下需要的关系类型 如果确认关系类型设置的问题,可以从下面相关的模块引用上排查问题 1.process文件同级的model.config.xml中要引用概念对应的data的模块和对应的action路径(use方式) 2.对应action文件同级的model.config.xml中要引用概念对应的data的模块(use方式) 3.概念对应的data模块下的model.config.xml中用引用概念所在的ontology模块(include方式)

前端扩展流转信息并在后端的流程事件中获取到扩展的信息

在扩展流转对话框时某些情况下需要对流程信息(processControl)进行扩展并在后端的流转事件中从ProcessControl中获取到扩展信息 如:在流转对话框的环节选择时添加“发送短信”选项,在后端获取是否勾选了这个选项判断是否执行发送短信 可以把是否勾选的信息放到processControl中,js中processControl中提供了setExt (String name, Object value)设置扩展数据的值 这个案例前端的主要实现如下: 在每个环节上控制的可以在activityData中加一个关系,在页面上放一个checkbox组件,checkbox的bind-ref设置这个关系 然后在checkbox的onChange事件中获取是否选中的值,给processControl设置扩展数据 Model.prototype.checkbox1Change = function(event){ var rowid = justep.Bind.contextFor(event.source.domNode).$object.val("rowid"); this.control.getToItemByID(rowid).setExt("mobile",event.value); }; 后端的流转后事件中获取如下: public static void flowProcessAfterAdvance() { ProcessControl flowControl = (ProcessControl)ContextHelper.getActionContext().getParameter("control"); for (ProcessControlItem to [...]

控制台报错“编码: JUSTEP154010; 提示: 互逆关系 AAA BBB, 定义的映射必须有type属性”

bizData设置树形关联概念或者主从级联删除控制台类似如下错误: Caused by: com.justep.exception.BusinessException: 编码: JUSTEP154010; 提示: 互逆关系Pr_sb.zid <-> Pr_sb.fid, 定义的映射必须有type属性 at com.justep.exception.BusinessException.create(Unknown Source) at com.justep.util.Utils.check(Unknown Source) at com.justep.system.ksql.ConceptMapping.fillDefaultMapping(Unknown Source) at com.justep.system.ksql.ConceptMapping.getConceptMapping(Unknown Source) 报这个错找到打开对应的ontolog文件,切换到“映射设置”,找到“字段映射”,确认设置映射的字段关系类型是否为空,这个地方需要的关系String或者Integer等简单类型

控制台报错“编码:JUSETP154007;提示:关系XXX定义了互逆,它的值类型String必须是一个概念”

bizData设置树形关联概念或者主从级联删除控制台类似如下错误: 报这个错误找到打开概念所在的ontology文件,找到这个概念中报错的那个关系,把关系类型设置跟它设置互逆的那个关系所在的概念的概念名(树形的就是当前概念的名字,主从主概念中的关系设置为从概念名字,从概念中关系设置为主概念的名字) 这个错误是因为设置为互逆的两个关系的关系类型必须是概念类型才可以

JS文件的国际化设置

JS文件的国际化设置有两种方法 方法一:将整个JS文件作为语言资源文件 JS文件及语言资源文件,如下图所示 在不同的语言文件中设置不同的显示信息 方法二:将JS文件中的需要语言转换的字符串抽取成变量,定义在单独的JS文件中,并将此JS文件进行国际化设置,这样就实现了语言属性文件的效果(推荐) 案例 将/UI2/appdemo/test/process/total/mainActivity.js文件中需要语言转换的字符串抽取成变量 Model.prototype.button20Click = function(event) { alert(Lang.information); }; 新建/UI2/appdemo/test/process/total/lang.js文件,在lang.js中给这个变量赋值,并将lang.js文件进行国际化设置,lang.js的完整定义如下: define(function(require) { return { information: "information" } }); lang.js文件国际化设置如下: 在/UI2/appdemo/test/process/total/mainActivity.js文件文件中增加对lang.js文件的引用 var Lang = require("./lang"); JS文件及语言资源文件,如下图所示 [...]

PC端流转对话框中选择组织对话框打开时默认展开所有组织

PC端流转对话框中选择组织对话框打开时组织默认指展开了第一级,如果要求组织完全展开可以在打开选择组织机构弹出框后设置,那么就需要对平台提供的流转对话框进行扩展 某个具体流程功能的流转对话框可以参考http://docs.wex5.com/bex5-process-question-list-10008/ 所有的功能都需要可以通过扩展空间的方式修改/UI2/system/service/process/dialog/processDialog.js 在打开选择组织机构弹出框后设置组织全展开需要对Model.prototype.showExecutorDialog方法中重写 具体如下: Model.prototype.showExecutorDialog = function(owner, item){ var dialog = this.getExecutorDialog(); var param = this.createExecutorDialogParam(item); dialog._param_owner = owner; dialog.open(param); //获取到组织机构树orgGrid,然后调用grid的expandAll方法全展开 if(dialog.getInnerModel()){ dialog.getInnerModel().comp("orgGrid").expandAll(); } else{ dialog.on('onLoad',function(event){ event.source.getInnerModel().comp("orgGrid").expandAll(); }); } }; [...]

grid动态设置前端过滤

grid中提供了filter属性设置数据过滤表达式,表达式中可以使用$model,$object,$parent,$row(执行过滤的数据行对象)变量,属于前端过滤 如果要动态设置,可以调用grid的setFilter方法设置 参考: var grid = this.comp('grid1'); grid.setFilter("$row.val('fName') == 'bbb'"); grid.refresh(); 其中:grid1是grid组件的xid

流转对话框中勾选某个环节时不勾选通知

在process和activity中可以设置通知规则,当满足生效条件时在流转对话框中会显示通知,并且通知是勾选上的 当流转对话框中有多个环节选中流转到不同环节时根据业务需要可能有些环节不需要选中通知,可以通过对流转对话框的修改控制选择某些环节是通知不勾选,选择某些环节是通知勾选 某个具体流程功能的流转对话框可以参考http://docs.wex5.com/bex5-process-question-list-10008/ 由于平台默认的/UI2/system/service/process/dialog/processDialog.w是继承/UI2/system/service/process/dialog/processDialog.m.w实现的,所以processDialog.w中调用的某些js方法是在/UI2/system/service/process/dialog/processDialog.m.js中定义的,因此在自己扩展流转对话框中如果有需要修改平台原始的js方法的,需要自己把/UI2/system/service/process/dialog/processDialog.m.js中的函数定义复制到自己的js中然后进行修改 对于通知勾选的控制需要自己重写Model.prototype.addNotice和Model.prototype.checkbox2Change方法 下面实现的是xor输出“活动环节3,活动环节4”两个环节,如果流转对话框中选中的‘活动环节3’通知不勾选,如果选中的‘活动环节4’通知勾选,具体实现如下: Model.prototype.addNotice = function(noticeRows, executorRows, item, control){ var row = {rowid: "", selected: 0, sName: ""}; row.rowid = item.getActivityID(); var activityData = this.comp("activityData"); var itemActivity = activityData.find(['label','selected'], ['活动环节3',true]);//查找流转对话框中的环节是否有活动环节3,并且是勾选流转的数据 if(itemActivity.length>0){//如果有活动环节3,并且是勾选的设置通知的不勾选,否则通知勾选 [...]

BIZ的java中获取BIZ的完整路径

BIZ是在model目录下的,平台默认的把model的上级路径定义为了JUSETP_HOME,所有要获取biz的路径,可以获取到JUSTEP_HOME然后在拼接上/model/BIZ即可 获取JUSETP_HOME的API如下: com.justep.common.SystemUtils.getHome(null) 因此获取BIZ的完整路径如下实现: com.justep.common.SystemUtils.getHome(null)+"\\model\\BIZ"

xor设置默认选中指定环节

流程中如果有xor,xor默认选中的可以不是需要的,如果默认选中指定环节需要对流转对话框进行修改 某个具体流程功能的流转对话框可以参考http://docs.wex5.com/bex5-process-question-list-10008/ 由于平台默认的/UI2/system/service/process/dialog/processDialog.w是继承/UI2/system/service/process/dialog/processDialog.m.w实现的,所以processDialog.w中调用的某些js方法是在/UI2/system/service/process/dialog/processDialog.m.js中定义的,因此在自己扩展流转对话框中如果有需要修改平台原始的js方法的,需要自己把/UI2/system/service/process/dialog/processDialog.m.js中的函数定义复制到自己的js中然后进行修改 设置默认选中的环节需要对Model.prototype.addActivity函数的定义进行修改,因此需要把/UI2/system/service/process/dialog/processDialog.m.js中此函数的完整定义复制到自己扩展的js文件 流转对话框中默认是否选中是通过activityRows.push({rowid: activity.getID(), selected: selected, isEnd: isEnd, label:activity.getLabel()});中的selected这个属性值扩展的,因此可以通过对环节名的判断设置这个属性值为不同的 具体的代码修改参考如下: Model.prototype.addActivity = function(activityRows, executorRows, activity, control) { if (activity.isSelectable()) { var toItem = control.getToItemByID(activity.getID()); var isEnd = toItem.isEnd(); var selected = toItem.isSelected(); [...]