金蝶OSF接口调用示例(金蝶s-HR系统接口):
①封装OSF接口参数Map;
②调用OSF接口;
以下示例仅演示了在Java环境中调用OSF接口,还有其它方式进行调用(例如使用单点登录的方式调用OSF接口等),这里未列举。
package com.kingdee.eas.si.test.osf;
import java.util.Map;
import com.kingdee.eas.si.util.OsfUtil;
/**
* 获取工作流已办列表
* @author 郭旭
*
*/
public class GetAssignHst {
public static void main(String[] args) {
String serviceName = "getAssignHst"; //服务名称
Map<String, Object> params = OsfUtil.params(); //参数
params.put("number", "10138832"); //员工编码
params.put("page", 1); //分页
String result = OsfUtil.execute(serviceName, params);
System.out.println(result);
}
}
以下代码为OSF调用工具类,需要金蝶提供相应的Jar包(SDK)以及用户配置信息(数据库类型、代理用户账号、密码等);
package com.kingdee.eas.si.util;
import java.util.Map;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import com.kingdee.shr.api.OSFWSClient;
import com.kingdee.shr.osf.webservice.client.UserInfo;
/**
* 金蝶OSF调用工具类
* 直接调用执行(execute)方法即可,自动单点登录
* @author 郭旭
*
*/
public class OsfUtil {
/**
* 执行金蝶OSF服务
* @param serviceName 服务名称
* @param params 接口参数
* @return 返回JSON
*
*/
public static String execute(String serviceName, Map<String, Object> params){
UserInfo user = getUser();
String address = Resource.get("ADDRESS"); //系统地址
String result = new OSFWSClient().proceedOSF(address, serviceName, params, user);
return result;
}
/**
* 获取OSF服务接口参数
* @return Map
*/
public static Map<String, Object> params(){
return new HashMap<String, Object>();
}
/**
* 获取OSF服务接口参数
* @param request HTTP请求
* @return JSon
*
*/
public static String params(HttpServletRequest request) throws Exception{
ServletInputStream input = request.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input, "UTF-8"));
StringBuilder builder = new StringBuilder();
String param;
while ((param = reader.readLine()) != null) {
builder.append(param);
}
return builder.toString();
}
/**
* 获取代理用户
* 数据库类型:SQLServer=0,Oracle=1,DB2=2
* @return 用户
*
*/
public static UserInfo getUser() {
UserInfo user = new UserInfo();
user.setDbType(Resource.getInt("DBTYPE")); //数据库类型
user.setDcName(Resource.get("DCNAME")); //数据中心
user.setSlnName(Resource.get("SLNNAME")); //解决方案
user.setLanguage(Resource.get("LANGUAGE")); //默认语言
user.setUserName(Resource.get("USERNAME")); //用户名
user.setPassword(Resource.get("PASSWORD")); //密码
return user;
}
}