控制台报错“编码: 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文件,找到这个概念中报错的那个关系,把关系类型设置跟它设置互逆的那个关系所在的概念的概念名(树形的就是当前概念的名字,主从主概念中的关系设置为从概念名字,从概念中关系设置为主概念的名字) 这个错误是因为设置为互逆的两个关系的关系类型必须是概念类型才可以

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"

queryAction的condition和filter的区别

condition:私有过滤条件,在queryAction中定义需要的查询条件 filter:公共过滤条件,由UI中设置的过滤条件,使用bizData的filter属性赋值或者调用setFilter方法,当在queryAction中定义了filter又在UI中设置了filter,那么UI中设置的会把queryAction中设置的覆盖 设置的过滤条件就是sql中的where语句 最终filter参数和condition参数以and的方式合并到一起作为where条件过滤数据

给where条件的in传参注意事项

ksql或者sql的where条件中如果有in并且过滤的是多个数据的范围时需要注意不能用一个参数把所有数据都传过去 如下: 要过滤的是001,002这两个数据,那么在传参的时候就不能用('参数名','001,002')的方式传,因为这样是把001,002当作一个字符串处理了 这样的可以在java中获取到传过来的参数的值,自己用,截取字符串判断一下,然后再给in的查询赋值 java中定义参考如下: public static void paramToin(String param){ String ksql = "select xb.* from AP_XSXB xb"; if(param.indexOf(",")>0){ String[] strArray = null; strArray = param.split(","); String newalias =" in('"; for(int i=0 ;i<strArray.length;i++){ if(i [...]

获取当前人员成员在某业务管理权限下所管理的下级组织

在com.justep.system.opm.OrgUtils提供了获取指定组织单元的下属 findSubordinations(Object org, String manageType, Object inOrg, Boolean isPersonMember) 获取指定组织单元的下属 参数: Object org 组织单元; 允许两种情况: 单个组织单元ID或FID(String类型); 多个组织单元ID或FID(String类型)形成的List; String manageType 管理类型的CODE,空表示所有管理类型 Object inOrg 返回值必须在指定组织范围内, 允许三种情况: 空值, 表示不限制范围; 单个组织单元ID或FID(String类型); 多个组织单元ID或FID(String类型)形成的List; Boolean isPersonMember 是否取到人员成员 返回: List<OrgUnit> [...]

如何获取拥有指定功能权限的人员成员

平台默认在BIZ层的组织机构函数中提供了获取拥有指定功能权限的所有角色和根据角色ID获取相关组织的函数如下: findRolesHasActivity(String process, Set<String> activity) 获取拥有指定功能权限的所有角色 参数: String process Set<String> activity 返回: List<String> findOrgUnitsHasRole(String roldID, Object inOrg, Boolean isPersonMember) 获取拥有某个角色的组织单元 findOrgUnitsHasRole('角色ID', '', true) findOrgUnitsHasRole('角色ID', currentOgnID(), false) 参数:String roldID 角色ID Object inOrg 组织单元所在的组织, [...]

反向生成本体时主键关系不是fID

如果数据库中的主键关系不是fID,在反向生成本地的时候选择关系时把主键字段也选择上,这样概念映射中的主键就会映射为数据库对应的字段的名字 概念的主键必须要设置默认值,平台默认的是guid(),如果不需要是guid可以自己在概念定义中修改 如果需要在页面中操作主键关系的值,需要自己在反向生成本体后自己手动到概念中新增一个关系,关系标识跟数据库中的主键名一致,然后在概念定义的主键关系上选择这个关系,需要注意的是此时的主键默认值需要在关系定义上设置

java中手动判断某功能是否有权限

平台默认提供了checkPermissionAction(验证是否拥有权限)这个action 如果需要通过判断某具体的功能是否有权限对页面进行控制,可以自己在java中调用checkPermissionAction,具体的参数设置参考如下: public static void testPermission(){ //定义一个Map遍历把需要判断的功能的process和activity放到Map中,可以定义多个Map放不同的功能 Map<String, String> funcParams = new HashMap<String, String>(); funcParams.put("process", "/appdemo/test/process/button/buttonProcess"); funcParams.put("activity", "mainActivity"); //定义checkPermissionAction需要的list参数,把功能的Map添加多list中 List<Map<String, String>> actionParam = new ArrayList<Map<String, String>>(); actionParam.add(funcParams); //定义调用action的ActionUtils.invokeAction这个方法进行传参的Map参数,把List添加到Map中 Map<String, Object> params = new HashMap<String, [...]

记录操作日志时自己扩展日志数据

在定义的action中勾选了启用日志,那么在操作这个action时,平台就会向日志表SA_Log中插入一条操作记录 如果在记录操作日志的时候需要自己向SA_Log的扩展字段或者自己的表中插入数据,可以用拦截器实现 拦截器可以在/BIZ/system/config/interceptor.config.m中定义,推荐用扩展空间修改这个文件 需要注意的是自己加的拦截器定义信息要放到平台默认的logAfter这个下面,便于在自己的拦截器中获取平台默认生成的日志记录的信息 具体参考如下: 1.interceptor.config.m中配置拦截器 <item name="selfLog" value="/demo/misc/logic/code,LogAction,after" /> name可以自己取 value属性值,第一个逗号前面的是自己定义的拦截器的java所在的模块路径 第二个逗号前面的是定义的拦截器的java的类,(需要注意的是如果是在src下定义的那么要在java类前面添加包名,如com.justep.system.interceptor.LogAfter,其中com.justep.system.interceptor包名,LogAfter是类名) 最后的after或者是before是指在action执行前或者执行后执行这个逻辑 2.java中的定义 import com.justep.model.Action; import com.justep.system.action.Interceptor; import com.justep.system.context.ActionContext; import com.justep.system.context.ContextHelper; import com.justep.system.data.KSQL; import com.justep.util.Utils; public class LogAction implements Interceptor [...]