A8接口和增值开发手册_第1页
A8接口和增值开发手册_第2页
A8接口和增值开发手册_第3页
A8接口和增值开发手册_第4页
A8接口和增值开发手册_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

A8接口和增值开发手册A8接口和增值开发手册27/27蚁PAGE27虿芁螈蒄肂薅螁荿肀膁膆蚆肅肇袁罿膇肁袈蚃袄莆羁薈A8接口和增值开发手册

A8平台接口和增值开发手册

2006UFSeeyonCo.,Ltd.Allrightsreserved.

Thisdocumentcontainsinformationthatisproprietaryand

confidentialtoUFSeeyon.,whichshallnotbedisclosedoutsidethe

recipient'scompanyorduplicated,usedordisclosedinwholeorin

partbytherecipientforanypurposeotherthantoevaluatethisfile.

Anyotheruseordisclosureinwholeorinpartofthisinformation

withouttheexpresswrittenpermissionofUFSeeyon.isprohibited.

Date:2009-01-04

Author:王文友

Version:更正记录4

1.归纳5

编写目的5

开发背景5

应用价值5

接口范围6

2.二次开发接口7

接口一览7

服务列表8

3.Portal集成8

单点登录(SSO)8

外面平台集成A88

实现说明9

接口说明9

代码示例10

部署说明10

A8集成第三方系统10

实现方式一:Ticket10

实现方式二:关系系统+扩展栏目11

Portlet12

归纳12

开发说明12

确定栏目数据12

确定栏目显示模板12

开发说明12

注册到系统12

代码示例12待做事项和追踪事项19

新闻和通知19

4.信息集成19

信息通道19

归纳19

接口说明19

方法说明19

注册到系统19

原理说明20

代码示例20

短信接口20

归纳20

接口说明20

注册到系统20

原理说明20

代码示例21

5.组织模型同步22

初始化同步22

导出22

导入22

实时同步22

实现A8组织模型事件监听接口22

注册事件监听23

6.BPM集成23

准备23

外面系统倡导A8表单流程24

轮询完成的表单流程24导出A8表单流程到外面系统25

7.附录25

术语表25

更正记录

日期更正人更正内容备注2008-12-08王文友创办文档,编写文档模板。2008-12-15王文友增加了安装服务文档。2008-12-23王文友增加了文档导出接口例程。2008-12-29王文友合并刘娜组织模型文档,加入例程;合并于荒津BPM文档。2009-01-04王文友合并张勇Portal和信息文档,拆分API文档。2009-06-16张勇增加单点登录不打开页面方式说明和待做事项接口说明2009-9-27王文友增加组织模型同步和BPM集成

归纳

编写目的

本手册主要面向二次开发人员,内容涵盖A8平台的二次开发、第三方应用集成。若是需要更详细的开发信息,请

参照《平台API参照手册》。

开发背景

接口的目标是

1、与第三方应用集成,完成松弛耦合,亲密集成的目标;

2、与异构应用集成;

3、降低二次开发的技术难度;

4、规范化二次开发,提升二次开发的牢固性;

5、保证二次开发的连续性,降低二次开发应用升级难度。

应用价值

目前平台开放的接口支持:1、组织模型同步2、使用组织模型导入接口,实现外面系统到A8的组织模型初始化同步;3、调用组织模型管理远程接口,在外面系统组织模型发生变化时实时同步到A8。4、实现组织模型事件接口,将A8组织模型改正实时同步到外面系统。5、表单流程集成6、外面系统经过BPM集成远程接口倡导A8的表单流程,在A8中审批流转后回到外面系统,实现表单流程的打通。7、文档导出8、使用文档导出SDK,将A8的共同、公文、新闻、通知、检查和谈论导出到外面系统,知足数据交换和归档的需求。9、Portal集成10、A8Portal可以集成外面系统的页面,也可以将A8集成到第三方Portal中,并且实现单点登录。11、信息集成12、外面经过信息通道,实时获取A8中的信息。可以将A8的信息以邮件、IM(如GKE、RTX)信息和短信形式发送。13、外面系统经过信息接口向A8指定用户发送信息。14、待做事项集成外面系统经过待做事项接口,可以获取A8待做事项的列表,并且可以办理待做事项。

接口范围

A8共同办公正台采用Java开发,支持Oracle、mysql和SqlServer数据库。

平台供应了以下接口:

1、二次开发接口:

2、供应当地开发的JavaSDK和WebService远程接口,涵盖组织模型同步与导入导出、文档导出、表单与流程集成、新闻与公揭宣布支持。

3、Portal接口:

4、供应页面集成和单点登录接口,实现外面应用在A8-Portal的集中展现。

5、信息(短信)接口:

6、供应外面系统获取A8共同办公正台信息的体系。除标准化产品供应的短信集成支持外,A8还供应了短信二次

开发接口,支持与特定的短信运营平台集成。

二次开发接口

预备知识:

1、

WebService

2、

XML

3、支持

WebService调用的编程语言

其中

Java已考据,

C#、Php未经考据,请参照

Java例程及

axis2文档进行开发。

A8平台接口供应基于axis2实现的标准Webservice。可以采用多种方式进行客户端开发。

