用友致远协同办公系统-开发手册
2. 二次开发接口
预备知识:
1、 Web Service 2、 XML
3、 支持Web Service调用的编程语言
其中Java已验证,C#、Php未经验证,请参照Java例程及axis2文档进行开发。
A8平台接口提供基于axis2 1.4实现的标准Web service。可以采取多种方式进行客户端开发。
本指南所有远程接口例程使用axis2的ADB(Axis2 DataBinding Framework)stub方式进行开发。 为便于二次开发,在client/demo目录中提供了一个示例应用,示例包括以下内容: 单点登录、组织模型同步、组织模型导出、公告新闻导出、文档导出、表单流程查询、BPM集成、消息集成、Portlet栏目集成 2.1 接口一览
? 组织模型接口:提供组织模型导入和导出接口,可以实现其他HR与A8的集成,其他系统可以与A8实现组
织模型和人员信息同步。
? 文档接口:提供了A8文档导出接口,支持协同、公文、新闻、公告等信息导出,通过此接口可以实现与档案
软件的集成,以及A8信息发布到外部网站。
? 表单流程接口:提供了外部数据导入A8进行流转审批,以及A8流程审批信息导出到其他系统(如ERP),通
过此接口可以实现政府外网审批信息提交到内网进行流转审批,ERP数据可以转入A8进行流转,A8流程审批信息也可以转入ERP进行结果管理。
? 新闻和公告发布接口:提供了单位新闻和公告的发布。 ? 待办事项接口:提供A8待办事项列表。
2.2 服务列表
A8平台提供以下服务: 名称 验证服务 人员管理服务 部门管理服务 岗位管理服务 职务级别管理服务 单位管理服务 组织模型数据服务 文档导出服务 新闻公告发布服务 表单服务 服务 authorityService personService departmentService ocupationService otypeService accountService organizationDataService documentService documentService formService 说明 用户身份验证服务 人员的创建、修改、删除和启用/禁用。 部门的创建、修改、删除和启用/禁用。 岗位的创建、修改、删除和启用/禁用。 职务级别的创建、修改、删除和启用/禁用。 人员、部门、岗位和职务级别数据导入导出服务。 协同、公文、新闻、公告、讨论、调查数据导出服务。 新闻和公告发布发布服务。 表单定义与数据导出服务 用友致远协同办公系统-开发手册 BPM服务 事项服务 消息服务 文件服务 BPMService affairService messageService downloadService uploadService 业务单据流程集成服务。 待办事项和跟踪事项集成服务。 外部系统发消息到A8的服务。 A8的附件下载和上传服务。 服务详情参见《平台API参考手册》。
3. Portal集成
3.1 单点登录(SSO) 3.1.1 外部平台集成A8 3.1.1.1 实现说明
也就是从外部系统登录到A8,这种认证是完全信任外部系统的。 单点登录有2种效果:
1, 单点登录成功后直接打开A8主页面 2, 单点登录成功后并不打开A8主页面,A8维护ticket信息和登录用户信息,为以后请求服务作认证使用,比如:
请求获得A8待办事项列表服务。需要配置SSOLoginContext.xml中一个属性如下: 登录过程: ? 人员登录外部平台 ? 外部平台带着ticket和from跳转到A8-/login/sso?from=*&ticket=* 1. 如果A8登录正常,会在response header中增加SSOOK,否则增加SSOError 例如: \+encodeURIComponent(\<%=request.getParameter(\t\)%>\)+\; ? A8根据from取得握手bean ,也就是springBean id 例如: ? ? ? ? ? ? 调用握手bean由外部系统认证ticket并返回A8的登录名 把ticket和username维护在内存 A8带着ticket跳转到/login/proxy ,也就是执行一个servlet A8 JAAS的取得用户身份信息 A8退出时,会通过SSOLoginHandshakeInterface的logoutNotify()通知到外部系统 外部系统退出时,访问A8 /login/ssologout?from=*&ticket=*通知A8 3.1.1.2 接口说明 ? 外部平台需要有A8登录名的映射表或者使用相同的登录名 用友致远协同办公系统-开发手册 ? JAAS的DefaultLoginModule验证用户名(不验证密码) ? SSOLoginHandshakeInterface与from映射,需要配置或二次开发,系统提供通用的SSOLoginHandshakeServletImpl ? A8的验证系统完全依赖和信任外部系统(存在风险) 1、 配置文件: ApacheJetspeed2\\webapps\\ROOT\\WEB-INF\\classes\\SSOLoginContext.xml(如无可自己创建)
* 通过握手获取平台的认证信息
* @param token 平台传过来的令牌信息 * @return 返回当前登录者的登录名 */
public String handshake(String token);
3.1.1.3 代码示例 从GKE登录到A8: public class GKEA8SSOLoginImp implements SSOLoginHandshakeInterface { private static final Log log = LogFactory.getLog(GKEA8SSOLoginImp.class); private static final int gkeTimeOut=60000; // “token” 就是ticket取得的参数值 public String handshake(String token) { if(token==null||token.equals(\)) { return null; } String userName=\; 用友致远协同办公系统-开发手册
String[] r=token.split(\); if(r==null||r.length!=2) {
return null; }
userName=this.checkPassport(r[0], r[1]); return userName; }
private String checkPassport(String GID,String passPort ) {
StringBuffer sb = new StringBuffer();
sb.append(\);
sb.append(\); sb.append(\); sb.append(\);
sb.append(\+GID+\ gid=\\\ zoneid=\\\); sb.append(\); sb.append(passPort); sb.append(\); sb.append(\); sb.append(\); sb.append(\);
return getGKEResponse(postGKERequest(sb.toString())); }
3.1.1.4 部署说明
单点登录的开发建立的java文件放在org.apache.jetspeed.login包下 例如:
package com.seeyon.v3x.login.gke;
注意事项:
Java的编译class文件,SSOLoginContext.xml 文件,jsp文件copy到SeeyonA8/webapps/ROOT下
3.1.2 A8集成第三方系统 3.1.2.1 实现方式一:Ticket 实现步骤: 1. 添加页签
按下面的定义,在A8的webapps/seeyon/WEB-INF/classes目录下新建一个XML文件,如myspace.xml
用友致远协同办公系统-开发手册
修改webapps/seeyon/WEB-INF/web.xml,增加对新增的myspace.xml的引用
注意事项:集成第三方系统,要以A8系统插件定义
在webapps\\seeyon\\WEB-INF\\classes\\conf\\plugin下新建一个内容如下的XML,即可定义一个id为news,名称为“新闻插件”的新的插件