今天为大家分享一下FineReport与致远OA单点集成方案,以下是大致相关,文末会有详细介绍(含FineReport与致远OA详细集成方案、五份文件以及两份说明),有需要可自行下载。
在SeeyonReport的同目录下,放一个报表工程WebReport,如下图1所示:
然后之后访问的报表url,都是访问这个WebReport,譬如访问fs的具体URL是http://localhost/WebReport/ReportServer?op=fs,(ip根据致远实际情况修改),然后将该url挂在致远OA的某个链接上。譬如将其挂在致远OA的关联系统里面,系统管理员给test用户的关联系统挂了一个fs的链接,如图2所示:
然后test用户登录OA后,可以看到关联系统里面有一个帆软报表的链接,如下图3所示: 与刚部署的WebReport的fs做单点登录 由于致远的限制,在WebReport里面不能获取到当前登录OA的用户名和密码,而又想要单点登录fs,这时候可以修改致远OA的登录页面,获取到登录OA的用户名和密码,然后加上我们的Ajax单点登录。注意,由于涉及到中文用户名,需要用到cjkEncode方法,而如果直接引用finereport.js,会和致远的js冲突,因此需要重写cjkEncode方法。其OA登录页面为Seeyon\A8\ApacheJetspeed\webapps\seeyon\main\login\default\login.jsp, 在它的loginButtonOnClickHandler方法内,加上我们的Ajax单点登录,同时,新增一个cjkEncode的function。具体代码见改文件目录的login.jsp。 然后,将OA里的用户同步到WebReport里。首先,连上OA的数据库(以MySQL为例),然后建立一个服务器数据集,通过 SELECT org.name as department,p.name as role,
m.name as username,a.login_name,a.credential_value
FROM dbo.[ORG_PRINCIPAL] a left join dbo.ORG_MEMBER m on a.member_id=m.id
left join dbo.[ORG_POST] p on p.id=m.org_post_id
left join dbo.[ORG_UNIT] org on org.id=m.org_department_id
如下图4,图5所示:
可以看到,其密码都是加密过的,因此需要我们fs配置自定义加密类。将改目录下的TestPasswordValidator.class放到 WebReport\WEB-INF\classes\com\fr\privilege\providers\dao目录下,没有则新建。
另外还需要将seeyon_ctp_core.jar放到WebReport\WEB-INF\lib目录下; 这两个方法好,重启报表工程。 然后登陆fs配置,如图6所示:(自定义加密那里的路径填写成com.fr.privilege.providers.dao.TestPasswordValidator)
配置好后,再登录OA来验证单点登录是否成功,如下图7,图8,图9所示
[micxp_gzhmm]
[/micxp_gzhmm] (附件含FineReport与致远OA详细集成方案、五份文件以及两份说明)
|