本指南所有远程接口例程使用axis2的ADB(Axis2DataBindingFramework)stub方式进行开发。

为便于二次开发,在client/demo目录中供应了一个示例应用,示例包括以下内容:

单点登录、组织模型同步、组织模型导出、通知新闻导出、文档导出、表单流程盘问、BPM集成、信息集成、Portlet

栏目集成

接口一览

组织模型接口:供应组织模型导入和导出接口,可以实现其他HR与A8的集成,其他系统可以与A8实现组织模型和人员信息同步。文档接口:供应了A8文档导出接口,支持共同、公文、新闻、通知等信息导出,经过此接口可以实现与档案软件的集成,以及A8信息宣布到外面网站。表单流程接口:供应了外面数据导入A8进行流转审批,以及A8流程审批信息导出到其他系统(如ERP),通过此接口可以实现政府外网审批信息提交到内网进行流转审批,ERP数据可以转入A8进行流转,A8流程审批信息也可以转入ERP进行结果管理。新闻和公揭宣布接口:供应了单位新闻和通知的宣布。待做事项接口:供应A8待做事项列表。

服务列表A8平台供应予下服务:服务说明考据服务authorityService用户身份考据服务人员管理服务personService人员的创办、更正、删除和启用/禁用。部门管理服务departmentService部门的创办、更正、删除和启用/禁用。岗位管理服务ocupationService岗位的创办、更正、删除和启用/禁用。职务级别管理服务otypeService职务级其他创办、更正、删除和启用/禁用。单位管理服务accountService组织模型数据服务organizationDataService人员、部门、岗位和职务级别数据导入导出服务。文档导出服务documentService共同、公文、新闻、通知、谈论、检查数据导出服务。新闻公揭宣布服务documentService新闻和公揭宣布宣布服务。表单服务formService表单定义与数据导出服务BPM服务BPMService业务单据流程集成服务。事项服务affairService待做事项和追踪事项集成服务。信息服务messageService外面系统发信息到A8的服务。文件服务downloadServiceA8的附件下载和上传服务。uploadService

服务详情拜会《平台API参照手册》。

3.Portal集成

单点登录(SSO)

外面平台集成A8实现说明

也就是从外面系统登录到A8,这种认证是完好相信外面系统的。

单点登录有2种收效:1,单点登录成功后直接打开A8主页面2,单点登录成功后其实不打开A8主页面,A8保护ticket信息和登录取户信息,为今后央求服务作认证使用,比方:央求获取A8待做事项列表服务。需要配置中一个属性以下:

<propertyname="forward"value="false"/>

登录过程:

人员登录外面平台

外面平台带着ticket和from跳转到A8-/login/ssofrom=*&ticket=*

1.若是A8登录正常,会在responseheader中增加SSOOK,否则增加SSOError

比方:

"/login/ssoticket="+encodeURIComponent("<%=("ticket")%>")+"&from=gke";

A8依照from获取握手bean,也就是springBeanid

比方:

<beanid="gke"class="">

调用握手bean由外面系统认证ticket并返回A8的登录名

把ticket和username保护在内存

A8带着ticket跳转到/login/proxy,也就是执行一个servlet

A8JAAS的获取用户身份信息

A8退出时,会经过SSOLoginHandshakeInterface的logoutNotify()通知到外面系统

外面系统退出时,接见A8/login/ssologoutfrom=*&ticket=*通知A8

接口说明

外面平台需要有A8登录名的照射表也许使用相同的登录名

JAAS的DefaultLoginModule考据用户名(不考据密码)

SSOLoginHandshakeInterface与from照射,需要配置或二次开发,系统供应通用的

SSOLoginHandshakeServletImpl

A8的考据系统完好依赖和相信外面系统(存在风险)1、配置文件:

(如无可自己创办)

<xmlversion=""encoding="UTF-8">

<!DOCTYPEbeansPUBLIC"-

etAgentModelList(memberId);

List<AgentModel>_agentModelToList=()

.getAgentModelToList(memberId);

List<AgentModel>agentModelList=null;

booleanagentToFlag=false;

booleanisPloxy=false;

if(_agentModelList!=null&&!()){

isPloxy=true;

agentModelList=_agentModelList;

}elseif(_agentModelToList!=null&&!()){isPloxy=true;agentModelList=_agentModelToList;agentToFlag=true;

}else{

isPloxy=false;}

Map<Integer,AgentModel>agentModelMap=newHashMap<Integer,AgentModel>();

if(isPloxy){

for(AgentModelagentModel:agentModelList){

StringagentOptionStr=();

String[]agentOptions=("&");

for(StringagentOption:agentOptions){

int_agentOption=(agentOption);

if(_agentOption==

.key()){

.key(),agentModel);

}elseif(_agentOption==

.key()){

agentModel);

}elseif(_agentOption==

.key()){

(

agentModel);

}

}

}

}

return(memberId,agentModelMap,null,null,

null,agentToFlag);

}

