申请免费试用、咨询电话:400-8352-114
第十部分 泛普免费OA文档webservices接口
一. 泛普OA管理平台接口说明
可以通过该接口对系统中的文档进行一些操作,创建文档、删除文档、更新文档、查看文档
二. 使用说明
1. 更新lib目录下文件
将spring.jar更新为spring-1.2.6.jar
将xfire-all-1.1.2.jar更新为xfire-all-1.2.6.jar
添加xbean-spring-2.8.jar文件
2. 修改web.xml文件
在相应处增加servlet部署(参考系统中已有很多servlet部署),加入如下描述
<servlet>
<servlet-name>XFireServlet</servlet-name>
<display-name>XFire Servlet</display-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
注意:不要添加在注释中(即以“<!—”开始至“-->”结束为注释)!
3. 添加文件
在classes目录中添加META-INF/xfire/services.xml
在classes目录中添加以下class文件:
泛普OA系统docswebservicesDocAttachment.class
泛普OA系统docswebservicesDocCustomField.class
泛普OA系统docswebservicesDocInfo.class
泛普OA系统docswebservicesDocService.class
泛普OA系统docswebservicesDocServiceImpl.class
二、 泛普OA破解版接口使用
文档接口采用标准的Web Service规范,因此可以使用标准的Web Service客户端调用。
1. 客户端所需lib
commons-discovery-0.2.jar
javax-wsdl_1.5.1jar
commons-logging_1.0.4.jar
axis.jar
jaxrpc.jar
saaj.jar
activation.jar
mail.jar
2. wsdl描述
在泛普OA系统系统中成功部署文档Web Service接口后,访问以下地址即可查看到该接口的wsdl描述:http://服务器:端口号/services/DocService?wsdl
3. 接口方法概述
名称 参数 返回值 功能描述
login String loginid:用户登陆名
String password :用户登陆密码
int logintype:登陆方式(0 数据库验证;1 动态密码验证;2 LDAP验证)
String ipaddress:用户IP地址 String:登陆Session码 登陆验证用户,并根据返回随Session码
createDoc DocInfo docinfo:文档信息对象
String sessioncode:登陆Session码 int:1 成功 0 失败 根据文档对象创建文档
updateDoc DocInfo docinfo:文档信息对象
String sessioncode:登陆Session码 int:1 成功 0 失败 根据文档对象修改文档
deleteDoc int id:文档ID
String sessioncode:登陆Session码 int:1 成功 0 失败 根据文档ID删除文档
getDoc int id:文档ID
String sessioncode:登陆Session码 DocInfo:文档对象 根据文档ID取得文档对象(带文档内容及附件)
getDocCount String sessioncode:登陆Session码 int:文档数 取得有权限访问的文档数
getList String sessioncode:登陆Session码 DocInfo[]:文档对象数组 取得有权限访问的文档对象数组(无文档内容及附件)
4. 接口调用示例
使用eclipse向导生成Web Service客户端
完成后,创建调用程序后,写入如下代码:
public static void main(String[] args) {
try {
//根据Eclipse生成的Web Service客户端程序,取得接口
DocServicePortType service = new DocServiceLocator().getDocServiceHttpPort(new URL("http://localhost:8080//services/DocService"));
//登陆
String session = service.login("zdp", "1", 0, "127.0.0.1");
//取得有权限访问的文档数
int count = service.getDocCount(session);
//取得有权限访问的文档列表,第1页,每页10条记录
DocInfo[] docs1 = service.getList(session,1,10);
//取得有权限访问的文档列表,第2页,每页10条记录
DocInfo[] docs2 = service.getList(session,2,10);
//循环打印取得的文档的ID、标题、主目录ID、主目录名称、分目录ID、分目录名称、
//子目录ID、子目录名称、文档创建人ID、文档创建人名称、创建日期、创建时间
for(int i=0;i<docs1.length;i++)
System.out.println(docs1[i].getId()+"|"+docs1[i].getDocSubject()+"|"+
docs1[i].getMaincategory()+"|"+docs1[i].getMaincategoryStr()+"|"+
docs1[i].getSubcategory()+"|"+docs1[i].getSubcategoryStr()+"|"+
docs1[i].getSeccategory()+"|"+docs1[i].getSeccategoryStr()+"|"+
docs1[i].getDoccreaterid()+"|"+docs1[i].getDoccreatername()+"|"+
docs1[i].getDoccreatedate()+"|"+docs1[i].getDoccreatetime());
//根据ID取得文档内容
DocInfo doc = service.getDoc(13095,session);
//取得该文档的第一个附件
DocAttachment da = doc.getAttachments()[0];
//得到附件内容
byte[] content = Base64.decode(da.getFilecontent());
//得到附件在服务器上的绝对路径
String filepath = da.getFilerealpath();
//将附件内容转存至D:
File file = new File("d:\"+da.getFilename());
try {
int byteread;
byte data[] = new byte[1024];
InputStream imagefile = null;
if(da.getIszip()==1){
ZipInputStream zin = new ZipInputStream(new ByteArrayInputStream(content));
if (zin.getNextEntry() != null)
imagefile = new BufferedInputStream(zin);
} else {
imagefile = new ByteArrayInputStream(content);
}
OutputStream out = new FileOutputStream(file);
while ((byteread = imagefile.read(data)) != -1) {
out.write(data, 0, byteread);
out.flush();
}
imagefile.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
//根据绝对路径转存附件(仅限与泛普OA系统系统在同一服务器上)
try {
int byteread;
byte data[] = new byte[1024];
InputStream imagefile = null;
if(da.getIszip()==1){
ZipInputStream zin = new ZipInputStream(new FileInputStream(new File(da.getFilerealpath())));
if (zin.getNextEntry() != null)
imagefile = new BufferedInputStream(zin);
} else {
imagefile = new FileInputStream(new File(da.getFilerealpath()));
}
OutputStream out = new FileOutputStream(file);
while ((byteread = imagefile.read(data)) != -1) {
out.write(data, 0, byteread);
out.flush();
}
imagefile.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
//上传附件,更新文档
content = null;
try {
int byteread;
byte data[] = new byte[1024];
InputStream input = new FileInputStream(new File("d:\123.pdf"));
ByteArrayOutputStream out = new ByteArrayOutputStream();
while ((byteread = input.read(data)) != -1) {
out.write(data, 0, byteread);
out.flush();
}
content = out.toByteArray();
input.close();
out.close();
} catch(Exception e){
e.printStackTrace();
}
da.setDocid(doc.getId());
da.setImagefileid(0);
da.setFilecontent(Base64.encode(content));
da.setIszip(1);
doc.setDocSubject("test");
doc.setDoccontent("content");
doc.setAttachments(new DocAttachment[]{da});
service.updateDoc(doc, session);
//上传附件,创建文档
content = null;
try {
int byteread;
byte data[] = new byte[1024];
InputStream input = new FileInputStream(new File("d:\123.pdf"));
ByteArrayOutputStream out = new ByteArrayOutputStream();
while ((byteread = input.read(data)) != -1) {
out.write(data, 0, byteread);
out.flush();
}
content = out.toByteArray();
input.close();
out.close();
} catch(Exception e){
e.printStackTrace();
}
da.setDocid(0);
da.setImagefileid(0);
da.setFilecontent(Base64.encode(content));
da.setFilerealpath("d:\123.pdf");
da.setIszip(1);
doc.setId(0);
doc.setDocSubject("test pdf1");
doc.setDoccontent("abcefghijk");
doc.setAttachments(new DocAttachment[]{da});
service.createDoc(doc, session);
} catch(Exception e) {
e.printStackTrace();
}
}
5. 文档对象说明
DocInfo
/**
* 文档ID
*/
private int id;
/**
* 文档类型
* 1 Html文档 2 Office文档
*/
private int docType;
/**
* 文档标题
*/
private String docSubject;
/**
* 文档编号
*/
private String docCode;
/**
* 新闻类型
*/
private int docPublishType;
private String publishable;
/**
* 文档版本
*/
private int docEdition;
private int docEditionId;
private String docEditionStr;
/**
* 文档状态
*/
private int docStatus;
private String docStatusStr;
/**
* 主目录
*/
private int maincategory;
private String maincategoryStr;
/**
* 分目录
*/
private int subcategory;
private String subcategoryStr;
/**
* 子目录
*/
private int seccategory;
private String seccategoryStr;
/**
* 部门
*/
private int docdepartmentid;
private String docdepartmentStr;
/**
* 语言
*/
private int doclangurage;
private String doclangurageStr;
/**
* 关键字
*/
private String keyword;
/**
* 创建
*/
private int doccreaterid;
private int doccreatertype;
private String doccreatername;
private String doccreatedate;
private String doccreatetime;
/**
* 修改
*/
private int doclastmoduserid;
private int doclastmodusertype;
private String doclastmodusername;
private String doclastmoddate;
private String doclastmodtime;
/**
* 批准
*/
private int docapproveuserid;
private int docapproveusertype;
private String docapproveusername;
private String docapprovedate;
private String docapprovetime;
/**
* 失效
*/
private int docinvaluserid;
private int docinvalusertype;
private String docinvalusername;
private String docinvaldate;
private String docinvaltime;
/**
* 归档
*/
private int docarchiveuserid;
private int docarchiveusertype;
private String docarchiveusername;
private String docarchivedate;
private String docarchivetime;
/**
* 作废
*/
private int doccanceluserid;
private int doccancelusertype;
private String doccancelusername;
private String doccanceldate;
private String doccanceltime;
/**
* 主文档
*/
private int maindoc;
private String maindocname;
/**
* 被引用列表
*/
private int[] childdoc;
private String[] chiledocname;
/**
* 文档所有者
*/
private int ownerid;
private int ownertype;
private String ownername;
/**
* 失效时间
*/
private String invalidationdate;
/**
* 虚拟目录
*/
private int[] dummyIds;
private String[] dummyNames;
/**
* 自定义字段
*/
private DocCustomField[] doccustomfields;
/**
* 关联类型
*/
private int hrmresid;
private int assetid;
private int itemid;
private int projectid;
private int financeid;
/**
* HTML文档内容
*/
private String doccontent;
/**
* Office文档内容
*/
private int imagefileId;
private int versionId;
/**
* 是否回复文档
*/
private String isreply;
private int replydocid;
/**
* 附件数
*/
private int accessorycount;
/**
* 回复数
*/
private int replaydoccount;
/**
* 文档附件
*/
private DocAttachment[] attachments;
DocCustomField
/**
* 自定义字段ID
*/
private int fieldid;
/**
* 自定义字段显示类型
*/
private String fieldhtmltype;
/**
* 自定义字段存储类型
*/
private String fielddbtype;
/**
* 自定义字段类型
*/
private int fieldtype;
/**
* 自定义字段显示名称
*/
private String fieldshow;
/**
* 自定义字段值
*/
private String fieldvalue;
DocAttachment
/**
* 文档ID
*/
private int docid;
/**
* 附件ID
*/
private int imagefileid;
/**
* 附件名称
*/
private String imagefilename;
/**
* 附件描述
*/
private String imagefiledesc;
/**
* 附件宽度(图片文件)
*/
private int imagefilewidth;
/**
* 附件高度(图片文件)
*/
private int imagefileheight;
/**
* 附件大小
*/
private int imagefilesize;
/**
* 附件类型
*/
private String docfiletype;
/**
* 附件版本
*/
private int versionId;
/**
* 附件版本描述
*/
private String versionDetail;
/**
* 是否Office文档内容附件
*/
private String isextfile;
/**
* 文件名称
*/
private String filename;
/**
* 文件类型
*/
private String filetype;
/**
* 文件使用次数
*/
private int fileused;
/**
* 文件绝对路径
*/
private String filerealpath;
/**
* 文件内容Base64后编码
*/
private String filecontent;
/**
* 是否压缩
*/
private int iszip;