xiaoyan shuai

1 分钟前

至元数据起始

普元EOS中,如果需要往session中设置属性,该如何操作

这个运算逻辑为coframe登录的运算逻辑,uo.setAttributes(attributes);中的attributes可以是动态属性,比如下面例子中就是将用户的角色信息都放到userObject中

@Bizlet("登录系统,并返回用户对象")

public static UserObject initUserObject(DataObject acOperator) {

UserObject uo = new UserObject();

String userid = acOperator.getString("userid");

HashSet<String> roleSet = new HashSet<String>();

Connection conn = DBUtil.getConnection();

HashMap<String, Object> attributes = new HashMap<String, Object>();

ArrayList<DataObject> roleList = new ArrayList<DataObject>();

ArrayList<HashMap> sybList = new ArrayList<HashMap>();

ArrayList<HashMap> ywdyList = new ArrayList<HashMap>();

PreparedStatement ps = null;

PreparedStatement ps1 = null;

PreparedStatement ps2 = null;

PreparedStatement ps3 = null;

PreparedStatement ps4 = null;

ResultSet rs = null;

ResultSet rs1 = null;

ResultSet rs2 = null;

ResultSet rs3 = null;

ResultSet rs4 = null;

try {

// 查询人员基本信息

ps = conn.prepareStatement(SQLBASEINFO);

ps.setString(1, userid);

rs = ps.executeQuery();

if (rs.next()) {

// 存在操作员

String empid = rs.getString(EMPID);

int operatorid = Integer.parseInt(rs.getString(OPERATORID));

uo.setUserId(rs.getString(USERID));

uo.setUserMail(rs.getString("OEMAIL"));

uo.setUserName(rs.getString(USERNAME));

uo.setUserRealName(rs.getString(EMPNAME));

uo.setUserOrgId(rs.getString(ORGID));

uo.setUserOrgName(rs.getString(ORGNAME));

String skin = rs.getString(MENUTYPE);

// 设置 layout和style的默认值

attributes.put(ABFConfigKey.SKIN_LAYOUTATTR.getConfigValue(), ABFConfigKey.SKIN_DEFAULT_LAYOUT.getConfigValue());

attributes.put(ABFConfigKey.SKIN_STYLEATTR.getConfigValue(), ABFConfigKey.SKIN_DEFAULT_STYLE.getConfigValue());

if (StringUtil.isNotNullAndBlank(skin)) {

String[] tmp = skin.split(",");

if (tmp.length > 0) {

attributes.put(ABFConfigKey.SKIN_LAYOUTATTR.getConfigValue(), tmp[0]);

}

if (tmp.length > 1) {

attributes.put(ABFConfigKey.SKIN_STYLEATTR.getConfigValue(), tmp[1]);

}

}

attributes.put("orgseq", rs.getString(ORGSEQ));

attributes.put("orgcode", rs.getString(ORGCODE));

attributes.put("orgtype", rs.getString(ORGTYPE));

attributes.put("orgdegree", rs.getString("ORGDEGREE"));

attributes.put("empid", empid);

attributes.put("operatorid", rs.getString(OPERATORID));

// 查询角色列表

// 查询操作员角色

ps1 = conn.prepareStatement(SQLROLE);

// 设置参数

ps1.setInt(1, operatorid);

rs1 = ps1.executeQuery();

while (rs1.next()) {

String id = rs1.getString("roleid");

if (!roleSet.contains(id)) {

DataObject role = DataObjectUtil.createDataObject("org.gocom.abframe.dataset.privilege.AcRole");

role.setString("roleid", id);

roleSet.add(id);

roleList.add(role);

}

}

if (StringUtil.isNotNullAndBlank(empid)) {

// 关联员工,查询员工关联机构的角色列表,查询所在事业部、所在业务单元

int iempid = Integer.parseInt(empid);

ps2 = conn.prepareStatement(SQLORGROLE);

// 设置参数

ps2.setInt(1, iempid);

ps2.setInt(2, iempid);

ps2.setInt(3, iempid);

rs2 = ps2.executeQuery();

while (rs2.next()) {

String id = rs2.getString("roleid");

if (!roleSet.contains(id)) {

DataObject role = DataObjectUtil.createDataObject("org.gocom.abframe.dataset.privilege.AcRole");

role.setString("roleid", rs2.getString("roleid"));

roleSet.add(id);

roleList.add(role);

}

}

ps3 = conn.prepareStatement(SQLGETSYB);

ps3.setString(1, userid);

rs3 = ps3.executeQuery();

while (rs3.next()) {

HashMap syb = new HashMap();

syb.put("orgid", rs3.getInt("ORGID"));

syb.put("orgseq", rs3.getString("ORGSEQ"));

syb.put("userid", rs3.getString("USERID"));

sybList.add(syb);

}

ps4 = conn.prepareStatement(SQLGETYWDY);

ps4.setString(1, userid);

ps4.setString(2, userid);

rs4 = ps4.executeQuery();

while (rs4.next()) {

HashMap syb = new HashMap();

syb.put("orgid", rs4.getInt("ORGID"));

syb.put("orgseq", rs4.getString("ORGSEQ"));

syb.put("userid", rs4.getString("USERID"));

ywdyList.add(syb);

}

}

// 设置角色到用户对象中

attributes.put("roles", roleList.toArray(new DataObject[roleList.size()]));

attributes.put("sybs", sybList);

attributes.put("ywdys", ywdyList);

uo.setAttributes(attributes);

} else {

// 无此操作员

uo = null;

}

} catch (Exception e) {

uo = null;

LogUtil.logError("登录出错!", e, (Object) null);

} finally {

DBUtil.closeAll(conn, new PreparedStatement[] { ps, ps1, ps2, ps3, ps4 }, new ResultSet[] { rs, rs1, rs2, rs3, rs4 });

}

return uo;

}

