您的当前位置:首页用友NC-OA平台API参考手册

用友NC-OA平台API参考手册

2022-01-12 来源:爱问旅游网


用友NC-OA平台API参考手册

© 2006 UFida Co., Ltd. All rights reserved.

This document contains information that is proprietary and confidential to UFida., which shall not be disclosed outside the recipient's company or duplicated, used or disclosed in whole or in part by the recipient for any

purpose other than to evaluate this file. Any other use or disclosure in whole or in part of this information without the express written permission of Ufida. is prohibited.

Date: 2009-02-26 Author: Version:

王文友 V1.0

用友NC-OA平台API参考手册 ................................................................. 1 修改记录 .............................................................................................. 6 1. 服务参考 ......................................................................................... 7

1.1 概述 ......................................................................................... 7

1.1.1 配置开发环境 ............................................................................................... 7 1.1.2 开始编码(Java) ......................................................................................... 7

1.1.2.1 生成ADB Client Stub ........................................................................ 7 1.1.2.2 编写客户端代码 ................................................................................. 7 1.1.3 开始编码(C#) ........................................................................................... 8

1.1.3.1 添加服务引用 .................................................................................... 8 1.1.3.2 编写客户端代码 ................................................................................ 11 1.1.4 服务列表 ................................................................................................... 11 1.1.5 服务公共实体 .............................................................................................. 12

1.1.5.1 服务响应实体(ServiceResponse) ...................................................... 12 1.1.5.2 服务异常(ServiceException) ............................................................ 13 1.2 验证服务 ............................................................................. …..13

1.2.1 登录验证 ................................................................................................... 13

1.2.1.1 身份验证令牌实体(UserToken) .......................................................... 13 1.2.1.2 身份验证 ........................................................................................ 13 1.3 组织模型管理 ............................................................................ 14

1.3.1 单位管理 ................................................................................................... 14

1.3.1.1 取得单位ID .................................................................................... 14 1.3.2 人员管理 ................................................................................................... 15

1.3.2.1 人员实体(PersonInfoParam_All) ...................................................... 15 1.3.2.2 方法列表 ........................................................................................ 16 1.3.2.3 创建人员 ........................................................................................ 16 1.3.2.4 修改人员信息(按人员ID) .................................................................. 17 1.3.2.5 修改人员信息(按人员登录名) ............................................................. 18 1.3.2.6 删除人员(按人员ID) .......................................................................... 19 1.3.2.7 删除人员(按登录名) ........................................................................ 20 1.3.2.8 启用/停用人员(按人员ID) ................................................................... 20 1.3.2.9 启用/停用人员(按人员登录名) .............................................................. 21 1.3.2.10 修改人员密码(按人员ID) ..................................................................... 22 1.3.2.11 修改人员密码(按人员登录名) ................................................................ 22 1.3.3 部门管理 ................................................................................................... 23

1.3.3.1 部门实体 (DepartmentInfoParam_All) .................................................. 23 1.3.3.2 方法列表 ........................................................................................ 23 1.3.3.3 创建部门 ........................................................................................ 24 1.3.3.4 更新部门(按部门ID) ....................................................................... 25 1.3.3.5 更新部门(按部门路径名称) ................................................................ 25 1.3.3.6 删除部门(按部门ID) ....................................................................... 26 1.3.3.7 删除部门(按部门名称) ..................................................................... 27 1.3.3.8 删除部门(按部门名称及父部门名称) ..................................................... 27 1.3.3.9 删除部门(按部门路径名称) ................................................................ 28 1.3.3.10 启用/禁用部门(按部门ID) ................................................................ 28 1.3.3.11 启用/禁用部门(按部门名称) .............................................................. 29 1.3.3.12 启用/禁用部门(按部门名称及父部门名称) .............................................. 30 1.3.3.13 启用/禁用部门(按部门路径名称) ......................................................... 30

1.3.3.14 移动部门(按部门ID) ....................................................................... 31 1.3.3.15 移动部门(按部门名称) ..................................................................... 32 1.3.4 岗位管理 ................................................................................................... 32

1.3.4.1 岗位实体 (OcupationInfoParam_A8_All) ............................................... 32 1.3.4.2 方法列表 ........................................................................................ 32 1.3.4.3 创建岗位 ........................................................................................ 32 1.3.4.4 更新岗位(按岗位ID) ....................................................................... 33 1.3.4.5 更新岗位(按岗位名称) ..................................................................... 34 1.3.4.6 删除岗位(按岗位ID) ....................................................................... 35 1.3.4.7 删除岗位(按岗位名称) ..................................................................... 36 1.3.4.8 启用/禁用岗位(按岗位ID) ................................................................ 36 1.3.4.9 启用/禁用岗位(按岗位名称) .............................................................. 37 1.3.5 职务级别管理 .............................................................................................. 38

1.3.5.1 职务级别实体 (OtypeInfoParam_A8_All) ............................................... 38 1.3.5.2 方法列表 ........................................................................................ 38 1.3.5.3 创建职务级别 ................................................................................... 38 1.3.5.4 更新职务级别(按职务级别ID) ............................................................ 39 1.3.5.5 更新职务级别(按职务级别名称) .......................................................... 40 1.3.5.6 删除职务级别(按职务级别ID) ............................................................ 41 1.3.5.7 删除职务级别(按职务级别名称) .......................................................... 41 1.3.5.8 启用/禁用职务级别(按职务级别ID) ...................................................... 42 1.3.5.9 启用/禁用职务级别(按职务级别名称) ................................................... 43 1.4 组织模型数据管理 ...................................................................... 44

1.4.1 方法列表 ................................................................................................... 44 1.4.2 导出人员信息 .............................................................................................. 44 1.4.3 导出部门信息 .............................................................................................. 46 1.4.4 导出岗位信息 .............................................................................................. 48 1.4.5 导出职务级别信息 .................................................................... 错误!未定义书签。 1.4.6 导出组织模型信息 .................................................................... 错误!未定义书签。 1.4.7 导入组织模型信息 .................................................................... 错误!未定义书签。 1.5 文档导出 ................................................................................. 53

1.5.1 方法列表 ................................................................................................... 53 1.5.2 文档导出公共实体 ........................................................................................ 53

1.5.2.1 人员实体(PersonExport) ................................................................. 53 1.5.2.2 部门实体(DepartmentExport) .......................................................... 54 1.5.2.3 岗位实体(OcupationExport) ............................................................ 54 1.5.2.4 职务级别实体(OTypeExport) ............................................................ 54 1.5.2.5 附件实体(AttachmentExport) .......................................................... 54 1.5.2.6 正文实体(TextExport) .................................................................... 54 1.5.2.7 HTML正文实体(TextHtmlExport) ..................................................... 55 1.5.2.8 附件正文实体(TextAttachmentExport) ............................................... 55 1.5.3 协同导出 ................................................................................................... 55

1.5.3.1 协同实体(FlowExport) .................................................................... 56 1.5.3.2 协同正文补充实体(AdminicularExport) ................................................. 56 1.5.3.3 协同预归档实体(FolderExport) ......................................................... 57 1.5.3.4 协同节点实体(FlowNodeExport) ....................................................... 57 1.5.3.5 协同人员实体(NodeMemberExport) .................................................. 58 1.5.3.6 协同节点策略实体(NodeTacticsExport) ............................................... 58

1.5.3.7 协同回复信息实体(DocBbsExport) ..................................................... 58 1.5.3.8 协同关联协同实体(RelFlowExport) ..................................................... 58 1.5.3.9 协同关联项目实体(ProjectExport) ..................................................... 59 1.5.4 公文导出 ................................................................................................... 59

1.5.4.1 公文实体(DocumentExport) ............................................................ 59 1.5.4.2 公文单实体(DocumentFormExport) .................................................. 60 1.5.4.3 导出可离线查看的公文单 ..................................................................... 61 1.5.5 公文导入 ................................................................................................... 63 1.5.6 回写公文状态 .............................................................................................. 64 1.5.7 新闻导出 ................................................................................................... 65

1.5.7.1 新闻实体(NewsExport) ................................................................... 65 1.5.7.2 新闻类型实体(NewsTypeExport) ....................................................... 66 1.5.8 公告导出 ................................................................................................... 66

1.5.8.1 公告实体(BulletinExport) ................................................................ 66 1.5.8.2 公告类型实体(BulletinTypeExport) .................................................... 67 1.5.8.3 公告接收者实体(BulletinReceiverExport) ............................................ 67 1.5.9 调查导出 ................................................................................................... 68

1.5.9.1 调查实体(ResearchExport) ............................................................. 68 1.5.9.2 调查题目实体(ResearchSubjectExport) .............................................. 69 1.5.9.3 调查评论实体(ResearchCommentExport) ........................................... 69 1.5.9.4 调查类型实体(ResearchTypeExport) .................................................. 69 1.5.9.5 调查发布范围实体(ResearchTargetExport) .......................................... 69 1.5.9.6 调查答案实体(AnswerExport) .......................................................... 70 1.5.10 讨论导出 .............................................................................................. 70

1.5.10.1 讨论实体(BbsExport) ..................................................................... 71 1.5.10.2 讨论回复实体(BbsReplyExport) ........................................................ 71 1.5.10.3 讨论类型实体(BbsTypeExport) ......................................................... 72 1.5.10.4 讨论发布范围实体(BbsTargetExport) ................................................. 72 1.6 新闻和公告发布 ......................................................................... 72

1.6.1 方法列表 ................................................................................................... 72 1.6.2 新闻发布 ................................................................................................... 73 1.6.3 公告发布 ................................................................................................... 73 1.7 表单管理 ................................................................................. 75

1.7.1 方法列表 ................................................................................................... 75 1.7.2 表单导出 ................................................................................................... 75

1.7.2.1 表单实体(FormExport) ................................................................... 76 1.7.2.2 表单字段定义实体(DefinitionExport) .............................................. 76 1.7.2.3 表单从表信息实体(SubordinateFormExport) ........................................... 76 1.7.2.4 表单数据值实体(ValueExport) ............................................................ 77 1.7.2.5 表单从表记录实体(RecordExport) ........................................................ 77 1.8 BPM集成 ................................................................................ 77

BPM集成开发流程 ............................................................................... 77

1.8.1 方法列表 ................................................................................................... 77 1.8.2 流程状态 ................................................................................................... 78 1.8.3 获取模板定义 .............................................................................................. 78 1.8.4 外部系统发起表单流程 ................................................................................... 79

1.8.4.1 获取流程数据定义 ............................................................................. 80 1.8.4.2 发起表单流程数据的校验 ..................................................................... 80

1.8.4.3 流程日志 ........................................................................................ 81 1.8.5 外部系统发起html正文流程(不包括office正文) .................................................. 81 1.8.6 取得流程运转状态 ........................................................................................ 82 1.8.7 按时间段查询出多个表单模板已经审批通过和结束的流程 .......................................... 83 1.9 事项集成 ................................................................................. 83

1.9.1 方法列表 ................................................................................................... 83 1.10 消息服务 ................................................................................. 85 1.10.1 方法列表 .............................................................................................. 85 1.11 文件服务 ................................................................................. 86 1.11.1 方法列表 .............................................................................................. 86 1.11.2 文件下载服务 ........................................................................................ 86 1.11.3 文件上传服务 ........................................................................................ 87

2. 附录 ............................................................................................. 89

2.1.1 服务错误号 ................................................................................................. 89

修改记录

日期 2008-12-08 2008-12-15 2008-12-23 2008-12-29 2009-6-16 2009-9-27 修改人 王文友 王文友 王文友 王文友 张勇 张勇 修改内容 创建文档,编写文档模板。 增加了安装服务文档。 增加了文档导出接口例程。 备注 合并刘娜组织模型文档,加入例程; 合并于荒津BPM文档。 增加待办事项列表接口 增加跟踪事项列表接口,消息集成接口,新闻和公告sso接口; 增加文件服务,流程支持附件。 增加本地调用方法及示例。 2009-9-28 2009-12-15 2009-12-15 王文友 王文友 张勇 增加C#开发指南以及BPM接口完 善(Schema、XSLT、流程日志) 增加了按时间段导出公告接口,表单导出增加数据类型定义,增加文件上传和下载部分的本地示例 增加公文导出自定义公文单元 增加公文导入 增加公文交换发送状态和签收状态回写用友NC-OA 检查并修订文档 检查并修改文档 2010-04-14 张勇 2010-05-31 2010-6-12

汤晓轩 曹飞

1. 服务参考

1.1 概述

用友NC-OA平台提供基于axis2 1.4实现的标准Web service。可以采取多种语言多种方式进行客户端开发。 本指南提供了Java和C#的开发步骤,PHP建议使用WSO2 Web Services Framework for PHP开发。 本指南所有Java远程接口例程使用axis2的ADB(Axis2 DataBinding Framework)Stub方式进行开发。

如果使用Java进行与用友NC-OA紧耦合的本地开发:

1、 可以跳过SOAP,直接调用Web service的Java本地接口实现。

2、 可以略过下面几节,直接从服务列表开始阅读,在Java项目中包含seeyon-api.jar和v3x-services.jar即

可。

3、 编写的代码必须与用友NC-OA部署在一起(同一虚拟机,同一上下文)。 4、 示例代码参考每一接口的本地调用。

注意:如果使用ADB Client Stub方式编写客户端代码,用友NC-OA升级以后必须重新生成并更新客户端的Stub!!! 1.1.1 配置开发环境 启动用友NC-OA服务。 查看提供的服务列表:

http://{host}:{port}/seeyon/services/listServices 查看特定服务的WSDL: http://{host}:{port}/seeyon/services/{serviceName}?wsdl 服务的EPR(EndPoint Refrence)地址: http://{host}:{port}/seeyon/services/{serviceName} 1.1.2 开始编码(Java)

下面是使用Axis2 ADB方式编写服务客户端代码的步骤: 1.1.2.1 生成ADB Client Stub 进入axis2/bin目录,运行 wsdl2java –uri http://{host}:{port}/seeyon/services/{serviceName}?wsdl www.seeyon.com=com.seeyon.client 如: -o src –ns2p wsdl2java -uri http://localhost/seeyon/services/personService?wsdl -o src -ns2p www.seeyon.com=com.seeyon.client ADB是生成Axis2客户端最简单的方法。在大多数情况下,所有相关的类将会建立为一个主要功能组类的内部类。 注意:为了保证与服务器端的兼容性,用友NC-OA升级以后必须重新生成并更新客户端的Stub!!! 1.1.2.2 编写客户端代码

将wsdl2java生成的客户端stub代码复制到Java项目中

服务接口方法:

public interface PersonService { } long create(String token, PersonInfoParam_All member) throws ServiceException; 客户端Stub结构:

客户端代码:

PersonServiceStub stub = new PersonServiceStub (); PersonServiceStub.Create req = new PersonServiceStub.Create(); PersonServiceStub.PersonInfoParam_All person = new PersonServiceStub.PersonInfoParam_All(); person.setTrueName(\"测试真名\"); person.setLoginName(\"登录名\"); req.setPerson(person); PersonServiceStub.CreateResponse resp = stub.create(req); 1.1.3 开始编码(C#)

在Visual Studio2008环境以authorityService为例 1.1.3.1 添加服务引用

1、 在Visual Studio的“解决方案资源管理器”中,在“引用”上点击右键,在弹出的菜单中选择“添加服务引用”,

弹出“添加服务引用”对话框。

2、 在弹出的对话框点击“高级”,然后点击“添加Web引用”(Visual Studio2008和之前的版本有一定差别)。

3、 在“添加Web引用”对话框中输入Web Service的WSDL地址,点击“前往”;

指定Web引用名后,点击“添加引用”。

4、 Visual Studio为添加的Web Service生成了以下的Web引用。

1.1.3.2 编写客户端代码

服务接口方法:

public interface AuthorityService { } UserToken authenticate(String userName, String password); 客户端代码: AuthorityService.authorityService ws = new AuthorityService.authorityService(); AuthorityService.UserToken token = ws.authenticate(\"service-admin\",\"123456\"); Console.WriteLine(token.id); 1.1.4 服务列表 名称 验证服务 人员管理服务 部门管理服务 岗位管理服务 职务级别管理服务 单位管理服务 组织模型数据服务 文档导出服务 服务 authorityService personService departmentService ocupationService otypeService accountService organizationDataService documentService 说明 用户身份验证服务 人员的创建、修改、删除和启用/禁用。 部门的创建、修改、删除和启用/禁用。 岗位的创建、修改、删除和启用/禁用。 职务级别的创建、修改、删除和启用/禁用。 只提供了获取单位信息。 人员、部门、岗位和职务级别数据导入导出服务。 协同、公文、新闻、公告、讨论、调查数据导出服务。 新闻公告发布服务 表单服务 BPM服务 事项服务 消息服务 文件服务 documentService formService BPMService affairService messageService downloadService uploadService 新闻和公告发布发布服务。 表单定义与数据导出服务 业务单据流程集成服务。 待办事项和跟踪事项集成服务。 外部系统发消息到用友NC-OA的服务。 用友NC-OA的附件下载和上传服务。

1、 外部业务系统服务传入用户名和密码,发出验证请求; 2、 用友NC-OA远程接口进行服务用户验证,通过则生成token,返回令牌;否则返回一个空令牌(tokenId=-1)。 3、 外部业务系统构造请求数据,封装请求参数。 4、 发送服务请求;

5、 用友NC-OA远程接口根据请求调用用友NC-OA API,执行请求操作,获取相应的业务对象; 6、 用友NC-OA对请求进行处理; 7、 返回处理结果; 8、 返回响应数据。 1.1.5 服务公共实体

1.1.5.1 服务响应实体(ServiceResponse)

参数 result errorNumber errorMessage 名称 返回值 错误号 错误信息 数据类型 long long String 长度 备注 服务调用出错返回-1,否则表示成功。 参见服务错误号表

1.1.5.2 服务异常(ServiceException)

参数 errorNumber errorMessage 名称 错误号 错误信息 数据类型 long String 长度 备注 参见服务错误号表 1.2 验证服务

服务名称:authorityService

WSDL:http://{host}:{port}/seeyon/services/authorityService?wsdl 1.2.1 登录验证

1.2.1.1 身份验证令牌实体(UserToken)

参数 id 名称 令牌ID 数据类型 String 长度 36 备注 用户名和密码验证未通过时值为-1。 所有服务都必须提供合法的令牌ID方可调用。 1.2.1.2 身份验证

使用用户名和密码进行身份验证。

用户名不能更改,必须使用service-admin,缺省密码为123456,可以在配置文件里进行修改。

在用友NC-OA_HOME/base/conf下建立一个名称为service.properties的文本文件(运行一次验证服务的authenticate方法会自动创建),内容如下: password=123 就可以把验证密码修改为123。

为了设置方便,缺省情况下密码使用明文保存,如果为了安全,可以保存密码的MD5值,建立下面的service.properties文件: password= e10adc3949ba59abbe56e057f20f883e encode=1 方法:authenticate 参数: 参数 username password 返回值:

UserToken

返回身份验证令牌。返回的令牌可以多次使用,有效期为15分钟,每一次有效请求令牌的有效期延长10分钟,最长15分钟;没有必要每次请求前都登录。 示例: 远程调用:

数据类型 String String 说明 服务用户名 服务用户密码 AuthorityServiceStub.Authenticate req = new AuthorityServiceStub.Authenticate(); req.setUserName(\"service-admin\"); req.setPassword(\"123456\"); AuthorityServiceStub stub = new AuthorityServiceStub(); AuthorityServiceStub.AuthenticateResponse resp = stub.authenticate(req); AuthorityServiceStub.UserToken token = resp.get_return(); if(token.getId()!=-1) { } import com.seeyon.v3x.services.AuthorityService; import com.seeyon.v3x.services.impl.AuthorityServiceImpl; import com.seeyon.v3x.services.UserToken; … AuthorityService service = new AuthorityServiceImpl(); UserToken token = service.authenticate(userName, password); 本地调用: 1.3 组织模型管理

组织模型管理服务提供外部系统组织模型同步到用友NC-OA的支持,外部系统可以通过服务调用更新用友NC-OA的人员、部门、岗位和职务级别数据。 1.3.1 单位管理

1.3.1.1 取得单位ID 按照单位名称取单位的ID。 方法:getAccountId 参数:

参数 token accountName 数据类型 String String 说明 登录验证后获取的身份令牌。 单位名称 返回值:

ServiceResponse

成功返回单位ID,否则返回-1。 示例:

远程调用: AccountServiceStub.GetAccountIdResponse resp = stub.getAccountId(req); AccountServiceStub.ServiceResponse r = resp.get_return(); AccountServiceStub stub = new AccountServiceStub(); AccountServiceStub.GetAccountId req = new AccountServiceStub.GetAccountId(); req.setAccountName(accountName); String accountId = r.getResult(); import com.seeyon.v3x.services organization.AccountService; import com.seeyon.v3x.services organization.impl.AccountServiceImpl; import com.seeyon.v3x.services.UserToken; … AccountService service = new AccountServiceImpl(); ServiceResponse resp = service.getAccountId(accountName); 本地调用: 1.3.2 人员管理

1.3.2.1 人员实体(PersonInfoParam_All)

参数 accountId loginName 名称 单位ID 登录名 数据类型 long String 长度 40 备注 非空。 非空。 只能是数字、字母、下划线、和英文点号的组合。 不能以英文点号作为开始符和结束符。 登录名在集团内唯一。 不能采用如下系统中已存在的登录名:system、admin、manager、user、tomcat、jetspeed、subsite。 集团版不能为group-admin。 企业版不能为admin1。 passWord staffNumber trueName departmentName 密码 员工编号 真实姓名 部门路径名称 String String String String[] 20 40 非空。 6-50个字符,区分英文大小写。 不能包含字符|, 部门名称格式:根节点名称/....../父部门名称/部门名称。 不能包含字符|, 各级部门名称长度不能超过40。 ocupationName secondOcupationName 主岗位名称 副岗名称 String String[] 40 不能包含字符|, 副岗名称格式:根节点名称/....../父部门名称/部门名称_岗位名称。 部门名称不能包含字符|, 各级部门名称不能超过40。 岗位名称不能包含字符|, 岗位名称不能超过40。 副岗不能与主岗重复。 otypeName familyPhone officePhone mobilePhone 职务级别名称 家庭电话 办公电话 移动电话 String String String 20 20 20 String 40 不能包含字符”\\/|><:*?’ familyAddress email discursion identity sex 家庭地址 电子邮件 描述 身份证号 性别 String String String String String 70 40 1000 标准电子邮件格式如: *********** 有效身份证号码 -1 为无性别 1 为男 2 为女 birthday per_sort 出生日期 排序号 String String 日期格式:yyyy-mm-dd 1-999999之间的整数 1.3.2.2 方法列表 名称 create update updateByLoginName delete deleteByLoginName enable enableByLoginName setPassword setPasswordByLoginName 1.3.2.3 创建人员

按照person实体中的人员信息创建人员。

当人员所属部门、职务级别、岗位名称为空、部门不存在或部门状态未停用时,人员设置为停用。 当人员所属副岗的岗位或部门不存在时,将忽略此副岗。 方法:create 参数:

参数 token person 数据类型 String PersonInfoParam_All 请参考人员实体定义 说明 登录验证后获取的身份令牌。 人员信息 说明 创建人员 按人员ID修改人员信息 按人员登录名修改人员信息 按人员ID删除人员 按人员登录名删除人员 按人员ID启用/禁用人员 按人员登录名启用/禁用人员 按人员ID设置人员密码 按人员登录名设置人员密码 返回值:ServiceResponse 成功返回人员ID,否则返回-1。 示例: 远程调用: PersonServiceStub.Create req = new PersonServiceStub.Create(); PersonServiceStub.PersonInfoParam_All person = new PersonServiceStub.PersonInfoParam_All(); person.setTrueName(\"真实姓名\"); person.setLoginName(\"登录名\"); … req.setPerson(person); // 发送请求 PersonServiceStub stub = new PersonServiceStub(); PersonServiceStub.CreateResponse resp = stub.create(req); import com.seeyon.v3x.services organization.PersonService; import com.seeyon.v3x.services organization.impl.PersontServiceImpl; import com.seeyon.oainterface.organizationmgr.infoParamImpl.PersonInfoParam_All; PersonService service = new PersontServiceImpl(); PersonInfoParam_All person = new PersonInfoParam_All(); // 与远程调用相同 … service.create(token,person); 本地调用: 1.3.2.4 修改人员信息(按人员ID)

按照person实体中的人员信息修改指定ID的人员信息。

当人员所属部门、职务级别、岗位名称为空、部门不存在或部门状态未停用时,人员设置为停用。 当人员所属副岗的岗位或部门不存在时,将忽略此副岗。 方法:update 参数:

参数 token person 数据类型 String PersonInfoParam_All 请参考人员实体定义 说明 登录验证后获取的身份令牌。 人员信息(人员ID必填) 返回值:ServiceResponse 成功返回人员ID,否则返回-1。 示例: 远程调用: PersonServiceStub stub = new PersonServiceStub(); PersonServiceStub.Update req = new PersonServiceStub.Update(); PersonServiceStub.PersonInfoParam_All person = new PersonServiceStub.PersonInfoParam_All(); // 要修改的信息 person.setTrueName(\"测试按ID修改\"); person.setPer_sort(\"6\"); // [父部门名称,部门名称] String[] deptNames = new String[2]; deptNames[0] = \"部门1\"; deptNames[1] = \"部门3\"; person.setDepartmentName(deptNames); person.setOcupationName(\"总经理\"); String[] secondOcupationNames = new String[2]; // 部门_岗位 secondOcupationNames[0] = \"部门1_总经理\"; secondOcupationNames[1] = \"部门3_部门经理\"; person.setSecondOcupationName(secondOcupationNames); person.setOtypeName(\"总经理\"); person.setPassWord(\"123456\"); person.setSex(\"1\"); req.setToken(ServiceUtil.getToken()); req.setPersonId(id); req.setPerson(person); PersonServiceStub.UpdateResponse resp = stub.update(req); ServiceResponse r = resp.get_return(); 本地调用: import com.seeyon.v3x.services organization.PersonService; import com.seeyon.v3x.services organization.impl.PersontServiceImpl; import com.seeyon.oainterface.organizationmgr.infoParamImpl.PersonInfoParam_All; … PersonService service = new PersontServiceImpl(); PersonInfoParam_All person = new PersonInfoParam_All(); // 与远程调用相同 … service.update (token,personId,person);

1.3.2.5 修改人员信息(按人员登录名)

按照person实体中的人员信息修改指定loginName的人员信息。

当人员所属部门、职务级别、岗位名称为空、部门不存在或部门状态未停用时,人员设置为停用。 当人员所属副岗的岗位或部门不存在时,将忽略此副岗。 方法:updateByLoginName 参数:

参数 token person 数据类型 String PersonInfoParam_All 请参考人员实体定义 说明 登录验证后获取的身份令牌。 人员信息(登录名必填) 返回值:ServiceResponse 成功返回人员ID,否则返回-1。 示例: 远程调用:

PersonServiceStub stub = new PersonServiceStub(); PersonServiceStub.UpdateByLoginName req = new PersonServiceStub.UpdateByLoginName(); PersonServiceStub.PersonInfoParam_All person = new PersonServiceStub.PersonInfoParam_All(); // 必填 person.setLoginName(\"testservice7\"); // 要修改的信息 person.setTrueName(\"测试按登录名修改\"); person.setPer_sort(\"6\"); String[] deptNames = new String[2]; // [父部门名称,部门名称] … deptNames[0] = \"部门1\"; deptNames[1] = \"部门3\"; person.setDepartmentName(deptNames); // 部门 person.setOcupationName(\"总经理\"); String[] secondOcupationNames = new String[2]; // 部门_岗位 secondOcupationNames[0] = \"部门1_总经理\"; secondOcupationNames[1] = \"部门2_部门经理\"; person.setSecondOcupationName(secondOcupationNames); // 副岗 person.setOtypeName(\"总经理\"); // 职务级别 person.setPassWord(\"123456\"); person.setSex(\"1\"); req.setToken(ServiceUtil.getToken()); req.setPerson(person); PersonServiceStub.UpdateByLoginNameResponse resp = stub .updateByLoginName(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.PersonService; import com.seeyon.v3x.services organization.impl.PersontServiceImpl; import com.seeyon.oainterface.organizationmgr.infoParamImpl.PersonInfoParam_All; PersonService service = new PersontServiceImpl(); PersonInfoParam_All person = new PersonInfoParam_All(); // 与远程调用相同 … service.updateByLoginName(token,person); 本地调用: 1.3.2.6 删除人员(按人员ID)

根据人员ID删除人员信息。

如果人员存在待办事项则不能将人员删除。 方法:delete 参数:

参数 token personId 数据类型 String long 说明 登录验证后获取的身份令牌。 人员ID 返回值:ServiceResponse 成功返回人员ID,否则返回-1。 示例: 远程调用:

req.setToken(ServiceUtil.getToken()); req.setPersonId(id); PersonServiceStub stub = new PersonServiceStub(); PersonServiceStub.Delete req = new PersonServiceStub.Delete(); PersonServiceStub.DeleteResponse resp = stub .delete(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.PersonService; import com.seeyon.v3x.services organization.impl.PersontServiceImpl; … PersonService service = new PersontServiceImpl(); service.delete(token,personId); … 本地调用:

1.3.2.7 删除人员(按登录名)

根据人员登录名删除人员信息。

如果人员存在待办事项则不能将人员删除。 方法:deleteByLoginName 参数:

参数 token loginName 数据类型 String String 说明 登录验证后获取的身份令牌。 人员登录名 返回值:ServiceResponse 成功返回人员ID,否则返回-1。 示例: 远程调用:

PersonServiceStub.DeleteByLoginNameResponse resp = stub .deleteByLoginName(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.PersonService; import com.seeyon.v3x.services organization.impl.PersontServiceImpl; … PersonService service = new PersontServiceImpl(); service.deleteByLoginName(token,loginName); req.setToken(ServiceUtil.getToken()); req.setLoginName(loginName); PersonServiceStub stub = new PersonServiceStub(); PersonServiceStub.DeleteByLoginName req = new PersonServiceStub.DeleteByLoginName(); 本地调用:

1.3.2.8 启用/停用人员(按人员ID) 根据人员Id设置人员的停用状态。 方法:enable 参数: 参数 token 数据类型 String 说明 登录验证后获取的身份令牌。 personId enabled long boolean 人员ID 启用标志 true为启用 false为停用 返回值:ServiceResponse 成功返回人员ID,否则返回-1。 示例: 远程调用: PersonServiceStub.EnableResponse resp = stub .enable(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.PersonService; import com.seeyon.v3x.services organization.impl.PersontServiceImpl; … PersonService service = new PersontServiceImpl(); service.enable(token,personId,enabled); req.setToken(ServiceUtil.getToken()); req.setPersonId(id); req.setEnable(enabled); PersonServiceStub stub = new PersonServiceStub(); PersonServiceStub.Enable req = new PersonServiceStub.Enable(); 本地调用:

1.3.2.9 启用/停用人员(按人员登录名) 根据人员登录名设置人员的停用状态 方法:enableByLoginName 参数: 参数 token loginName enabled 数据类型 String String boolean 说明 登录验证后获取的身份令牌。 人员登录名 启用标志 true为启用 false为停用

返回值:ServiceResponse

成功返回人员ID,否则返回-1。 示例: 远程调用: req.setToken(ServiceUtil.getToken()); req.setLoginName(loginName); req.setEnable(enabled); PersonServiceStub stub = new PersonServiceStub(); PersonServiceStub.EnableByLoginName req = new PersonServiceStub.EnableByLoginName(); PersonServiceStub.EnableByLoginNameResponse resp = stub .enableByLoginName(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.PersonService; import com.seeyon.v3x.services organization.impl.PersontServiceImpl; … PersonService service = new PersontServiceImpl(); service.enableByLoginName(token,loginName,enabled); 本地调用: 1.3.2.10

修改人员密码(按人员ID)

根据人员ID设置人员密码 方法:setPassword 参数:

参数 token personId password 数据类型 String long String 说明 登录验证后获取的身份令牌。 人员ID 人员密码

返回值:

ServiceResponse

成功返回人员ID,否则返回-1。 示例: 远程调用: PersonServiceStub stub = new PersonServiceStub(); PersonServiceStub.EnableByLoginNameResponse resp = stub . setPassword(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.PersonService; import com.seeyon.v3x.services organization.impl.PersontServiceImpl; … PersonService service = new PersontServiceImpl(); service. setPassword (token, personId, password); req.setToken(ServiceUtil.getToken()); req.setParsonId (parsonId); req.setPassword(password); PersonServiceStub.EnableByLoginName req = new PersonServiceStub.EnableByLoginName(); 本地调用: 1.3.2.11

修改人员密码(按人员登录名)

根据人员登录名设置人员密码 方法:setPasswordByLoginName 参数:

参数 token loginName password 数据类型 String String String 说明 登录验证后获取的身份令牌。 人员登录名 人员密码 返回值:ServiceResponse 成功返回人员ID,否则返回-1。 示例: 远程调用: PersonServiceStub stub = new PersonServiceStub(); PersonServiceStub.EnableByLoginNameResponse resp = stub . setPasswordByLoginName (req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.PersonService; import com.seeyon.v3x.services organization.impl.PersontServiceImpl; … PersonService service = new PersontServiceImpl(); service. setPasswordByLoginName (token, loginName, password); req.setToken(ServiceUtil.getToken()); req.setParsonId (longinName); req.setPassword(password); PersonServiceStub.EnableByLoginName req = new PersonServiceStub.EnableByLoginName(); 本地调用:

1.3.3

部门管理

1.3.3.1 部门实体 (DepartmentInfoParam_All)

参数 accountId departmentName 名称 单位ID 部门路径名称 数据类型 long String[] 长度 备注 非空。 部门路径名称格式:根节点名称/....../父部门名称/部门名称。 不能包含字符|, 各级部门名称不能为空。 各级部门名称长度不能超过40。 兄弟节点的部门名称不能相同。 departmentNumber discursion dep_sort 部门编号 部门描述 排序号 String String String 20 1000 1-999999之间的整数 1.3.3.2 方法列表 名称 create update 说明 创建部门 按部门ID修改部门信息 updateByName delete deleteByName deleteByNames deleteByNameArray enable enableByName enableByNames enableByNameArray move 1.3.3.3 创建部门

按部门路径名称修改部门信息 按部门ID删除部门 按部门名称删除部门 按部门名称和父部门名称删除部门 按部门路径名称删除部门 按部门ID启用/禁用部门 按部门路径名称启用/禁用部门 按部门名称和父部门名称/禁用部门 按部门路径名称启用/禁用部门 按部门ID来移动部门 按照部门实体中的部门信息创建部门。按部门路径名称创建部门,如果未能找到符合条件的部门路径,则创建部门路径,并添加新部门。 方法:create 参数:

参数 token dept 数据类型 String DepartmentInfoParam_All 请参考部门实体定义 说明 登录验证后获取的身份令牌。 部门信息 返回值:ServiceResponse 成功返回部门ID,否则返回-1。 示例: 远程调用:

… DepartmentService service = new DepartmentServiceImpl(); DepartmentInfoParam_All dept = new DepartmentInfoParam_All(); DepartmentServiceStub.CreateResponse resp = stub.create(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.DepartmentService; import com.seeyon.v3x.services organization.impl. DepartmentServiceImpl; import com.seeyon.oainterface.organizationmgr.infoParamImpl. DepartmentServiceStub.Create req = new DepartmentServiceStub.Create(); DepartmentServiceStub.DepartmentInfoParam_All dept = new String[] deptNames = new String[2]; // [父部门名称,部门名称] deptNames[0] = \"部门1\"; deptNames[1] = \"部门11\"; // 必填 dept.setAccountId(ServiceUtil.getAccountId(\"单位1\")); dept.setDepartmentName(deptNames); // req.setToken(ServiceUtil.getToken()); req.setDepartment(dept); DepartmentServiceStub.DepartmentInfoParam_All(); 本地调用: DepartmentInfoParam_All; // 与远程调用相同 … service.create(token,dept); 1.3.3.4 更新部门(按部门ID)

按照部门实体中的部门信息修改指定ID的部门信息。 如果存在相同名称的兄弟部门则创建部门失败 方法:update 参数:

参数 token dept 数据类型 String DepartmentInfoParam_All 请参考部门实体定义 说明 登录验证后获取的身份令牌。 部门信息(部门ID必填)

返回值:ServiceResponse 成功返回部门ID,否则返回-1。 示例:

远程调用: DepartmentServiceStub stub = new DepartmentServiceStub(); … DepartmentService service = new DepartmentServiceImpl(); DepartmentInfoParam_All dept = new DepartmentInfoParam_All(); // 与远程调用相同 … service.update(token,dept); DepartmentServiceStub.UpdateResponse resp = stub.update(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.DepartmentService; import com.seeyon.v3x.services organization.impl. DepartmentServiceImpl; import com.seeyon.oainterface.organizationmgr.infoParamImpl.DepartmentInfoParam_All; req.setToken(ServiceUtil.getToken()); req.setDepartmentId(id); req.setDepartment(dept); // 要修改的信息 dept.setDep_sort(String.valueOf(3)); dept.setDiscursion(\"部门描述1\"); DepartmentServiceStub.Update req = new DepartmentServiceStub.Update(); DepartmentServiceStub.DepartmentInfoParam_All dept = new DepartmentServiceStub.DepartmentInfoParam_All(); 本地调用:

1.3.3.5 更新部门(按部门路径名称)

按照部门实体中的部门信息修改指定部门路径的部门信息。

如果存在相同名称的兄弟部门则创建部门失败 方法:updateByName 参数:

参数 token dept 数据类型 String DepartmentInfoParam_All 请参考部门实体定义 说明 登录验证后获取的身份令牌。 部门信息(部门路径名称必填) 返回值:ServiceResponse 成功返回部门ID,否则返回-1。 示例: 远程调用:

… DepartmentService service = new DepartmentServiceImpl(); DepartmentInfoParam_All dept = new DepartmentInfoParam_All(); // 与远程调用相同 … service.updateByName(token,dept); DepartmentServiceStub.UpdateByNameResponse resp = stub .updateByName(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.DepartmentService; import com.seeyon.v3x.services organization.impl.DepartmentServiceImpl; import com.seeyon.oainterface.organizationmgr.infoParamImpl.DepartmentInfoParam_All; req.setToken(ServiceUtil.getToken()); req.setDepartment(dept); DepartmentServiceStub stub = new DepartmentServiceStub(); DepartmentServiceStub.UpdateByName req = new DepartmentServiceStub.UpdateByName(); DepartmentServiceStub.DepartmentInfoParam_All dept = new // 必填 dept.setAccountId(ServiceUtil.getAccountId(\"单位1\")); dept.setDepartmentName(deptNames); // 要修改的信息 dept.setDep_sort(String.valueOf(2)); dept.setDiscursion(\"部门描述\"); DepartmentServiceStub.DepartmentInfoParam_All(); 本地调用: 1.3.3.6 删除部门(按部门ID) 按照部门ID删除部门信息。

如果部门下存在人员则删除部门失败。 如果部门存在关联组则删除部门失败。 方法:delete 参数: 参数 数据类型 说明 token departmentId String long 登录验证后获取的身份令牌。 部门ID 返回值:

ServiceResponse

成功返回部门ID,否则返回-1。 示例: 远程调用:

DepartmentServiceStub.DeleteResponse resp = stub.delete(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.DepartmentService; import com.seeyon.v3x.services organization.impl.DepartmentServiceImpl; … DepartmentService service = new DepartmentServiceImpl(); service.delete(token,departmentId); req.setToken(ServiceUtil.getToken()); req.setDepartmentId(id); DepartmentServiceStub stub = new DepartmentServiceStub(); DepartmentServiceStub.Delete req = new DepartmentServiceStub.Delete(); 本地调用: 1.3.3.7 删除部门(按部门名称)

按照部门名称删除本单位下的所有具有相同名称的部门信息。 如果部门中存在部门其下存在人员则删除部门失败。 如果部门中存在部门其下存在关联组则删除部门失败。 方法:deleteByName 参数: 参数 token accountName departmentName 数据类型 String String String 说明 登录验证后获取的身份令牌。 单位名称 部门名称 返回值:ServiceResponse 成功返回部门ID,否则返回-1。

1.3.3.8 删除部门(按部门名称及父部门名称)

按照部门名称删除本单位下的所有具有相同名称和父部门名称的部门信息。 如果部门中存在部门其下存在人员则删除部门失败。 如果部门中存在部门其下存在关联组则删除部门失败。 方法:deleteByNames 参数: 参数 token accountName departmentName parentdepartmentName 数据类型 String String String String 说明 登录验证后获取的身份令牌。 单位名称 部门名称 父部门名称

返回值:ServiceResponse 成功返回部门ID,否则返回-1。 1.3.3.9 删除部门(按部门路径名称) 按照部门路径名称删除本单位的部门信息。 如果部门下存在人员则删除部门失败。 如果部门下存在关联组则删除部门失败。 方法:deleteByNameArray 参数: 参数 token accountName departmentNames 数据类型 String String String[] 说明 登录验证后获取的身份令牌。 单位名称 部门路径名称 返回值:ServiceResponse 成功返回部门ID,否则返回-1。 示例: 远程调用:

DepartmentServiceStub.DeleteByNameArrayResponse resp = stub .deleteByNameArray(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.DepartmentService; import com.seeyon.v3x.services organization.impl. DepartmentServiceImpl; … DepartmentService service = new DepartmentServiceImpl(); service.deleteByNameArray(token,accountName,departmentNames); req.setToken(ServiceUtil.getToken()); req.setAccountName(accountName); req.setDepartmentName(deptNames); DepartmentServiceStub stub = new DepartmentServiceStub(); DepartmentServiceStub.DeleteByNameArray req = new DepartmentServiceStub.DeleteByNameArray(); 本地调用: 1.3.3.10

启用/禁用部门(按部门ID)

按照部门ID设置部门的启用状态。 如果部门下存在人员则停用部门失败。 方法:enable 参数: 参数 token departmentId enable 数据类型 String long boolean 说明 登录验证后获取的身份令牌。 部门ID 部门启用状态 true为启用 false为停用 返回值:ServiceResponse

成功返回部门ID,否则返回-1。 示例: 远程调用: DepartmentServiceStub.EnableResponse resp = stub.enable(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.DepartmentService; import com.seeyon.v3x.services organization.impl. DepartmentServiceImpl; … DepartmentService service = new DepartmentServiceImpl(); service.enable(token,departmentId,enabled); req.setToken(ServiceUtil.getToken()); req.setDepartmentId(id); req.setEnable(enabled); DepartmentServiceStub stub = new DepartmentServiceStub(); DepartmentServiceStub.Enable req = new DepartmentServiceStub.Enable(); 本地调用:

1.3.3.11 启用/禁用部门(按部门名称)

按照部门名称设置单位下部门的启用状态。

如果部门下存在人员则停用部门失败。 方法:enableByName 参数: 参数 token accountName departmentName enable 数据类型 String String String boolean 说明 登录验证后获取的身份令牌。 单位名称 部门名称 部门启用状态 true为启用 false为停用 返回值:ServiceResponse 成功返回部门ID,否则返回-1。 示例: 远程调用: DepartmentServiceStub stub = new DepartmentServiceStub(); DepartmentServiceStub.EnableByName req = new DepartmentServiceStub.EnableByName(); req.setToken(ServiceUtil.getToken()); req.setAccountName(accountName); req.setDepartmentName(name); req.setEnable(enabled); DepartmentServiceStub.EnableByNameResponse resp = stub .enableByName(req); ServiceResponse r = resp.get_return(); 本地调用:

import com.seeyon.v3x.services organization.DepartmentService; import com.seeyon.v3x.services organization.impl. DepartmentServiceImpl; … DepartmentService service = new DepartmentServiceImpl(); service.enableByName(token,accountName,department,enabled); 1.3.3.12

启用/禁用部门(按部门名称及父部门名称)

按照部门名称和父部门名称设置单位下部门的启用状态。 如果部门下存在人员则停用部门失败。 方法:enableByNames 参数: 参数 token accountName departmentName parentdepartmentName enable 数据类型 String String String String boolean 说明 登录验证后获取的身份令牌。 单位名称 部门名称 父部门名称 部门启用状态 true为启用 false为停用 返回值:ServiceResponse 成功返回部门ID,否则返回-1。 示例: 远程调用: DepartmentServiceStub.EnableByNamesResponse resp = stub .enableByNames(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.DepartmentService; import com.seeyon.v3x.services organization.impl. DepartmentServiceImpl; … DepartmentService service = new DepartmentServiceImpl(); ed); service.enableByNames(token,accountName,departmentname,parentDepartmentName,,enabl req.setToken(ServiceUtil.getToken()); req.setAccountName(accountName); req.setParentDepartmentName(parentName); req.setDepartmentName(name); req.setEnable(enabled); DepartmentServiceStub stub = new DepartmentServiceStub(); DepartmentServiceStub.EnableByNames req = new DepartmentServiceStub.EnableByNames(); 本地调用: 1.3.3.13

启用/禁用部门(按部门路径名称)

按照部门路径名称设置单位下部门的启用状态。 如果部门下存在人员则停用部门失败。

方法:enableByNameArray 参数: 参数 token accountName departmentNames enable 数据类型 String String String[] boolean 说明 登录验证后获取的身份令牌。 单位名称 部门路径名称 部门启用状态 true为启用 false为停用 返回值:ServiceResponse 成功返回部门ID,否则返回-1。 示例: 远程调用: DepartmentServiceStub.EnableByNameArrayResponse resp = stub .enableByNameArray(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.DepartmentService; import com.seeyon.v3x.services organization.impl. DepartmentServiceImpl; … DepartmentService service = new DepartmentServiceImpl(); service.enableByNameArray(token,accountName,departmentName,enabled); req.setToken(ServiceUtil.getToken()); req.setAccountName(\"单位1\"); req.setDepartmentName(names); req.setEnable(enabled); DepartmentServiceStub stub = new DepartmentServiceStub(); DepartmentServiceStub.EnableByNameArray req = new DepartmentServiceStub.EnableByNameArray(); 本地调用: 1.3.3.14

移动部门(按部门ID)

按照部门ID及目标父部门ID移动部门信息。 如果目标父部门未能找到,则移动失败。

如果目标父部门下存在相同名称的子部门,则移动失败 方法:move 参数: 参数 token departmentId targetDepartmentId 数据类型 String long long 说明 登录验证后获取的身份令牌。 部门ID 目标父部门ID 返回值:ServiceResponse 成功返回部门ID,否则返回-1。

1.3.3.15 移动部门(按部门名称) 按照部门路径名称及目标父部门路径名称在本单位下移动部门信息。 如果目标父部门未能找到,则移动失败。

如果目标父部门下存在相同名称的子部门,则移动失败 方法:moveByNameArray 参数: 参数 token accountName departmentNames targetDepartmentNames 数据类型 String String String[] String[] 说明 登录验证后获取的身份令牌。 单位名称 部门路径名称 目标父部门路径名称 返回值:ServiceResponse 成功返回部门ID,否则返回-1。 1.3.4

岗位管理

1.3.4.1 岗位实体 (OcupationInfoParam_A8_All)

参数 accountId ocupationName code type sortId departmentNames discursion 名称 单位ID 岗位名称 岗位编码 岗位类别 排序号 关联部门 岗位描述 数据类型 long String String long int List String 长度 40 20 1000 备注 非空。 非空。 默认为1L 默认为1 部门路径名称规范参照部门实体 1.3.4.2 方法列表 名称 create update updateByName delete deleteByName enable enableByName 1.3.4.3 创建岗位

按照岗位实体中的信息创建岗位。并建立部门和岗位之间的关联关系。 相同单位下不能存在重名岗位。 方法:create 参数: 参数 token 数据类型 String 说明 登录验证后获取的身份令牌。 说明 创建岗位 按岗位ID修改岗位信息 按岗位名称修改岗位信息 按岗位ID删除岗位 按岗位名称删除岗位 按岗位ID启用/禁用岗位 按岗位名称启用/禁用岗位 ocupation OcupationInfoParam_A8_All 请参考岗位实体定义 岗位信息

返回值:ServiceResponse 成功返回岗位ID,否则返回-1。 示例: 远程调用: … OcupationService service = new OcupationServiceImpl(); OcupationInfoParam_A8_All ocupation = new OcupationInfoParam_A8_All(); // 与远程调用相同 … service.create (token,ocupation); OcupationServiceStub.CreateResponse resp = stub.create(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OcupationtService; import com.seeyon.v3x.services organization.impl. OcupationServiceImpl; import OcupationServiceStub stub = new OcupationServiceStub(); OcupationServiceStub.Create req = new OcupationServiceStub.Create(); OcupationServiceStub.OcupationInfoParam_A8_All ocupation = new // 必填 ocupation.setAccountId(ServiceUtil.getAccountId(\"单位1\")); ocupation.setOcupationName(name); // req.setToken(ServiceUtil.getToken()); req.setOcupation(ocupation); OcupationServiceStub.OcupationInfoParam_A8_All(); 本地调用: com.seeyon.oainterface.impl.organizationmgr.extparam.ocupation.OcupationInfoParam_A8_All; 1.3.4.4 更新岗位(按岗位ID)

按照岗位ID更新岗位信息。并更新部门和岗位之间的关联关系。 相同单位下不能存在重名岗位。 方法:update 参数: 参数 token ocupationId ocupation 数据类型 String long OcupationInfoParam_A8_All 请参考岗位实体定义 说明 登录验证后获取的身份令牌。 岗位ID,必填 岗位信息 返回值:ServiceResponse

成功返回岗位ID,否则返回-1。 示例: 远程调用:

OcupationServiceStub stub = new OcupationServiceStub(); … OcupationServiceStub.Update req = new OcupationServiceStub.Update(); OcupationServiceStub.OcupationInfoParam_A8_All ocupation = new OcupationServiceStub.OcupationInfoParam_A8_All(); // 要修改的信息 ocupation.setCode(\"0001\"); ocupation.setOcupationName(\"I岗位1b\"); ocupation.setSortId(6); req.setToken(ServiceUtil.getToken()); req.setOcupationId(id); req.setOcupation(ocupation); OcupationServiceStub.UpdateResponse resp = stub.update(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OcupationtService; import com.seeyon.v3x.services organization.impl. OcupationServiceImpl; import 本地调用: com.seeyon.oainterface.impl.organizationmgr.extparam.ocupation.OcupationInfoParam_A8_All; OcupationService service = new OcupationServiceImpl(); OcupationInfoParam_A8_All ocupation = new OcupationInfoParam_A8_All(); // 与远程调用相同 … service.update (token,ocupationId,ocupation); 1.3.4.5 更新岗位(按岗位名称)

按照岗位名称更新岗位信息。并更新部门和岗位之间的关联关系。 相同单位下不能存在重名岗位。 方法:updateByName 参数: 参数 token ocupation 数据类型 String OcupationInfoParam_A8_All 请参考岗位实体定义 说明 登录验证后获取的身份令牌。 岗位信息(岗位名称必填) 返回值:ServiceResponse 成功返回岗位ID,否则返回-1。 示例: 远程调用:

OcupationServiceStub stub = new OcupationServiceStub(); OcupationServiceStub.UpdateByName req = new OcupationServiceStub.UpdateByName(); OcupationServiceStub.OcupationInfoParam_A8_All ocupation = new // 必填 ocupation.setAccountId(ServiceUtil.getAccountId(\"单位1\")); ocupation.setOcupationName(name); // 要修改的信息 OcupationServiceStub.OcupationInfoParam_A8_All(); … ocupation.setCode(\"0002\"); ocupation.setSortId(7); req.setToken(ServiceUtil.getToken()); req.setOcupation(ocupation); OcupationServiceStub.UpdateByNameResponse resp = stub .updateByName(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OcupationtService; import com.seeyon.v3x.services organization.impl. OcupationServiceImpl; import 本地调用: com.seeyon.oainterface.impl.organizationmgr.extparam.ocupation.OcupationInfoParam_A8_All; OcupationService service = new OcupationServiceImpl(); OcupationInfoParam_A8_All ocupation = new OcupationInfoParam_A8_All(); // 与远程调用相同 … service.updateByName (token,,ocupation); 1.3.4.6 删除岗位(按岗位ID) 按照岗位ID删除岗位信息。

如果岗位下存在人员则删除岗位失败。 方法:delete 参数: 参数 token ocupationId 数据类型 String long 说明 登录验证后获取的身份令牌。 岗位ID 返回值:ServiceResponse 成功返回岗位ID,否则返回-1。 示例: 远程调用:

OcupationServiceStub.DeleteResponse resp = stub.delete(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OcupationtService; import com.seeyon.v3x.services organization.impl. OcupationServiceImpl; … OcupationService service = new OcupationServiceImpl(); // 与远程调用相同 … req.setToken(ServiceUtil.getToken()); req.setOcupationId(id); OcupationServiceStub stub = new OcupationServiceStub(); OcupationServiceStub.Delete req = new OcupationServiceStub.Delete(); 本地调用:

service.delete (token,ocupationId); 1.3.4.7 删除岗位(按岗位名称) 按照岗位名称删除本单位下的岗位信息。 如果岗位下存在人员则删除岗位失败。 方法:deleteByName 参数: 参数 token accountName ocupationName 数据类型 String String String 说明 登录验证后获取的身份令牌。 单位名称 岗位名称

返回值:ServiceResponse 成功返回岗位ID,否则返回-1。 示例: 远程调用: OcupationServiceStub.DeleteByNameResponse resp = stub .deleteByName(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OcupationtService; import com.seeyon.v3x.services organization.impl. OcupationServiceImpl; … OcupationService service = new OcupationServiceImpl(); // 与远程调用相同 … service.deleteByName (token,accountName,ocupationName); req.setToken(ServiceUtil.getToken()); req.setAccountName(accountName); req.setOcupationName(name); OcupationServiceStub stub = new OcupationServiceStub(); OcupationServiceStub.DeleteByName req = new OcupationServiceStub.DeleteByName(); 本地调用:

1.3.4.8 启用/禁用岗位(按岗位ID) 按照岗位ID设置岗位的启用状态。 如果岗位下存在人员则停用岗位失败。 方法:enable 参数: 参数 token ocupationId enable 数据类型 String long boolean 说明 登录验证后获取的身份令牌。 岗位ID 岗位启用状态 true为启用 false为停用 返回值:ServiceResponse 成功返回岗位ID,否则返回-1。

示例: 远程调用: OcupationServiceStub.EnableResponse resp = stub.enable(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OcupationtService; import com.seeyon.v3x.services organization.impl. OcupationServiceImpl; … OcupationService service = new OcupationServiceImpl(); // 与远程调用相同 … service.enable (token,ocupationId,enabled); req.setToken(ServiceUtil.getToken()); req.setOcupationId(id); req.setEnable(enabled); OcupationServiceStub stub = new OcupationServiceStub(); OcupationServiceStub.Enable req = new OcupationServiceStub.Enable(); 本地调用: 1.3.4.9 启用/禁用岗位(按岗位名称) 按照岗位名称设置单位下岗位的启用状态。 如果岗位下存在人员则停用岗位失败。 方法:enableByName 参数: 参数 token accountName ocupationName enable 数据类型 String String String boolean 说明 登录验证后获取的身份令牌。 单位名称 岗位名称 岗位启用状态 true为启用 false为停用 返回值:ServiceResponse 成功返回岗位ID,否则返回-1。 示例: 远程调用: OcupationServiceStub.EnableByNameResponse resp = stub .enableByName(req); req.setToken(ServiceUtil.getToken()); req.setAccountName(accountName); req.setOcupationName(name); req.setEnable(enabled); OcupationServiceStub stub = new OcupationServiceStub(); OcupationServiceStub.EnableByName req = new OcupationServiceStub.EnableByName(); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OcupationtService; import com.seeyon.v3x.services organization.impl. OcupationServiceImpl; … OcupationService service = new OcupationServiceImpl(); // 与远程调用相同 … service.enableByName (token,accountName,ocupationName,enabled); 本地调用: 1.3.5 职务级别管理

1.3.5.1 职务级别实体 (OtypeInfoParam_A8_All)

参数 accountId name code levelId 名称 单位ID 职务级别名称 职务级别编码 职务级别序号 数据类型 long String String int 长度 40 20 备注 非空。 非空。 职务级别高低的标志 级别越高,序号越小 默认为1 parentName discursion 父级别名称 职务级别描述 String String 40 1000 1.3.5.2 方法列表 名称 create update updateByName delete deleteByName enable enableByName 1.3.5.3 创建职务级别

按照职务级别实体中的信息创建职务级别。 相同单位下不能存在重名职务级别。 方法:create 参数: 参数 token otype 说明 创建职务级别 按职务级别ID修改职务级别信息 按职务级别名称修改职务级别信息 按职务级别ID删除职务级别 按职务级别名称删除职务级别 按职务级别ID启用/禁用职务级别 按职务级别名称启用/禁用职务级别 数据类型 string OtypeInfoParam_A8_All 请参考职务级别实体定义 说明 登录验证后获取的身份令牌。 职务级别信息

返回值:ServiceResponse

成功返回职务级别ID,否则返回-1。

示例: 远程调用: OtypeServiceStub.CreateResponse resp = stub.create(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OTypeService; import com.seeyon.v3x.services organization.impl.OTypeServiceImpl; import com.seeyon.oainterface.impl.organizationmgr.extparam.otype.OtypeInfoParam_A8_All; … OTypeService service = new OTypeServiceImpl(); OtypeInfoParam_A8_All otype = new OtypeInfoParam_A8_All; // 与远程调用相同 … service.create (token,otype); OtypeServiceStub stub = new OtypeServiceStub(); OtypeServiceStub.Create req = new OtypeServiceStub.Create(); OtypeServiceStub.OtypeInfoParam_A8_All otype = new // 必填 otype.setAccountId(ServiceUtil.getAccountId(\"单位1\")); otype.setName(name); // req.setToken(ServiceUtil.getToken()); req.setOtype(otype); OtypeServiceStub.OtypeInfoParam_A8_All(); 本地调用: 1.3.5.4 更新职务级别(按职务级别ID) 按照职务级别ID更新职务级别信息。 相同单位下不能存在重名职务级别。 方法:update 参数: 参数 token otypeId otype 数据类型 String long OtypeInfoParam_A8_All 请参考职务级别实体定义 说明 登录验证后获取的身份令牌。 职务级别ID,必填 职务级别信息

返回值:ServiceResponse

成功返回职务级别ID,否则返回-1。 示例: 远程调用: // 要修改的信息 Otype.setCode(\"0001\"); OtypeServiceStub stub = new OtypeServiceStub(); OtypeServiceStub.Update req = new OtypeServiceStub.Update(); OtypeServiceStub.OtypeInfoParam_A8_All Otype = new OtypeServiceStub.OtypeInfoParam_A8_All(); Otype.setName(\"I职务级别1b\"); req.setToken(ServiceUtil.getToken()); req.setOtypeId(id); req.setOtype(Otype); OtypeServiceStub.UpdateResponse resp = stub.update(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OTypeService; import com.seeyon.v3x.services organization.impl.OTypeServiceImpl; import com.seeyon.oainterface.impl.organizationmgr.extparam.otype.OtypeInfoParam_A8_All; … OTypeService service = new OTypeServiceImpl(); OtypeInfoParam_A8_All otype = new OtypeInfoParam_A8_All; // 与远程调用相同 … service.update (token,otypeId,otype); 本地调用: 1.3.5.5 更新职务级别(按职务级别名称) 按照职务级别名称更新职务级别信息。 相同单位下不能存在重名职务级别。 方法:updateByName 参数: 参数 token otype 数据类型 String OtypeInfoParam_A8_All 请参考职务级别实体定义 说明 登录验证后获取的身份令牌。 职务级别信息(职务级别名称必填)

返回值:

ServiceResponse

成功返回职务级别ID,否则返回-1。 示例: 远程调用:

req.setToken(ServiceUtil.getToken()); req.setOtype(otype); OtypeServiceStub stub = new OtypeServiceStub(); OtypeServiceStub.UpdateByName req = new OtypeServiceStub.UpdateByName(); OtypeServiceStub.OtypeInfoParam_A8_All otype = new // 必填 otype.setAccountId(ServiceUtil.getAccountId(\"单位1\")); otype.setName(name); // 要修改的信息 otype.setCode(\"0002\"); otype.setDiscursion(\"描述\"); OtypeServiceStub.OtypeInfoParam_A8_All(); OtypeServiceStub.UpdateByNameResponse resp = stub.updateByName(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OTypeService; import com.seeyon.v3x.services organization.impl.OTypeServiceImpl; import com.seeyon.oainterface.impl.organizationmgr.extparam.otype.OtypeInfoParam_A8_All; … OTypeService service = new OTypeServiceImpl(); OtypeInfoParam_A8_All otype = new OtypeInfoParam_A8_All; // 与远程调用相同 … service.updateByName (token,otype); 本地调用: 1.3.5.6 删除职务级别(按职务级别ID) 按照职务级别ID删除职务级别信息。

如果职务级别下存在人员则删除职务级别失败。 方法:delete 参数:

参数 token otypeId 数据类型 String long 说明 登录验证后获取的身份令牌。 职务级别ID

返回值:

ServiceResponse

成功返回职务级别ID,否则返回-1。 示例: 远程调用: OtypeServiceStub.DeleteResponse resp = stub.delete(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OTypeService; import com.seeyon.v3x.services organization.impl.OTypeServiceImpl; … OTypeService service = new OTypeServiceImpl(); // 与远程调用相同 … service.delete (token,otypeId); req.setToken(ServiceUtil.getToken()); req.setOtypeId(id); OtypeServiceStub stub = new OtypeServiceStub(); OtypeServiceStub.Delete req = new OtypeServiceStub.Delete(); 本地调用: 1.3.5.7 删除职务级别(按职务级别名称) 按照职务级别名称删除本单位下的职务级别信息。

如果职务级别下存在人员则删除职务级别失败。 方法:deleteByName 参数:

参数 token accountName otypeName 数据类型 String String String 说明 登录验证后获取的身份令牌。 单位名称 职务级别名称

返回值:

ServiceResponse

成功返回职务级别ID,否则返回-1。 示例: 远程调用: OtypeServiceStub.DeleteByNameResponse resp = stub.deleteByName(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OTypeService; import com.seeyon.v3x.services organization.impl.OTypeServiceImpl; … OTypeService service = new OTypeServiceImpl(); // 与远程调用相同 … service.deleteByName (token,accountName,otypeName); req.setToken(ServiceUtil.getToken()); req.setAccountName(accountName); req.setOtypeName(name); OtypeServiceStub stub = new OtypeServiceStub(); OtypeServiceStub.DeleteByName req = new OtypeServiceStub.DeleteByName(); 本地调用: 1.3.5.8 启用/禁用职务级别(按职务级别ID) 按照职务级别ID设置职务级别的启用状态。 如果职务级别下存在人员则停用职务级别失败。 方法:enable 参数:

参数 token otypeId enable 数据类型 String long boolean 说明 登录验证后获取的身份令牌。 职务级别ID 职务级别启用状态 true为启用 false为停用

返回值:

ServiceResponse

成功返回职务级别ID,否则返回-1。 示例:

远程调用:

OtypeServiceStub.EnableResponse resp = stub.enable(req); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OTypeService; import com.seeyon.v3x.services organization.impl.OTypeServiceImpl; … OTypeService service = new OTypeServiceImpl(); // 与远程调用相同 … service.enable (token,otypeId,enabled); req.setToken(ServiceUtil.getToken()); req.setOtypeId(id); req.setEnable(enabled); OtypeServiceStub stub = new OtypeServiceStub(); OtypeServiceStub.Enable req = new OtypeServiceStub.Enable(); 本地调用: 1.3.5.9 启用/禁用职务级别(按职务级别名称) 按照职务级别名称设置单位下职务级别的启用状态。 如果职务级别下存在人员则停用职务级别失败。 方法:enableByName 参数: 参数 token accountName otypeName enable 数据类型 String String String boolean 说明 登录验证后获取的身份令牌。 单位名称 职务级别名称 职务级别启用状态 true为启用 false为停用 返回值:

ServiceResponse

成功返回职务级别ID,否则返回-1。 示例: OtypeServiceStub.EnableByNameResponse resp = stub.enableByName(req); req.setToken(ServiceUtil.getToken()); req.setAccountName(accountName); req.setOtypeName(name); req.setEnable(enabled); OtypeServiceStub stub = new OtypeServiceStub(); OtypeServiceStub.EnableByName req = new OtypeServiceStub.EnableByName(); ServiceResponse r = resp.get_return(); import com.seeyon.v3x.services organization.OTypeService; import com.seeyon.v3x.services organization.impl.OTypeServiceImpl; … OTypeService service = new OTypeServiceImpl(); // 与远程调用相同 … service.enabledByName (token,accountName,otypeName,enabled); 本地调用: 1.4 组织模型数据管理

组织模型数据管理服务支持用友NC-OA与外部系统组织模型的数据交换。

按规定的数据交换标准(XML),外部系统可以完成对用友NC-OA组织模型的初始化同步,并可结合组织模型管理服务实施更新用友NC-OA组织模型。 1.4.1 方法列表 名称 exportPerson exportDepartment exportOcupation exportOType exportData importData 1.4.2 导出人员信息

将指定单位下所有人员导出为XML格式。 方法:exportPerson 参数:

参数 token accountName 数据类型 String String 说明 登录验证后获取的身份令牌。 单位名称 说明 导出人员信息 导出部门信息 导出岗位信息 导出职务级别信息 导出组织模型信息 导入组织模型数据

返回值:String

成功返回XML,否则抛ServiceException。 示例: 远程调用:

OrganizationDataServiceStub stub = new OrganizationDataServiceStub(); OrganizationDataServiceStub.ExportPerson req = new req.setToken(ServiceUtil.getToken()); req.setAccountName(\"单位1\"); OrganizationDataServiceStub.ExportPersonResponse resp = stub .exportPerson(req); String xml = resp.get_return(); OrganizationDataServiceStub.ExportPerson(); 本地调用:

import com.seeyon.v3x.services organization.OrganizationDataService; import com.seeyon.v3x.services organization.impl. OrganizationDataServiceImpl; … OrganizationDataService service = new OrganizationDataServiceImpl(); String xml = service.exportPerson (token,accountName); 导出的XML:

123456

总经理

部门1 部门3

isnull=\"false\">testservice7

部门1_总经理 部门2_部门经理

总经理

6

测试

A1

123456

总经理

部门1

C 2

A1

length=\"0\"/>

1.4.3 导出部门信息

将指定单位下所有部门导出为XML格式。 方法:exportDepartment 参数: 参数 token accountName 数据类型 String String 说明 登录验证后获取的身份令牌。 单位名称

返回值:String

成功返回XML,否则抛ServiceException。 示例:

远程调用:

OrganizationDataServiceStub stub = new OrganizationDataServiceStub(); OrganizationDataServiceStub.ExportDepartment req = new req.setToken(ServiceUtil.getToken()); req.setAccountName(\"单位1\"); OrganizationDataServiceStub.ExportDepartmentResponse resp = stub .exportDepartment(req); String xml = resp.get_return(); import com.seeyon.v3x.services organization.OrganizationDataService; import com.seeyon.v3x.services organization.impl. OrganizationDataServiceImpl; … OrganizationDataService service = new OrganizationDataServiceImpl(); String xml = service.exportDepartment (token,accountName); OrganizationDataServiceStub.ExportDepartment(); 本地调用: 导出的XML:

9

管理部门

10

支持部门

17

管理部门 人力资源部

18

管理部门 保卫部

19

管理部门 审计部

1.4.4 导出岗位信息

将指定单位下所有岗位导出为XML格式。 方法:exportOcupation 参数:

参数 token accountName 数据类型 String String 说明 登录验证后获取的身份令牌。 单位名称 返回值:String

成功返回XML,否则抛ServiceException。 示例: 远程调用: OrganizationDataServiceStub stub = new OrganizationDataServiceStub(); OrganizationDataServiceStub.ExportOcupation req = new req.setToken(ServiceUtil.getToken()); req.setAccountName(\"单位1\"); OrganizationDataServiceStub.ExportOcupationResponse resp = stub .exportOcupation(req); String xml = resp.get_return(); import com.seeyon.v3x.services organization.OrganizationDataService; import com.seeyon.v3x.services organization.impl. OrganizationDataServiceImpl; … OrganizationDataServiceStub.ExportOcupation(); 本地调用: OrganizationDataService service = new OrganizationDataServiceImpl(); String xml = service.exportOcupation(token,accountName); 导出的XML:

处室负责人

总经济师

总经理

length=\"0\"/>

length=\"0\"/>

length=\"0\"/>

技术工程师 办公室主任 length=\"0\"/> length=\"0\"/> 1.4.5

导出职务级别信息

将指定单位下所有职务级别导出为XML格式。 方法:exportOType 参数:

参数 token accountName 数据类型 String String 说明 登录验证后获取的身份令牌。 单位名称

返回值:String

成功返回XML,否则抛ServiceException。 示例: 远程调用:

OrganizationDataServiceStub stub = new OrganizationDataServiceStub(); OrganizationDataServiceStub.ExportOType req = new req.setToken(ServiceUtil.getToken()); req.setAccountName(\"单位1\"); OrganizationDataServiceStub.ExportOTypeResponse resp = stub .exportOType(req); output(xml); String xml = resp.get_return(); OrganizationDataServiceStub.ExportOType(); 本地调用: import com.seeyon.v3x.services organization.OrganizationDataService; import com.seeyon.v3x.services organization.impl. OrganizationDataServiceImpl; … OrganizationDataService service = new OrganizationDataServiceImpl(); String xml = service.exporOType(token,accountName); 导出的XML:

总经理

副总经理

C

部门负责人

1.4.6

导出组织模型信息

将指定单位下所有部门、人员、岗位、职务级别导出为XML格式。 方法:exportData 参数:

参数 token accountName 数据类型 String String 说明 登录验证后获取的身份令牌。 单位名称 返回值: String

成功返回XML,否则抛ServiceException。 示例: 远程调用:

OrganizationDataServiceStub stub = new OrganizationDataServiceStub(); OrganizationDataServiceStub.ExportData req = new OrganizationDataServiceStub.ExportData(); req.setToken(ServiceUtil.getToken()); req.setAccountName(\"单位1\"); OrganizationDataServiceStub.ExportDataResponse resp = stub .exportData(req); String xml = resp.get_return(); import com.seeyon.v3x.services organization.OrganizationDataService; import com.seeyon.v3x.services organization.impl. OrganizationDataServiceImpl; … OrganizationDataService service = new OrganizationDataServiceImpl(); String xml = service.exportData (token,accountName); 本地调用: 导出的XML: 1.4.7

导入组织模型信息

导入组织模型XML数据到指定单位。 方法:importData 参数: 参数 数据类型 说明 token accountName xml String String String 登录验证后获取的身份令牌。 单位名称 组织模型信息xml格式 返回值:void

失败抛ServiceException。 示例: 远程调用:

OrganizationDataServiceStub stub = new OrganizationDataServiceStub(); OrganizationDataServiceStub.ImportData req = new OrganizationDataServiceStub.ImportData(); req.setToken(ServiceUtil.getToken()); req.setAccountName(\"单位1\"); req.setXml(xml); stub.importData(req); import com.seeyon.v3x.services organization.OrganizationDataService; import com.seeyon.v3x.services organization.impl. OrganizationDataServiceImpl; … OrganizationDataService service = new OrganizationDataServiceImpl(); String xml = service.importData (token,accountName); 本地调用:

1.5 文档导出

服务名称:documentService WSDL:

http://{host}:{port}/seeyon/services/documentService?wsdl 1.5.1 方法列表 名称 exportFlow exportEdoc exportNews exportBulletin exportResearch exportBbs exportOfflineEdocModel updateEdocState importEdoc 1.5.2 文档导出公共实体

说明 导出协同信息 导出公文信息 导出新闻信息 导出公告信息 导出调查信息 导入讨论信息 导出可离线查看的公文单(只支持本地调用) 回写公文状态 导入公文信息 1.5.2.1 人员实体(PersonExport)

参数 id 名称 人员ID 数据类型 long 长度 备注 name 人员名称 String 1.5.2.2 部门实体(DepartmentExport)

参数 id depName 名称 部门ID 部门名称 数据类型 long String 长度 备注 1.5.2.3 岗位实体(OcupationExport)

参数 id ocuName 名称 岗位ID 岗位名称 数据类型 long String 长度 备注 1.5.2.4 职务级别实体(OTypeExport)

参数 id oTypeName 名称 职务级别ID 职务级别名称 数据类型 long String 长度 备注 1.5.2.5 附件实体(AttachmentExport)

参数 id newsTypeName 名称 附件ID 附件名称 数据类型 long String 长度 备注 1.5.2.6 正文实体(TextExport)

参数 textType 名称 正文类型 数据类型 int 长度 备注 1=HTML类型的正文 2= Word、Excel、Wps、et类型的正文 3=表单正文 content 正文 TextHtmlExport 参见HTML正文实体 TextAttarchmentExport 参见附件正文实体 textType=2时 textType=1时 FormExport 参见表单实体 textType=3时 1.5.2.7 HTML正文实体(TextHtmlExport)

参数 textType content 名称 正文类型 正文 数据类型 int String 长度 备注 值恒为1 1.5.2.8 附件正文实体(TextAttachmentExport)

参数 textType tpe 名称 正文类型 附件类型 数据类型 int int 长度 备注 值恒为2 1=DOC 2=XSL 3=WPS 4=ET id filesuffix absolutepath downloadpath 附件ID 文件名 绝对路径 下载路径 long String String string 附件在用友NC-OA文件库中的唯一id 1.5.3 协同导出

导出指定ID的协同为XML。 方法:exportFlow 参数:

参数 tokenId flowId 数据类型 string long 说明 登录验证后获取的身份令牌。 要导出协同ID(SummaryId)。 返回值:String

成功返回协同的XML(请参考协同实体定义),否则抛ServiceException。 示例: 远程调用:

DocumentServiceStub stub = new DocumentServiceStub(); DocumentServiceStub.ExportFlow req = new DocumentServiceStub.ExportFlow(); req.setToken(ServiceUtil.getToken()); req.setFlowId(-6657547820571145458l); DocumentServiceStub.ExportFlowResponse resp = stub.exportFlow(req); String xml = resp.get_return(); import com.seeyon.v3x.services.document.DocumentService; import com.seeyon.v3x.services.document.impl.DocumentServiceImpl; … DocumentService service = new DocumentServiceImpl (); String xml = service.exportFlow (token,flowId); 本地调用:

1.5.3.1 协同实体(FlowExport)

参数 appendixList 名称 正文补充 数据类型 AdminicularExport List 参见正文补充实体 attachmentList flowContent flowCreatePerson flowCreateTime flowFolder flowId flowNodeList 附件列表 协同正文 发起人 发起时间 预归档 协同ID 流程节点列表 AttachmentExport List 参见附件实体 TextExport 参见正文实体 PersonExport 参见人员实体 String FolderExport 参见协同预归档实体 long FlowNodeExport List 参见协同节点实体 flowState flowProject flowTitle importantLevel 流程状态 关联项目 协同标题 重要程度 long 参见流程状态常量 ProjectExport 参见关联项目实体 String int 协同的名称 1=一般 2=重要 3=非常重要 notifyTime relInfoList 处理期限 关联协同 long RelFlowExport List 参见关联协同实体 以小时为单位 流程运转状态 格式YYYY-MM-DD hh:mm:ss 保存的文件夹 发起协同的人员 长度 备注 对协同正文的补充说明。 1.5.3.2 协同正文补充实体(AdminicularExport)

参数 名称 数据类型 长度 备注 id content createTime attachmentList 正文补充ID 内容 创建时间 附件列表 long String String AttachmentExport List 参见附件实体 正文补充内容 1.5.3.3 协同预归档实体(FolderExport)

参数 folderId folderName 名称 归档ID 文件夹路径 数据类型 long String 长度 备注 文件夹的访问路径 (文件夹必须是全路径) 1.5.3.4 协同节点实体(FlowNodeExport)

参数 flowNodeId parentNodeId previousNodes nextNodes flowNodeUrgent flowNodeType 名称 流程节点ID 父节点ID 前置节点 后续节点 催办次数 节点类型 数据类型 long long long[] long[] int int 长度 备注 前置节点的ID列表 后续节点的ID列表 0=人 1=部门 2=组 3=职务级别 4=岗位 5=SQL自定义 6=相对角色 7=加签 8=汇签 9=文档授权 flowNodeFlag 处理标志 int 0=未处理 1=正常处理 2=非正常处理(取消、回退、 取回、竞争执行结束、终止) 3=处理中(产生了待办) nodeMemberList 节点成员 NodeMemberExport List 参见协同人员实体 处理该节点的所有人员

1.5.3.5 协同人员实体(NodeMemberExport)

参数 nodeMemberId nodePermission nodeTacticsList 名称 节点成员ID 节点权限 节点策略 数据类型 long String NodeTacticsExport List 参见协同节点策略实体 nodeMemberPerson 处理人员 PersonExport 参见人员实体 可以处理该节点的人员 长度 备注 1.5.3.6 协同节点策略实体(NodeTacticsExport)

参数 nodeTacticsDiscription nodeTacticsAttitude nodeTacticsTime nodeTacticsInfo nodeTacticsHide docBbsList attachmentList 名称 节点策略 策略态度 处理时间 策略信息 策略信息隐藏 回复信息 策略附件 数据类型 long String String String int DocBbsExport List AttachmentExport List 参见附件实体 策略的附件 长度 备注 节点权限 处理时间 策略信息 1=显示 0=隐藏 回复信息 1.5.3.7 协同回复信息实体(DocBbsExport)

参数 docBbsId docBbsPerson docBbsContent 名称 讨论信息ID 评论人 评论信息 数据类型 long PersonExport 参见人员实体 String 评论信息 长度 备注 讨论信息ID 评论人 1.5.3.8 协同关联协同实体(RelFlowExport)

参数 名称 数据类型 长度 备注 relFlowId relFlowTitle 关联协同ID 关联协同标题 long String 关联协同标题 1.5.3.9 协同关联项目实体(ProjectExport)

参数 projectId projectName 名称 项目ID 项目名称 数据类型 long String 长度 备注 项目ID 项目名称 1.5.4 公文导出

导出指定ID的公文为XML。 方法:exportEdoc 参数: 参数 tokenId documentId 数据类型 String long 说明 登录验证后获取的身份令牌。 要导出公文的ID。 返回值:String

成功返回公文的XML(请参考公文实体定义),否则抛ServiceException。 示例: 远程调用:

DocumentServiceStub stub = new DocumentServiceStub(); DocumentServiceStub.ExportEdoc req = new DocumentServiceStub.ExportEdoc(); req.setToken(ServiceUtil.getToken()); req.setDocumentId(-6657547820571145458l); DocumentServiceStub.ExportEdocResponse resp = stub.exportEdoc(req); String xml = resp.get_return(); import com.seeyon.v3x.services.document. impl.DocumentManager; import com.seeyon.v3x.services.document.DocumentFactory; … DocumentFactory service = DocumentManager.getInstance(); DocumentExport export = service. exportEdoc (documentId); 本地调用:

1.5.4.1 公文实体(DocumentExport)

参数 documentId docTitle 名称 公文ID 公文标题 数据类型 int String 长度 备注 公文的标题 docCreateTime notifyTime docCreatePerson docContent 创建时间 有效时限 建文人 正文 String int PersonExport 参见人员实体 TextExport 参见正文实体 公文单的创建时间 必须在时限内处理节点 公文单的创建者 导入公文时必须填写 公文单的正文 有3种类型:flowContent_html (TextHtmlExport)、flowContent_att (TextAttachmentExport)flowContent_form (FormExport) 、appendixList 补充说明 AdminicularExport List 参见正文补充实体 对正文的补充说明 attachmentList flowNodeList 附件 公文流程 AttachmentExport List 参见附件实体 FlowNodeExport List 参见协同节点实体 公文单的附属文件 该公文单的所有流程节点 formElementList 公文单成员 DocumentFormExport List 参见公文单实体 公文单上的成员 1.5.4.2 公文单实体(DocumentFormExport)

参数 id elementName attributeName dataType value 名称 公文单ID 成员名称 属性名称 数据类型 值 数据类型 String String String String String 长度 备注 导出的公文单包括

Id elementName attributeName dataType value 公文单ID 文件标题 公文种类 公文类型 formId subject docType edocType long String String int 行文类型 公文文号 内部文号 文件密级 紧急程度 建文人 保密期限 主送单位 sendType docMark serialNo secretLevel urgentLevel createPerson keepPeriod sendTo String String String String String String int 公文导入,如果多个单位,需要英文逗号分隔 String 主送单位id sendToId String 公文导入,如果多个单位,需要英文逗号分隔 抄送单位 抄报单位 发文单位 签发人 签发日期 印发单位 印发份数 主题词 打印人 自定义公文单元素 copyTo reportTo sendUnit issuer signingDate printUnit copies keywords printer date1-20 darchar1-20 integer1-20 decimal1-20 list1-20 text1-10 String String String String Date String int String String Date String Integer Double String String 导入公文时必须填写 1.5.4.3 导出可离线查看的公文单

用于文档交换归档公文单,不提供Webservice,只支持本地调用 方法:exportOfflineEdocModel 参数:

参数 Id 数据类型 long 说明 公文id 返回:String[]

成功返回公文XML和公文XSL的数组,通过XSLT可以将返回的XML和XSL转为可离线查看的HTML。 否则抛出SericeException import com.seeyon.v3x.services.docuemnt.DocumentFactory; import com.seeyon.v3x.services.document.impl.DocumentManager; … DocumentFactory factory = DocumentManager.getInstance(); String[] result = factory.exportOfflineEdocModel (id); String xml = result[0]; String xsl = result[1]; 导出的XML示例:

发文 公报 上行文 发文00000010 普通 普通 无限期 康小小 用友集团 康小小 2009-12-14 用友软件 0

XSL略,经过XSLT转换后得出的HTML显示如下:

1.5.5 公文导入

导入指定xml格式的公文, 转入待签收列表 方法:importEdoc 参数: 参数 token xml 数据类型 String String 说明 登录验证后获取的身份令牌。 要导入公文的xml数据。 (导入格式请参考公文导出的xml格式) 返回值:long

成功返回公文的id,否则抛ServiceException。 示例:

远程调用:

DocumentExport export= new DocumentExport(); EdocImporter importer=new EdocImporter(); long id =importer. importEdocDocument(export); DocumentServiceStub stub = new DocumentServiceStub(); DocumentServiceStub. ImportEdoc req = new DocumentServiceStub. ImportEdoc(); req.setToken(ServiceUtil.getToken()); req.setXml(“公文xml”); DocumentServiceStub.ImportEdocResponse resp = stub.ImportEdoc(req); long id = resp.get_return(); import com.seeyon.oainterface.impl.exportdata.EdocImporter; 本地调用:

1.5.6 回写公文状态

用于公文交换发送以后更新状态为已发送,外部系统签收公文后回写状态为已签收 方法:updateEdocState 参数: 参数 token edocSendId accountId accountName state 数据类型 String long String String int 说明 登录验证后获取的身份令牌。 公文交换待发送公文实体的id 公文接收单位的id(多个用,号分隔) 公文接收单位的名称(多个用,号分隔) 为1更新状态为已发送 为2更新状态为已签收(第三方系统已签收) 返回值:int

成功返回1,否则抛ServiceException。 示例: 远程调用:

DocumentServiceStub stub = new DocumentServiceStub(); DocumentServiceStub.UpdateEdocState req = new DocumentServiceStub.UpdateEdocState(); req.setToken(ServiceUtil.getToken()); req.setedocSendId(123456); req.setAccountId(12,34,56); req.setAccountName(“单位1”,”单位2”,”单位3”); req.setState(0); DocumentServiceStub.UpdateEdocStateResponse resp = stub.UpdateEdocState (req); int state = resp.get_return(); import com.seeyon.v3x.services.document. impl.DocumentManager; import com.seeyon.v3x.services.document.DocumentFactory; … DocumentFactory service = DocumentManager.getInstance(); service. updateEdocState(1234,”12,34,”,”单位1,单位2”,0); 本地调用:

1.5.7 新闻导出

导出指定ID的新闻为XML。 方法:exportNews 参数: 参数 token ticket@1 newsId 数据类型 String String long 说明 登录验证后获取的身份令牌。 sso成功到用友NC-OA后获取的身份令牌,由外部系统产生。 要导出新闻的ID。 返回值:String

成功返回新闻的XML(请参考新闻实体定义),否则抛ServiceException。 示例: 远程调用: DocumentServiceStub stub = new DocumentServiceStub(); DocumentServiceStub.ExportNews req = new DocumentServiceStub.ExportNews(); req.setToken(ServiceUtil.getToken()); req.setTicket(“111111111”); req.setNewsId(-6657547820571145458l); DocumentServiceStub.ExportNewsResponse resp = stub.exportNews(req); String xml = resp.get_return(); import com.seeyon.v3x.services.document.DocumentService; import com.seeyon.v3x.services.document.impl.DocumentServiceImpl; … DocumentService service = new DocumentServiceImpl (); String xml = service.exportNews (token,ticket,newsId); 本地调用: 1.5.7.1 新闻实体(NewsExport)

参数 id title newsType creater createTime clickNum attachments 名称 新闻ID 标题 类型 发布者 发布时间 浏览次数 附件 数据类型 long String NewsTypeExport 参见新闻类型实体 PersonExport 参见人员实体 String int AttachmentExport List 新闻的发布时间 新闻被浏览次数 新闻附件集合 新闻发布对象 长度 备注 新闻ID 新闻标题 新闻类型对象 参见附件实体 content 正文 TextExport 参见正文实体 正文对象 1.5.7.2 新闻类型实体(NewsTypeExport)

参数 id newsTypeName 名称 类型ID 类型名称 数据类型 long String 长度 备注 1.5.8 公告导出

导出指定ID的公告为XML。 方法:exportBulletin 参数: 参数 tokenId ticket@2 bulletintId 数据类型 String String long 说明 登录验证后获取的身份令牌。 sso成功到用友NC-OA后获取的身份令牌,由外部系统产生。 要导出公告的ID。 返回值:String

成功返回公告的XML(请参考公告实体定义),否则抛ServiceException。 示例: 远程调用: DocumentServiceStub stub = new DocumentServiceStub(); DocumentServiceStub.ExportBulletin req = new DocumentServiceStub.ExportBulletin(); req.setToken(ServiceUtil.getToken()); req.setTicket(“111111111”); req.setBulltinId(-6657547820571145458l); DocumentServiceStub.ExportBulletinResponse resp = stub.exportBulletin(req); String xml = resp.get_return(); import com.seeyon.v3x.services.document.DocumentService; import com.seeyon.v3x.services.document.impl.DocumentServiceImpl; … DocumentService service = new DocumentServiceImpl (); String xml = service.exportBulletin (token,ticket,bulletinId); 本地调用: 1.5.8.1 公告实体(BulletinExport)

参数 名称 数据类型 长度 备注 id title bulletinType receivers 公告id 标题 公告类型 接收者 long String BulletinTypeExport 参见公告类型实体 BulletinReceiverExport List 参见接收者实体 公告的id 公告标题 公告类型 公告接收对象的集合 creater createTime clickNum attachments 发布人 发布时间 浏览次数 附件集合 PersonExport 参见人员实体 String int AttachmentExport List 参见附件实体 公告发布人 公告的发布时间 公告被浏览的次数 用户上传的附件集合 content clickNum linkURL 公告内容 浏览次数 公告详细信息页链接 TextExport 参见正文实体 int String 公告内容对象 公告被浏览的次数 需要sso成功后才可以打开此页面 1.5.8.2 公告类型实体(BulletinTypeExport)

参数 id bulletinTypeName 名称 类型ID 类型名称 数据类型 long String 长度 备注 公告类型的ID 公告类型名称 1.5.8.3 公告接收者实体(BulletinReceiverExport)

参数 id receiverType 名称 接收者ID 接收者类型 数据类型 long int 长度 备注 接收对象ID 0 = 人 1 = 部门 2 = 组 3 = 职务级别 4 = 岗位 5 = 全部人员 receiverName 接收者名称 String 接收对象名称

1.5.9 调查导出

导出指定ID的调查为XML。 方法:exportResearch 参数: 参数 tokenId researchId 数据类型 String long 说明 登录验证后获取的身份令牌。 要导出调查的ID。 返回值:String

成功返回调查的XML(请参考调查实体定义),否则抛ServiceException。 示例: 远程调用:

DocumentServiceStub stub = new DocumentServiceStub(); DocumentServiceStub.ExportResearch req = new DocumentServiceStub.ExportResearch(); req.setToken(ServiceUtil.getToken()); req.setResearchId(-6657547820571145458l); DocumentServiceStub.ExportResearchResponse resp = stub.exportResearch(req); String xml = resp.get_return(); import com.seeyon.v3x.services.document.DocumentService; import com.seeyon.v3x.services.document.impl.DocumentServiceImpl; … DocumentService service = new DocumentServiceImpl (); String xml = service.exportResearch (token,research); 本地调用: 1.5.9.1 调查实体(ResearchExport)

参数 id title createTime creater targetArray 名称 ID 标题 发布时间 创建者 发布范围 数据类型 long String String String ResearchTargetExport List 参见发布范围实体 content department subjectArray 调查内容 发起部门 调查题目 String DepartmentExport 参见部门实体 ResearchSubjectExport List 参见调查题目实体 文档类型对象 调查内容描述 发起人员所在部门 长度 备注 调查ID 调查的标题名称 调查发起时间 调查发起人 调查对象 researchType voteTimes clickTimes commentArray 调查类型 投票人数 点击次数 评论 ResearchTypeExport 参见调查类型实体 int int ResearchCommentExport List 参见调查评论实体 调查属于哪种类型 现已提交调查的人数总计 调查被点击次数 对题目的评论 1.5.9.2 调查题目实体(ResearchSubjectExport)

参数 id subjectName answerArray 名称 题目ID 题目名称 答案 数据类型 long String AnswerExport List 参见调查答案实体 长度 备注 题目的名称 答案条目 1.5.9.3 调查评论实体(ResearchCommentExport)

参数 id commentPerson commentContent commentTime researchSubject 名称 题目ID 评论人 评论内容 评论时间 评论题目 数据类型 long PersonExport 参见人员实体 String String ResearchSubjectExport 参见调查题目实体 评论内容 该条评论的时间 评论对应的题目 长度 备注 该条评论发起人 1.5.9.4 调查类型实体(ResearchTypeExport)

参数 id researchTypeName 名称 类型ID 类型名称 数据类型 long String 长度 备注 调查类型的ID 调查类型名称 1.5.9.5 调查发布范围实体(ResearchTargetExport)

参数 名称 数据类型 长度 备注 id researchTargetName researchTargetType 调查对象ID 对象名称 对象类型 long String int 调查对象的名称 0 = 人 1 = 部门 2 = 组 3 = 职务级别 4 = 岗位 5 = 全部人员 1.5.9.6 调查答案实体(AnswerExport)

参数 id answerContent voteCount persent 名称 答案ID 答案内容 答案票数 百分比 数据类型 long String int String 长度 备注 调查类型的名称 该答案投票次数 投票百分比 1.5.10 讨论导出

导出指定ID的讨论为XML。 方法:exportBbs 参数: 参数 tokenId bbsId 数据类型 String long 说明 登录验证后获取的身份令牌。 要导出讨论的ID。 返回值:String

成功返回讨论的XML(请参考讨论实体定义),否则抛ServiceException。 示例: 远程调用: DocumentServiceStub stub = new DocumentServiceStub(); DocumentServiceStub.ExportBbs req = new DocumentServiceStub.ExportBbs(); req.setToken(ServiceUtil.getToken()); req.setBbsId(-6657547820571145458l); DocumentServiceStub.ExportBbsResponse resp = stub.exportBbs(req); String xml = resp.get_return(); import com.seeyon.v3x.services.document.DocumentService; import com.seeyon.v3x.services.document.impl.DocumentServiceImpl; … 本地调用: DocumentService service = new DocumentServiceImpl (); String xml = service.exportBbs (token,bbsId); 1.5.10.1

参数 id titile createTime content 讨论实体(BbsExport)

名称 讨论ID 讨论名称 发起时间 讨论内容 发起人 发起部门 讨论类型 发布范围 数据类型 long String String String PersonExport 参见人员实体 DepartmentExport 参见部门实体 BbsTypeExport 参见讨论类型实体 BbsTargetExport List 参见讨论发布范围实体 长度 讨论的标题 发起讨论的时间 讨论的内容 发起讨论的人员 发起人所在部门 讨论的发布类型 发起对象范围 备注 createPerson createDepartment bbsType bbsTargetArray attachmentArray 讨论附件 AttachmentExport List 参见附件范围实体 repliesArray 讨论回复 BbsReplyExport List 参见讨论回复实体 clickTimes replyTimes 点击次数 回复次数 int int 1.5.10.2

参数 id 讨论回复实体(BbsReplyExport)

名称 讨论回复ID 回复人员 回复时间 回复部门 回复内容 数据类型 long PersonExport 参见人员实体 String DepartmentExport 参见部门实体 String 长度 备注 回复讨论的人员 回复讨论的时间 回复人员所在的部门 replyPerson replyTime replyDepartment replyContent replyAttachmentArray 回复附件 AttachmentExport List 参见附件范围实体 replyTitle 回复标题 String 1.5.10.3

参数 id 讨论类型实体(BbsTypeExport)

名称 类型ID 类型名称 数据类型 long String 长度 备注 讨论类型的ID 讨论类型名称 bbsTypeName 1.5.10.4

参数 id 讨论发布范围实体(BbsTargetExport)

名称 讨论对象ID 对象名称 对象类型 数据类型 long String int 长度 备注 讨论对象的名称 0 = 人 1 = 部门 2 = 组 3 = 职务级别 4 = 岗位 5 = 全部人员 bbsTargetName bbsTargetType 1.6 新闻和公告发布

新闻公告发布服务支持对最近新闻和单位公告的数据导出,通过对导出数据XML的解析,可以实现将用友NC-OA新闻公告发布到外网或封装为标准portlet。 服务名称:documentService WSDL:

http://{host}:{port}/seeyon/services/documentService?wsdl 1.6.1 方法列表 名称 exportRecentNews exportRecentAccountBulletin exportBulletinByDateTime 说明 新闻发布,导出最近的新闻 单位公告发布,导出最近的单位公告 按照时间段导出单位公告

1.6.2 新闻发布

导出最近的新闻。

方法:exportRecentNews 参数:

参数 token accountId ticket@3 firstNum pageSize

数据类型 string long String int int 说明 登录验证后获取的身份令牌。 要导出新闻所属单位ID。 sso成功到用友NC-OA后获取的身份令牌,由外部系统产生。 要导出新闻第一条开始的位置(从0开始) 调整firstNum的值实现翻页。 要导出新闻页大小 返回值:String

成功返回新闻的XML(请参考新闻实体定义),否则抛ServiceException。 示例: 远程调用:

DocumentServiceStub.ExportRecentNewsResponse resp = stub .exportRecentNews(req); String xml = resp.get_return(); import com.seeyon.v3x.services.document.DocumentService; import com.seeyon.v3x.services.document.impl.DocumentServiceImpl; … DocumentService service = new DocumentServiceImpl (); String xml = service.exportRecentNews (token,accountId,ticket,firstNum,pageSize); req.setToken(ServiceUtil.getToken()); req.setAccountId(2345678921l); req.setFirstNum(0); req.setPageSize(8); DocumentServiceStub stub = new DocumentServiceStub(); DocumentServiceStub.ExportRecentNews req = new DocumentServiceStub.ExportRecentNews(); req.setTicket(“111111”); 本地调用:

1.6.3 公告发布

导出指定单位最近的公告。

方法:exportRecentAccountBulletin 参数: 参数 token ticket@4 accountName firstNum 数据类型 String String String int 说明 登录验证后获取的身份令牌。 sso成功到用友NC-OA后获取的身份令牌,由外部系统产生。 要导出公告所属单位名称。 要导出公告第一条开始的位置(从0开始) 调整firstNum的值实现翻页。 pageSize int 要导出公告页大小。 返回值:String

成功返回公告的XML(请参考公告实体定义),否则抛ServiceException。 示例: 远程调用: DocumentServiceStub stub = new DocumentServiceStub(); DocumentServiceStub.ExportRecentAccountBulletin req = new req.setToken(ServiceUtil.getToken()); req.setFirstNum(0); req.setPageSize(8); req.setAccountName(\"WS\"); DocumentServiceStub.ExportRecentAccountBulletinResponse resp = stub .exportRecentAccountBulletin(req); String xml = resp.get_return(); import com.seeyon.v3x.services.document.DocumentService; import com.seeyon.v3x.services.document.impl.DocumentServiceImpl; … DocumentService service = new DocumentServiceImpl (); String xml = service.exportRecentAccountBulletin (token,ticket,accountName,firstNum,pageSize); DocumentServiceStub.ExportRecentAccountBulletin(); req.setTicket(\"11111111\"); 本地调用: 按照时间段导出单位公告。

方法:exportBulletinByDateTime 参数:

参数 token ticket@5 accountName beginDateTime endDateTime

说明 登录验证后获取的身份令牌。 sso成功到用友NC-OA后获取的身份令牌,由外部系统产生。 要导出公告所属单位名称。 开始日期时间(yyyy-MM-dd HH:mm:ss) 结束日期时间(yyyy-MM-dd HH:mm:ss) 数据类型 String String String String String 返回值:String

成功返回公告的XML(请参考公告实体定义),否则抛ServiceException。 示例: 远程调用: DocumentServiceStub stub = new DocumentServiceStub(); DocumentServiceStub. ExportBulletinByDateTime req = new DocumentServiceStub. req.setToken(ServiceUtil.getToken()); req.setBeginDateTime (“2009-11-01 12:00:00”); req.setEndDateTime(“2009-12-01 12:00:00”); req.setAccountName(\"WS\"); DocumentServiceStub.ExportBulletinByDateTimeResponse resp = stub .exportBulletinByDateTime(req); ExportBulletinByDateTime (); req.setTicket(“111111”); String xml = resp.get_return(); import com.seeyon.v3x.services.document.DocumentService; import com.seeyon.v3x.services.document.impl.DocumentServiceImpl; … DocumentService service = new DocumentServiceImpl (); String xml = service.exportBulletinByDateTime 本地调用: (token,ticket,accountName,beginDateTime,endDateTim); 1.7 表单管理

1.7.1 方法列表 名称 exportByFlow 1.7.2 表单导出

按协同ID将表单导出为XML。 方法:exportByFlow 参数: 参数 tokenId flowId personId 数据类型 String long long 说明 登录验证后获取的身份令牌。 要导出协同ID。 对协同具备权限的人员的ID。 说明 导出表单信息 返回值:String

成功返回表单的XML,否则抛ServiceException。 示例: 远程调用: req.setToken(ServiceUtil.getToken()); req.setFlowId(1524091345697720826l); req.setPersonId(-3842551297703065226l); FormServiceStub.ExportByFlowResponse resp = stub.exportByFlow(req); String xml = resp.get_return(); FormServiceStub stub = new FormServiceStub(); FormServiceStub.ExportByFlow req = new FormServiceStub.ExportByFlow(); 本地调用:

import com.seeyon.v3x.services.form.FormService; import com.seeyon.v3x.services.form.impl.FormServiceImpl; … FormService service = new FormServiceImpl (); String xml = service.exportByFlow (token,flowId,personId);

1.7.2.1 表单实体(FormExport)

参数 formId formName definitions 名称 表单ID 表单名称 主表定义 数据类型 long String DefinitionExport List 参见表单字段定义实体 subordinateForms 从表列表 SubordinateFormExport List 参见人员实体 values 主表数据 ValueExport List 参见表单数据值实体 主表值列表 表单从表定义 长度 备注 表单主表的字段定义。 1.7.2.2 表单字段定义实体(DefinitionExport)

参数 name len isNullable optionId mathRuleScript defaultValue type 名称 字段名称 字段长度 是否为空 枚举类型ID 计算脚本 缺省值 数据类型 数据类型 String int int int String String int 长度 备注 0=可空 1=不可为空 保留字段,恒为0 保留字段,恒为null 保留字段,恒为空字符串 0=varchar 1=longtext 2=datetime 3=timestamp 4=decimal 5=handwrite 1.7.2.3 表单从表信息实体(SubordinateFormExport)

参数 definitions 名称 从表定义 数据类型 DefinitionExport List 参见表单字段定义实体 values 从表数据 RecordExport List 参见表单从表记录实体 从表值列表 长度 备注 表单从表的字段定义。

1.7.2.4 表单数据值实体(ValueExport)

参数 displayName displayValue value 名称 数据项名称 数据项显示值 数据项实际值 数据类型 String String String 长度 备注 如province 如北京 如010 1.7.2.5 表单从表记录实体(RecordExport)

参数 record 名称 从表记录 数据类型 ValueExport List 参见表单数据值实体 长度 备注 1.8 BPM集成

外部系统可以发起用友NC-OA的HTML正文协同和表单协同,按照用友NC-OA管理员预先设定的流程和表单模板进行流转。

BPM集成开发流程

1.8.1 方法列表 名称 getTemplateDefinition launchFormCollaboration 说明 获取表单模板定义。 发起表单流程。 launchHtmlCollaboration getFlowState getFormCollIdsByDateTime 1.8.2 流程状态

分类 未发出 处理中 状态名称 待发 待处理 处理中 回退 取回 非正常结束 正常结束 撤销 终止 结束 状态值 1 3 4 6 7 5 15 0 发起Html正文流程。 取得流程的运转状态 按时间段查询指定表单模板已经审批通过和结束的流程 说明 流程未发出 流程发出,无任何人处理 流程发出,已部分处理 被退回到上一节点 被上一节点取回 被发起者撤销 被终止 正常结束 1.8.3 获取模板定义 方法:getTemplateDefinition 参数 tokenId templateCode 数据类型 String String 说明 登录验证后获取的身份令牌。 模板编号。 在定义模板时自定义的用于外部系统调用的编号。 返回值:String[]

返回模板定义对象的XML组合,依次是:[FlowExport, FormExport],如果是非表单模板,FormExport为null。 指定编号的模板不存在则返回null。 异常:ServiceException 示例: 远程调用: String flowXml = templates[0]; String formXml = templates[1]; import com.seeyon.v3x.services.flow.FlowService; import com.seeyon.v3x.services.flow.impl.FlowServiceImpl; BPMServiceStub stub = new BPMServiceStub(); BPMServiceStub.GetTemplateDefinition req = new BPMServiceStub.GetTemplateDefinition(); req.setToken(ServiceUtil.getToken()); req.setTemplateCode(\"12345678\"); BPMServiceStub.GetTemplateDefinitionResponse resp = stub .getTemplateDefinition(req); String[] templates = resp.get_return(); 本地调用: … FlowService service = new FlowServiceImpl (); String templates = service.getTemplateDefinition (token,templateCode); 1.8.4 外部系统发起表单流程 方法:launchFormCollaboration 参数 tokenId senderLoginName templateCode subject data 数据类型 String String String String String 参见表单实体 long String 说明 登录验证后获取的身份令牌。 发起者的登录名(登录用友NC-OA的登录名)。 发起的协同将进入发起者的待发事项。 模板编号。 在定义模板时自定义的用于外部系统调用的编号。 标题,用友NC-OA协同的标题 XML格式的表单数据,格式与getTemplateDefinition返回值中的FormExport相同。保障数据的正确性,参见发起表单流程数据的校验。 上传附件的文件ID数组(通过上传附件接口获得) 控制是否流程发送。 0:缺省值,发送,进入下一节点的待办(如果需要选人则保存到待发) 1:不发送,保存到待发 attachments param 返回值:long 返回流程ID

异常:返回ServiceException 示例: 远程调用: req.setToken(ServiceUtil.getToken()); req.setTemplateCode(\"1234\"); req.setSenderLoginName(\"test\"); req.setSubject(\"外部发起Form正文协同\"); // 按照getTemplateDefinition获得的Form xml规范,填充数据,构造xml req.setData(xml); BPMServiceStub.LaunchFormCollaborationResponse resp = stub .launchFormCollaboration(req); ServiceResponse sr = resp.get_return(); long colId = sr.getResult(); import com.seeyon.v3x.services.flow.FlowService; import com.seeyon.v3x.services.flow.impl.FlowServiceImpl; … FlowService service = new FlowServiceImpl (); BPMServiceStub stub = new BPMServiceStub(); BPMServiceStub.LaunchFormCollaboration req = new BPMServiceStub.LaunchFormCollaboration(); String xml = “…”; 本地调用: String templates = service.launchFormCollaboration (token,senderLoginName,templateCode,subject,data,attachments); BPM接口为发起表单流程提供了XML校验工具和流程日志。 1.8.4.1 获取流程数据定义

有三个途径可以获取流程数据XML的规范

1、 按照模板编号调用BPMService.getTemplateDefine,但导出的XML只包含字段定义,不包含数据格式。 2、 在用友NC-OA中使用表单模板填写数据,发起流程,按照协同Id调用DocumentService.exportFlow,导

出的XML中FormExport部分就是包含数据的定义。

3、 在用友NC-OA中使用表单模板填写数据,发起流程,按照协同Id调用FormService.exportByFlow,导出

的XML就是包含数据的定义。 1.8.4.2 发起表单流程数据的校验

开发阶段可以使用XML Schema和XSL文件校验发起流程的表单XML,以避免运行时发生错误。 1、 指定了Schema和XSL的XML文件示例,请参照添加Schema和XSL。 2、 Schema校验 指定Schema:在XML的Root节点(DataPojo type=\"FormExport\")添加Schema属性 校验:使用XML编辑器(如XMLSpy)进行Schema校验,保证XML的结构合法。

3、 XSLT校验

指定XSL:在XML的PI()后添加 校验:使用IE打开添加了XSL的XML文件,系统会用红色字体提示文件中的错误。 4、 简化发起流程的XML

为控制XML的大小,发起流程时可以不包含definitions中的数据,但必须有definitions声明。例如XML中的

start_member_id 发起人

approve_member_id 审核人

可以替换为 1.8.4.3 流程日志

为了对发起表单流程进行运行时的监控,提供了BPM流程日志,在服务器的/USER-DATA/BPM/logs/FlowLog.log中记录发起流程的状态(模板编号、发起人、发起时间、是否成功、发起的协同Id、描述、xml),如果出错了在描述中记录错误信息。并在webapps/seeyon/USER-DATA/BPM/xml中保存发起流程的xml文件。

可以通过webapps/seeyon/WEB-INF/classes/conf/Log4j.properties修改流程日志的级别:缺省为info,记录所有,调试稳定后可修改为warn(只记录警告和出错的流程)或error(只记录出错的流程)。 # # FlowLog # log4j.category.com.seeyon.v3x.services.flow.log = info , flowLog log4j.additivity.com.seeyon.v3x.services.flow.log = false 1.8.5 外部系统发起html正文流程(不包括office正文) 方法:launchHtmlCollaboration 参数 tokenId senderLoginName templateCode subject bodyContent attachments 数据类型 String String String String String long 说明 登录验证后获取的身份令牌。 发起者的登录名(登录用友NC-OA的登录名)。 发起的协同将进入发起者的待发事项。 模板编号。 标题 HTML正文内容 上传附件的文件ID数组(通过上传附件接口获得)

返回值:

long

返回流程ID

异常:返回ServiceException 示例: 远程调用:

BPMServiceStub stub = new BPMServiceStub(); BPMServiceStub.LaunchHtmlCollaboration req = new BPMServiceStub.LaunchHtmlCollaboration(); req.setToken(ServiceUtil.getToken()); req.setTemplateCode(\"12345678\"); req.setSenderLoginName(\"A1\"); req.setSubject(\"外部发起Html正文协同\"); req.setBodyContent(\"正文\"); BPMServiceStub.LaunchHtmlCollaborationResponse resp = stub .launchHtmlCollaboration(req); ServiceResponse sr = resp.get_return(); long colId = sr.getResult(); import com.seeyon.v3x.services.flow.FlowService; import com.seeyon.v3x.services.flow.impl.FlowServiceImpl; … FlowService service = new FlowServiceImpl (); String templates = service. 本地调用:

launchHtmlCollaboration(token,senderLoginName,templateCode,subject,bodyContent,attachments);1.8.6 取得流程运转状态 方法:getFlowState 参数 tokenId flowId 数据类型 String long 说明 登录验证后获取的身份令牌。 流程Id(launchFormCollaboration或launchHtmlCollaboration的返回值)。 返回值:long

返回流程的状态,返回值参见流程状态。 异常:ServiceException 示例: 远程调用:

BPMServiceStub stub = new BPMServiceStub(); BPMServiceStub.GetFlowState req = new BPMServiceStub.GetFlowState(); req.setToken(ServiceUtil.getToken()); req.setFlowId(-123456789813l); BPMServiceStub.GetFlowStateResponse resp = stub .getFlowState(req); long state = resp.get_return(); 本地调用: import com.seeyon.v3x.services.flow.FlowService; import com.seeyon.v3x.services.flow.impl.FlowServiceImpl; … FlowService service = new FlowServiceImpl (); long state = service.getFlowState (token,flowId); 1.8.7 按时间段查询出多个表单模板已经审批通过和结束的流程 方法:getFormCollIdsByDateTime 参数 token templateCode beginDateTime endDateTime 返回值:long[] 返回流程Id

异常:返回ServiceException 示例: 远程调用:

BPMServiceStub stub = new BPMServiceStub(); BPMServiceStub.GetFormCollIdsbyDateTime req=new String[] param=new String[1]; param[0]=\"0000\"; req.setTemplateCode(param); req.setBeginDateTime(\"2009-09-24 20:00:00\"); req.setEndDateTime(\"2009-09-25 20:00:00\"); BPMServiceStub.GetFormCollIdsbyDateTimeResponse result=resp.get_return(); import com.seeyon.v3x.services.flow.FlowService; import com.seeyon.v3x.services.flow.impl.FlowServiceImpl; … FlowService service = new FlowServiceImpl (); String templates = service. 数据类型 String String[] String String 说明 登录验证后获取的身份令牌。 模板编号数组。 开始查询时间(yyyy-MM-dd HH:mm:ss)。 结束查询时间(yyyy-MM-dd HH:mm:ss)。 BPMServiceStub.GetFormCollIdsbyDateTime(); resp=stub.getFormCollIdsbyDateTime(req); 本地调用: getFormCollIdsByDateTime(token,,templateCode,beginDateTime,endDateTime); 1.9 事项集成

外部系统通过事项接口,可以得到用友NC-OA待办事项和跟踪事项的列表,结合单点登录可以打开处理待办事项和跟踪事项。 1.9.1 方法列表

名称 exportPendingList exportTrackList 说明 获取待办事项列表。 获取跟踪事项列表。 方法:exportPendingList(exportTrackList两个方法参数相同) 参数: 参数 tokenId ticketed@6 firstNum pageSize 数据类型 String String int int 说明 登录验证后获取的身份令牌。 sso单点登录获得的身份令牌,由外部系统提供,外部系统每次请求服务需要带上此参数 列表第一条开始的位置号,“0”为第一条。 获取列表条数。 返回值:String

成功返回XML,否则抛ServiceException。 示例: 远程调用:

AffairServiceStub stub = new AffairServiceStub(); AffairServiceStub.exportPendingList req = new AffairServiceStub. exportPendingList (); req.setTicketId(\"113133131\"); req.setFirstNum(\"0\"); req.setPageSize(\"20\"); AffairServiceStub. exportPendingListResponse resp = stub . exportPendingList (req); String xml = resp.get_return(); import com.seeyon.v3x.services.affair.AffairService; import com.seeyon.v3x.services.affair.impl.AffairServiceImpl; … AffairService service = new AffairServiceImpl (); String templates = service. exportPendingList(token,ticketId,firstNum req.setToken(ServiceUtil.getToken()); 本地调用: ,pageSize); 导出的XML:

1

123456789

123456789

1

n=\"link\">

1244862000000

true

3

true

1.10 消息服务

外部系统通过消息接口,可以把系统消息发送到用友NC-OA 1.10.1 方法列表 名称 sendMessageByLoginName sendMessageByUserId 方法:sendMessageByLoginName 参数: 参数 token loginNames content url 数据类型 String String[] String String[] 说明 登录验证后获取的身份令牌。 接收人是用友NC-OA登陆名,可以多人接收 消息内容:可以是发送人,标题,内容的组合。 接收人触发的链接,跟接收人一一对应,如果为空则此接收人没有链接。 说明 接收人是用友NC-OA登录名。 接收人是用友NC-OA用户ID。 返回值:ServiceResponse

成功则返回1,失败而没有异常是0,有异常返回是-1,并且返回异常信息 示例: 远程调用:

MessageServiceStub stub=new MessageServiceStub(); MessageServiceStub.SendMessageByLoginName req=new String[] loginnames=new String[2]; loginnames[0]=\"zy\"; loginnames[1]=\"jia1\"; urls[0]=\"http://www.seeyon.com\"; urls[1]=\"http://www.baidu.com\"; String[] urls=new String[3]; MessageServiceStub.SendMessageByLoginName() req.setToken(ServiceUtil.getToken()); req.setLoginNames(loginnames); req.setContent(\"标题:晚上要停电了。内容:XXXXXXXXX\"); req.setUrl(urls); MessageServiceStub.SendMessageByLoginNameResponse resp = ServiceResponse response1=response.get_return(); stub.sendMessageByLoginName(req); 本地调用:

import com.seeyon.v3x.services.message.MessageService; import com.seeyon.v3x.services.message.impl.MessageServiceImpl; … MessageService service = new MessageServiceImpl (); service. sendMessageByLoginName(token,loginNames,content ,url); 方法:sendMessageByUserId 参数: 参数 token userIds content url 数据类型 string long[] string string[] 说明 登录验证后获取的身份令牌。 接收人是用友NC-OA用户ID,可以多人接收 消息内容:可以是发送人,标题,内容的组合。 接收人触发的链接,跟接收人一一对应,如果为空则此接收人没有链接。 返回值:ServiceResponse

成功则返回1,失败而没有异常是0,有异常返回是-1,并且返回异常信息 1.11 文件服务

文件服务与其他服务不同,可以传递Token,使用标准的HTTP请求调用。 1.11.1 方法列表 名称 downloadService uploadService 1.11.2 文件下载服务

说明 文件下载服务。 文件上传服务。

外部系统通过下载接口,可以把用友NC-OA系统的文件或附件以二进制流的形式输出到HTTP响应。 名称 downloadService 请求路径:/seeyon/services/downloadService

参数: 参数 token fileId 数据类型 String String 说明 登录验证后获取的身份令牌。 用友NC-OA系统中附件ID 说明 文件下载服务。 返回值:文件的二进制流

成功则返回输出流,否则返回提示出错字符

示例:

StringBuffer parameters = new StringBuffer();

parameters.append(\"fileId=\"+\"-4951942983085243789\");

parameters.append(\"&token=\"+\"e821246a-3b2f-4c28-94ab-9410cc19c056\"); URL preUrl = null; URLConnection uc = null; try {

preUrl = new URL(\"http://128.2.3.174/seeyon/services/downloadService\");

String s = parameters.toString(); uc = preUrl.openConnection(); uc.setDoOutput(true); uc.setUseCaches(false);

uc.setRequestProperty(\"Content-Type\",

\"application/x-www-form-urlencoded\"); HttpURLConnection hc = (HttpURLConnection) uc; hc.setRequestMethod(\"POST\");

OutputStream os = hc.getOutputStream();

DataOutputStream dos = new DataOutputStream(os); dos.writeBytes(s); dos.flush(); dos.close();

FileOutputStream file=new FileOutputStream(\"d:/test.pdf\"); InputStream is = hc.getInputStream(); int ch;

while ((ch = is.read()) != -1) { file.write(ch); }

if (is != null)

is.close();

1.11.3 文件上传服务

外部系统通过调用上传接口,可以把外部系统需要上传到用友NC-OA的附件先通过此接口完成,如外边系统发起

表单流程,需要先调用此接口。 名称 uploadService 说明 文件上传服务。 请求路径:/seeyon/uploadService.do?method= processUploadService

参数: 参数 token senderLoginName 数据类型 String String 说明 登录验证后获取的身份令牌。 发起者用友NC-OA登陆名 返回值:String

成功则返回用友NC-OA中生成的附件id,如果多个文件上传则以\"|\"符号分割返回 示例:

hc.setRequestProperty(\"Content-Type\",

\"multipart/form-data;boundary=\" + \"---------------------------7d4a6d158c9\"); byte[] end_data = (\"\\r\\n--\" + BOUNDARY + \"--\\r\\n\").getBytes();

DataOutputStream dos = new DataOutputStream(hc.getOutputStream()); dos.write(sb.toString().getBytes(\"utf-8\")); int cc=0;

while((cc=input.read())!=-1) {

dos.write(cc); URL preUrl = null; URLConnection uc = null;

preUrl = new URL(\"http://128.2.3.174/seeyon/uploadService.do? method=processUploadService\" +\"&senderLoginName=\"+\"zy\"

+\"&token=\"+\"997a7cdc-2399-47e8-991e-96c859cccc7f\"); String s = parameters.toString(); uc = preUrl.openConnection();

HttpURLConnection hc = (HttpURLConnection) uc; hc.setDoOutput(true); hc.setUseCaches(false);

hc.setRequestProperty(\"contentType\", \"charset=utf-8\"); hc.setRequestMethod(\"POST\");

BufferedInputStream input=new BufferedInputStream(new FileInputStream(\"c:/LDAP集成设计 String BOUNDARY = \"---------------------------7d4a6d158c9\"; // 分隔符 String fileName=\"LDAP集成设计文档.doc\"; StringBuffer sb = new StringBuffer(); sb.append(\"--\"); sb.append(BOUNDARY); sb.append(\"\\r\\n\");

sb.append(\"Content-Disposition: form-data; \\r\\n name=\\\"1\\\"; filename=\\\"\"+fileName+\"\\\"\\r\\n\"); sb.append(\"Content-Type: application/msword\\r\\n\\r\\n\");

文档.doc\"));

} dos.write(end_data); dos.flush(); dos.close(); FileOutputStream file=new FileOutputStream(\"c:/test.txt\"); InputStream is = hc.getInputStream(); int ch; while ((ch = is.read()) != -1) { } if (is != null) is.close(); file.write(ch); 上传下载本地调用:

import com.seeyon.oainterface.impl.exportdata.FileUploadExporter; FileUploadExporter fileUpload=new FileUploadExporter(); String outStr= fileUpload.processUpload(request); import com.seeyon.oainterface.impl.exportdata.FileDownloadExporter FileDownloadExporter exporter=new FileDownloadExporter(); exporter.processDownload(token, fileId, out); 2. 附录

2.1.1 服务错误号

错误号 错误 0 没有错误 12005 不合法的令牌,请重新登录。 21001 单位不存在 21010 没有设置单位,无法获取单位ID。 21011 单位名称不能为空 21021 获取单位信息出错 22001 人员不存在 22002 人员已存在 22011 人员登录名为空 22012 人员密码为空 22021 适配人员数据出错 22121 创建人员出错 22122 删除人员出错 22123 修改人员信息出错 22124 设置人员排序号出错 22125 修改人员密码出错 22126 启用/停用人员出错 22127 根据条件查询人员ID出错 22128 插入重复人员排序号出错 22129 设置人员的所属部门出错 22130 设置人员的所属岗位出错 22131 设置人员的职务级别出错 22132 获取人员关联信息出错 22133 判断人员的待办事项出错 23021 部门不存在 23022 部门路径为空 23023 部门名称为空 23024 父部门名称为空 23025 部门已存在 23029 创建部门出错 23030 删除部门出错 23031 修改部门信息出错 23032 修改部门排序出错 23033 移动部门出错 23034 启用/停用部门出错 23035 部门插入重复排序号出错 23036 部门同名检查出错 23040 获取部门全路径出错 24001 岗位不存在 24002 岗位名称为空 24003 岗位已存在 24121 创建岗位出错 24122 删除岗位出错 24123 更新岗位信息出错 24124 启用/停用岗位出错 24125 岗位关联部门出错 24126 根据条件查询岗位ID出错 24127 岗位插入重复排序号出错 25001 职务级别不存在 25002 职务级别名称为空 25003 职务级别已存在 25121 创建职务级别出错 25122 删除职务级别出错 25123 更新职务级别信息出错 25124 启用/停用职务级别出错 25126 根据条件查询职务级别ID出错 31013 协同不存在 40015 协同正文类型不是表单 50101 发起协同出错 50121 模板不存在 50122 校验表单数据出错 50126 按登录名查找发起人出错

服务错误号分配表 错误号段 模块 10000 保留 11000 系统 12000 服务 21000 单位 22000 人员 23000 部门 24000 岗位 25000 职务级别 31000 协同 32000 公文 33000 新闻 34000 公告 35000 讨论 36000 调查 40000 表单 50000 BPM

因篇幅问题不能全部显示,请点此查看更多更全内容