致远OA二次开发 配置开发环境及使用SDK

此前汇总的文章里面有简单说过SDK。在开发文档内没有完整对其进行说明。其实致远OA官方的开发文档我个人觉得是很有问题的,一般来说都是从入门到深入细节。他们这个开发文档居然在介绍Springboot。由于是接触过他们官方的二开,对项目大概有点了解,此次特意聊聊他们配置开发环境与SDK。

开发环境

分为两个版本。

1.V6.0之前版本,请从产品环境的webapps/seeyon/WEB-INF/lib获取以下jar包:

seeyon-ctp-core.jar
jackson-core-asl-1.9.8.jar
jackson-core-lgpl-1.9.8.jar
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.8.jar
jackson-xc-1.9.2.jar
jersey-client-1.17.1.jar
jersey-core-1.17.1.jar
jersey-json-1.17.1.jar
jersey-server-1.17.1.jar
jersey-servlet-1.17.1.jar

2.V6.0之后版本,包括V6.0,V6,请从产品环境的webapps/seeyon/WEB-INF/lib获取:

seeyon-ctp-core.jar
httpmime.jar
httpcore-nio.jar
httpcore.jar
httpclient-win.jar
httpclient-cache.jar
httpclient.jar
json-lib-jdk15.jar
ezmorph.jar
commons-beanutils.jar
jersey-server.jar
jersey-media-multipart.jar
jersey-media-jaxb.jar
jersey-guava.jar
jersey-container-servlet-core.jar
jersey-container-servlet.jar
jersey-common.jar
jersey-client.jar
javax.ws.rs-api.jar
javax.inject.jar
jackson-module-jaxb-annotations.jar
jackson-jaxrs-base.jar
jackson-databind.jar
jackson-annotations.jar
hk2-utils.jar
hk2-locator.jar
hk2-api.jar
javax.annotation-api.jar
jackson-jaxrs-json-provider.jar
jackson-core.jar

官方文档也有上述的说明。只是给出之后就戛然而止了,估计讲究的就是开发者和官网之间的默契,少一点都不行。

引入以上的jar包之后,如想能正常调用,请在对应产品环境的机器上进行开发。就是说,如果你是在正式环境上面拷出以上的jar包,你开发的程序就只能运行在正式环境上。或者需要重新引入并打包。这个事情我咨询过二开,对此讳莫如深,只说了里面会包含致远OA系统的一些配置,所以不能是通用的。

其实这一条就足以影响整个致远的二开生态了。本身只要是开发通用的插件,只要把对应的jar配置到系统中就可以用了。但是因为这样的设置,需要重新引入jar并打包。门槛就高出许多。

SDK

SDK还是没什么说明,就列举几个文档的例子自行理解吧。

1.获取客户端对象的实例

import com.seeyon.client.CTPRestClient;
import com.seeyon.client.CTPServiceClientManager;
...
// 指定协议、IP和端口,获取ClientManager
CTPServiceClientManager clientManager = CTPServiceClientManager.getInstance("http://127.0.0.1:8080");

/ 取得REST动态客户机实例
CTPRestClient client = clientManager.getRestClient();

2.Token验证
可以调用authenticate方法进行一次性的登录验证,后续的调用就不必传入token:

//验证rest用户
client.authenticate(userName, password);
//绑定登录用户
client.bindUser(loginName);

3.GET
所有GET类的REST接口均可按此方式调用:

// 访问按登录名获取人员信息的接口
// 期待的返回值类型为String,此时返回JSON串
String json = client.get("orgMember/?loginName=" + loginName, String.class);
// 同样的调用,此时将JSON解析为Map返回
Map map = client.get("orgMember/?loginName=" + loginName, Map.class);
// 此处指定了accept,返回值为xml
String xml = client.get("flow/data/-5199818657160149985" , String.class,"application/xml");
// 注意URL中的中文一定要进行编码
client.get("orgMembers/name/" + URLEncoder.encode("中文","UTF-8"), String.class);

4.POST
以新建类接口示例:

// 新建岗位
Map data = new HashMap() {
    {
        put("orgAccountId", 967547186016371000l);
        put("name", "岗位名称");
    }
};
String post = client.post("orgDepartment", data, String.class);//注意:这里的Map data 切勿传入null,及时data没有信息,也需Map data = new HashMap();

// 新建人员
Map data = new HashMap() {
    {
        put("orgAccountId", orgAccountId);
        put("name", memberName);
        put("code", "");
        put("sortId", 2);
        put("description", "");
        put("orgLevelId", levelId);
        put("orgPostId", postId);
        put("orgDepartmentId", departmentId);
        put("telNumber", "");
        put("birthday", null);
        put("officeNum", "");
        put("emailAddress", "");
        put("loginName", loginName);
    }
};
client.post("member", data, String.class);
点赞

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注