普元EOS中如何往Session的UserObject中设置自定义属性相关推荐

  1. 普元EOS/BPS为什么没有安装成功 ?

    原文连接 在实际的Platform/BPS的产品安装使用中,经常会遇到安装不成功的场景,运行版不成功多于开发版,运行版中集群安装不成功又多于单机版.手工部署安装问题也会多于安装介质的安装.下面说明一下 ...

  2. 普元EOS开发积累第一篇(常见错误解决方法) 持续更新

    普元EOS开发积累第一篇(常见错误解决方法) 持续更新 参考文章: (1)普元EOS开发积累第一篇(常见错误解决方法) 持续更新 (2)https://www.cnblogs.com/tangjing ...

  3. 普元 EOS Platform 7.6 集群部署在BES9.5.2.4692,重启集群节点偶发报错:java.util.ConcurrentModificationException

    [问题描述] 普元EOS Platform 7.6 集群部署在BES9.5.2.4692,重启集群节点偶发报错: [com.primeton.runtime.resource.impl.Contrib ...

  4. 普元eos开发手册_名词解释--统一应用(开发)平台Unified Application Platform

    国内有些企业项目开发当中,可能会遇到UAP的概念,UAP指的是Unified Application Platform,即统一应用平台. UAP,简单的理解,就是公司层面,统一的技术平台,涉及整个公司 ...

  5. 普元EOS RichWeb(富客户端)实践总结

    最近公司未来一银行项目要使用到普元的EOS,客服是普元合作机构,没办法,必须将系统在EOS平台上部署开发,认真学习了2个星期,对EOS6.0的印象还是非常的好.丰富的页面开发组件,SOA我不是特别特别 ...

  6. 普元eos使用svn_普元DevOps介绍

    普元DevOps是通过工具链与集成.发布.反馈与优化进行端到端整合,完成无缝的跨团队.跨系统协作.其目标是建立开发与运维之间的桥梁,履行开发运维协作.自动化.基础设施即代码.持续集成.持续测试.持续发 ...

  7. 普元 EOS Platform 7.6适配人大金仓v8

    先说下普元7.6,普元7.6最大支持编译JDK1.7.然后在它默认的数据源里,最大支持人大金仓V7. 实际使用中,可以使用JDK1.8,也可以连接人大金仓V8. 人大金仓V8记得朝人大金仓要jar包( ...

  8. 普元 EOS定时任务实现原理

    转至元数据起始 普元平台的定时任务能力是通过开源的作业调度框架Quartz实现的. 一.定时任务的基本概念: 调度器:负责管理Quartz应用运行时环境,用于调度定时任务. 定时任务:按照某种时间规则 ...

  9. 普元EOS之我要配置数据源或更换数据库

    阅读原文 用户在使用普元产品的时候,有时候会根据业务需要,要配置数据源或更换数据库连接,分为开发版的更换和运行环境的更换. 1. 数据源概述 普元SOA产品中提到的数据源,分为两种, C3P0数据源和 ...

  10. 普元连接mysql_普元EOS 案例 - 还有一行代码的个人空间 - OSCHINA - 中文开源技术交流社区...

    1  创建项目 1)  进入EOS Studio开发透视图: 单击主菜单项"文件"选择"新建"->"空EOS项目 2)  在弹出的"创 ...

最新文章

  1. 错误中积累经验,BUG中寻发展,总结中提升
  2. 偶得--Unity在asp.net mvc上的基本应用
  3. Java 全半角转换
  4. 基于MicroPython的家庭可燃气体泄露微信报警器
  5. linux内核配置打开声卡,配置树莓派/Linux默认声卡设备
  6. 电阻元件、电感元件、电容元件
  7. 用C语言打印一个菱形图案!
  8. 计算机研究生期末汇报,研究生学期总结ppt.doc
  9. 微信小程序----Grid(九宫格)(flex实现九宫格布局)
  10. 项目Beta冲刺(5/7)(追光的人)(2019.5.27)
  11. 推广的euclid_问题引导的代数学: Euclid 空间 III
  12. React学习笔记——redux里中间件Middleware的运行机理
  13. To the Greatness of Small
  14. SVM(下)—时间刺客带你做项目
  15. PythonStock(11):使用pandas计算股票波峰波谷猜想
  16. PVF(PGI Visual Fortran) 安装以及openacc在linux和window下调用
  17. 运用css设计简单3D魔方
  18. 腾讯安全被列为全球大型威胁情报厂商
  19. 选择国企背景的期货公司开户
  20. 装包seurat、singR

热门文章

  1. linux免杀工具,安卓Apk免杀工具:backdoor-apk 教程
  2. ‘’vr‘’全景抓鸡游戏总结
  3. CSF文件播放器处理总结
  4. Spring 源码(四)解析配置类
  5. 使用Android Studio开发/调试Android源码
  6. NetMeeting服务
  7. 【Protel】Protel99SE(附汉化包+SP6+增强工具+视频教程)
  8. 产品沉思录 V3.0 试读
  9. 一款免费开源的文件加密软件Veracpryt---文件、文件夹加密功能介绍
  10. Xiaojie雷达之路---匹配滤波器