风雨十年,感恩同行
查看: 3561|回复: 1

FineReport帆软和泛微OA(Ecology)的单点登录集成修改对应程序方法,附无限制集成包

[复制链接]

该用户从未签到

发表于 2018-11-16 15:32:03 | 显示全部楼层 |阅读模式

$ S5 r3 q! y" @7 g; j# F
% \8 |' }) d& ]/ U
最近出现了很多关于帆软报表和泛微OA的集成问题,均出现在“单点登录”上。直接也有相关的文章介绍一些FineReport和泛微集成的背景、价值等,以及FineReport和OA的深度集成的方案,但是并没有提到单点登录的集成方案,今天就简单介绍下FineReport和OA单点登录集成方式。
同步用户信息
单点登录的基础,就是用户信息的同步,FineReport的决策系统中有一个很强大的功能,可以自动帮助用户实现用户信息同步。具体菜单:决策系统-管理系统-用户管理。点击用户管理菜单后,右侧页面右上角有一个“设置”按钮,如下图:

" z  r# C7 q4 U1 i: k" n/ W
1.png

* c  \0 ]/ Z% d
点击“设置”,则会出现如下图的界面。按照下图中的配置进行对应的配置。
# d4 {* L' L: z' c
2.png

; M6 ^' e# ~; |  |
认证方式:选择平台内置认证。单点登录的集成是通过平台内置认证进行集成的。
用户同步数据集:选择“已开启”
服务器数据集:服务器数据集是需要去帆软报表的开发工具上进行配置。如下图:

# ~# H  N6 M) K- D+ W- g, Z  b
3.png " T- [4 B9 ~8 y5 P8 P
; @6 g3 F# g0 ^+ G$ q: H
4.png
' t; n6 K4 Z5 |2 b  ]' |
进入设计器,点击菜单服务器-服务器数据集,新增一个数据集,选择OA的数据源,写入SQL“select * from hrmresource”,保存即可。
保存后,需要去本地的开发环境上找到对应的xml,复制到决策系统服务器端,才可使用。本地开发环境的xml路径见上图“保存路径”后面的对应文件路径。
通过EditPlus编辑器打开datasource.xml文件后,找到“OA用户”这块xml代码。将这块代码复制到服务器上的datasource.xml上,路径和/WebReport/WEB-INF/resourcr/datasource.xml,粘贴格式参见本地的开发环境。如下图:
+ a& r% g( p! l7 |+ A1 r4 o7 `' u/ [
5.png

3 b4 O% }8 w$ l+ \- S7 j2 [$ c
注:不要用记事本打开xml,保存可能会损坏xml。更新服务器文件时,做好备份
继续配置用户同步
用户名:XXX
姓名:XXX
密码:XXX,注意,OA的密码已经进行了32位大写的MD5加密
加密方式:不设置密码加密
其他选填。
点击保存,OK,决策系统已经开始在后台执行了用户同步了。只需要在决策系统中的用户管理上查看同步的用户信息结果即可。
泛微OA的登录方式和如何编写单点登录
了解单点登录之前,先了解下OA的登录方式。泛微OA的登录方式有2种。第一种,是通过页面登录进OA;第二种是,是通过E-Message上的快捷方式进入到OA。
这样的话,如果实现FineReport和泛微OA集成的单点登录,以上的两种登录方式均瑶实现这个效果。很多用户和泛微的实施团队会在OA的login.jsp上编写单点登录代码。在login.jsp上编写单点登录代码智能解决第一种登录方式“通过页面登录进OA”。而通过E-Message上的快捷方式进入到OA是不能实现帆软决策系统的单点登录的。如果要实现两种登录方式的单点登录,可以在泛微OA登录后页面上编写单点登录代码。泛微OA登录后页面的jsp为“/ecology/wui/theme/ecology7/page/main.jsp”。
第一步,引入js代码:

: J2 W& v& Z5 l9 i
  1. <script type="text/javascript" src="http://***.***.***.***:**/WebReport/ReportServer?op=emb&resource=finereport.js"></script>
复制代码
1 |/ S/ D7 p9 Q" [$ M" V% \
第二步,获取当前用户的登录名和密码的java代码

6 \3 V9 s; N& k4 ~7 I
  1. String nodeSql ="select loginid,password from HrmResource where id =  " + user.getUID(); 4 m5 e) \) P/ K  f5 S
  2.         RecordSet.executeSql(nodeSql);
    5 A4 Y7 a4 k! R/ o: d+ S
  3.         if (RecordSet.next()){ * e1 d' m. P5 R$ C1 r. e. I. L
  4.                 userpasswordstr = RecordSet.getString("password");      , u) v/ `- J4 I8 `! _* s' b# K7 I
  5.                 loginidstr = RecordSet.getString("loginid");
复制代码

" k  A% X3 {+ h1 h
从上面的代码可以很明显的看到,这个和sql和rs的取值字段跟之前配置用户同步信息对应的表和字段是一样的。

. y% m+ }( x& Z; x. w# K6 \
第三步,编写js代码:
  1. var username =FR.cjkEncode("<%=loginidstr%>");   . p6 Z+ @% w2 Q5 h5 _+ F0 N+ b
  2. var password ="<%=userpasswordstr%>"; + P  ]# d) A4 t4 x
  3. password = password.toUpperCase();//把密码小写字母转换成大写字母
    ) @$ j) u* ]* M, _0 C8 T! G
  4. var scr = document.createElement("iframe");                 4 y8 }8 J6 w4 g/ f
  5. scr.src = "http://***.***.***.***:**/WebReport/ReportServer?op=touchfs&username="+username+"&__redirect__=false&password="+password;
复制代码

1 f, c5 z% U% S/ v  |+ G" {' k
这里是采用iframe的跨域单点登录方式,所以在JS中需要创建一个iframe,然后在iframe上设置SRC。
- e1 a& H+ T6 I: m, A, G
第四步,保存main.jsp,备份服务器的main.jsp,更新main.jsp。

( K; z. O4 r  w
第五步,重新登录OA,单点登录成功。校验方式,在OA的浏览器上,新建一个页签,输入“http://***.***.***.***:**/WebReport/ReportServer?op=fs”,如果出现如下图,且登录名为自己的用户,则表示单点登录成功。但是。。。还没完。

% w& O  I/ @! h! P- K- {4 j
6.png

7 C0 l5 Q  h' R& G9 A9 `, d% p
在泛微OA上配置决策系统入口
完成了上述的配置,但是OA用户通过什么方式进入决策平台呢?提供2个方式供参考。
第一,用系统管理员配置自定义左侧菜单。
第二,设置用户元素。
以上3点完成后,FineReport和OA的集成工作就大功告成了。
$ m9 j# m' Q; [' Z
FineReport帆软和泛微OA(Ecology)的单点登录集成无限制集成包

. B* R2 O6 j' p8 g+ I6 p
百度网盘下载地址,含安装包和视频文件
4 e4 }  J) `/ [; w- J% B- P
FineReport帆软和泛微OA(Ecology)的单点登录集成无限制集成包.rar (282 Bytes, 下载次数: 154)

相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
ymmm123 该用户已被删除
发表于 2018-11-23 15:14:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

金蝶用友易助管家婆深度服务
快速回复 返回顶部 返回列表