publicBaseSectionTempleteprojection(Map<String,String>preference){

MultiRowFourColumnTempletec=newMultiRowFourColumnTemplete();Useruser=();

LongmemberId=();

LongproxyId=();

(false);etAgentModelList(memberId);

List<AgentModel>_agentModelToList=()

.getAgentModelToList(memberId);

List<AgentModel>agentModelList=null;

booleanagentToFlag=false;

booleanisPloxy=false;

if(_agentModelList!=null&&!()){

isPloxy=true;

agentModelList=_agentModelList;

}elseif(_agentModelToList!=null&&!()){

isPloxy=true;

agentModelList=_agentModelToList;

agentToFlag=true;

}else{

isPloxy=false;

}

Map<Integer,AgentModel>agentModelMap=newHashMap<Integer,AgentModel>();

if(isPloxy){

for(AgentModelagentModel:agentModelList){

StringagentOptionStr=();

String[]agentOptions=("&");

for(StringagentOption:agentOptions){

int_agentOption=(agentOption);

if(_agentOption==

.key()){.key(),agentModel);

}elseif(_agentOption==

.key()){

agentModel);

}elseif(_agentOption==

.key()){

(

agentModel);

}

}

}

}

List<Affair>affairs=(memberId,

agentModelMap,null,null,null,agentToFlag);

if(affairs==null){

returnnull;

}

for(Affairaffair:affairs){

url="";

row=();

StringforwardMember=();

IntegerresentTime=();

Stringsubject=(affair

.getSubject(),forwardMember,resentTime,orgManager,null);

intapp=();

LongobjectId=();

(subject);

ApplicationCategoryEnumappEnum=ApplicationCategoryEnum

.valueOf(app);

switch(appEnum){

casecollaboration:

row

.setLink("/method=detail&from=Pending&affairId="

+());

row

.setCategory(app,

"/method=collaborationFrame&from=Pending");

break;

casemeeting:

row

.setLink("/method=myDetailFrame&id="

objectId);

(app,"/method=listHome");break;caseedocSend:

caseedocRec:

caseedocSign:

row

.setLink("/method=detail&from=Pending&affairId="

+());

(app,EdocUtil

.getEdocCategroryPendingUrl()));

break;

caseexSend:row

.setLink("/method=sendDetail&modelType=toSend&id="

+());

if(appEnum

.getKey()))){

url="/method=listMainEntry&modelType=toSend";

}

(app,url);

break;

caseexSign:

row

.setLink("/method=receiveDetail&modelType=toReceive&id="

+());

if(appEnum

.getKey()))){

url="/method=listMainEntry&modelType=toReceive";

}

(app,url);

break;

caseedocRegister:

(

"/method=entryManager&entry=newEdoc&comm=register&edocType="

++"&exchangeId="+()

+"&edocId="+(),

if(appEnum

.getKey()))){

url="/method=entryManager&entry=edocFrame&from=listRegisterPending"

;

}

(app,url);break;

casebulletin:

("/method=audit&id="

+(),;

booleanisGroup=().intValue()==.ordinal());

(app,

"/method=auditListMain&spaceType="

+(isGroup0:1)+"&bulTypeId=&type=&from="

+(isGroup"Group":""));

break;

casenews:

("/method=audit&id="

+(),;

booleanisGroupNews=().intValue()==.ordinal());

(app,

"/method=auditListMain&spaceType="

(isGroupNews0:1)

"&newsTypeId=&type=&from="

(isGroupNews"Group":""));

break;

caseinquiry:

("/method=survey_check&bid="

+objectId,;

(app,"/method=recent_or_check");

break;

casemeetingroom:{

("/method=createPerm&openWin=1&id="

objectId,;

(app,"/method=index");}

}

V3xOrgMembermember=null;

try{

member=());

}catch(BusinessExceptione){("",e);}

());

(member));

());

if())){

(true);

etLoginName();

RTXNotifyValueBeanvalue=newRTXNotifyValueBean();

Stringcontent=();

=().getName();

.

(value);

}catch(Throwablee){("",e);}

}

}

terator();();){

AdapterMobileMessageMangeram=();

if()){adapterMobileMessageManger=am;

break;

}

}

只在启用了搬动应用的前提下加载wap短信网关

Map<String,AdapterMobileWapPushManager>aWapMsgM=;

if(!()){

if

for(Iterator<AdapterMobileWapPushManager>iter=().iterator();();){

AdapterMobileWapPushManageram=();

if()){

adapterMobileWapPushManager=am;

break;

}

}

}

else{

("没有搬动应用插件,将不启用Wappush");

}

}

从代码中可以看出短信插件只会加载一个短信接口

if(booleanWappush&&isCanUseWapPush(),())){et("success");

if(success)){

returnfalse;

}

String[]str=(",");

booleansuccessSend=false;

for(inti=0;i<;i++){

if(str[i].equals(destPhone)){

successSend=true;

}

}

returnsuccessSend;

}

xportData(req);

Stringxml=();

导入

在目标系统建立一个新的单位,编写代码,剖析A8组织模型XML,建立部门、岗位、职务级别和人员。

实时同步

使用A8组织模型事件接口,实时将A8组织模型的改正同步到目标系统。

实现A8组织模型事件监听接口

实现A8的OrganizationEventListener接口(接

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论