关键词:服务集成,数据同步,组织同步,组织人员同步,接口代码

O2OA允许用户自定义接口和代码逻辑来完成系统与第三方业务系统的数据同步,人员和组织的同步。本文主要介绍如何在O2OA中开发接口与外部系统进行组织和人员的同步,自定义同步接口代码。

用户信息包括3个部分:

基本信息、用户属性和所在部门。

新增用户(add)和修改用户(update)时,需列式该用户下的全量属性和所在部门。
接口根据报文的用户所在部门对用户的身份进行增删改。

组织信息包括3个部分:

基本信息、组织属性和组织职务。
新增组织(add)和修改组织(update)时,需列式该组织下的全量组织属性和组织职务。
接口同时根据报文对组织属性和组织职务进行增删改

1、同步创建组织:

 第一步:单点登入
第二步:创建顶层部门
第三步:获取创建的部门id
第四步:创建二级部门



public static void main(String[] args) throws IOException, Exception {
      String token = "";
      // 第一步:单点登入
      String path = "http://172.16.99.20:20020/x_organization_assemble_authentication/jaxrs/sso";
      long time = new Date().getTime();
      String login_uid = "test";
      String sso_key = "12345678";
      String xtoken = null;
      try {
        xtoken = Crypto.encrypt(login_uid + "#" + time, sso_key);
        System.out.println(xtoken);
      } catch (Exception e1) {
        e1.printStackTrace();
      }
      String string = "{\"token\": " + xtoken + ", \"client\": \"unicom\"}";
      String str = HttpClientUtilsUnitSycn.getInstance().sendPost(path, string);
      try {
        JSONObject jsonObj = (JSONObject) (new JSONParser().parse(str));
        JSONObject data = (JSONObject) jsonObj.get("data");
        System.out.println(data.get("token"));
        token = (String) data.get("token");
      } catch (ParseException e) {
        e.printStackTrace();
      }
      // 第二步:创建顶层部门
      path = "http://172.16.99.20:20020/x_organization_assemble_control/jaxrs/unit";
      JSONArray array = new JSONArray();
      array.add("company");
      JSONObject dep1 = new JSONObject();
      dep1.put("name", "测试组织");
      dep1.put("unique", "test001");
      dep1.put("distinguishedName", "测试组织@test001@U");
      dep1.put("typeList", array);
      dep1.put("description", "测试");
      dep1.put("shortName", "test");
      dep1.put("orderNumber", "1");
      String strResult = HttpClientUtilsUnitSycn.getInstance().sendPost2(path, token, dep1.toJSONString());
      String id = "";
      System.out.println("strResult=" + strResult);
      //第三步:获取部门id
      JsonParser parser = new JsonParser();
      JsonObject object = null;
      object = (JsonObject) parser.parse(strResult);
      object = object.getAsJsonObject("data");
      id = object.get("id").getAsString();
      System.out.println("id=" + id);
      //第四步:创建二级部门
      path = "http://172.16.99.20:20020/x_organization_assemble_control/jaxrs/unit";
      JSONArray array2 = new JSONArray();
      array2.add("dept");
      JSONObject dep2 = new JSONObject();
      dep2.put("name", "测试部门");
      dep2.put("unique", "dep001");
      dep2.put("distinguishedName", "测试部门@dep001@U");
      dep2.put("typeList", array2);
      dep2.put("description", "测试部门");
      dep2.put("shortName", "testdetp");
      dep2.put("orderNumber", "1");
      dep2.put("superior", id); // 上级部门id
      String strResult2 = HttpClientUtilsUnitSycn.getInstance().sendPost2(path, token, dep2.toJSONString());
      String id2 = "";
      System.out.println("strResult2=" + strResult2);
      //获取二级部门id
      object = (JsonObject) parser.parse(strResult2);
      object = object.getAsJsonObject("data");
      id2 = object.get("id").getAsString();
      System.out.println("id2=" + id2);
}

_

2、同步创建个人:

 第一步:   单点登入
第二步:创建个人信息
第三步:获取个人id
第四步:创建个人身份信息


public static void main(String[] args) throws IOException, Exception {
      String token = "";
      // 第一步:单点登入
      String path = "http://172.16.99.20:20020/x_organization_assemble_authentication/jaxrs/sso";
      long time = new Date().getTime();
      String login_uid = "test";
      String sso_key = "12345678";
      String xtoken = null;
      try {
        xtoken = Crypto.encrypt(login_uid + "#" + time, sso_key);
        System.out.println(xtoken);
      } catch (Exception e1) {
        e1.printStackTrace();
      }
      String string = "{\"token\": " + xtoken + ", \"client\": \"unicom\"}";
      String str = HttpClientUtilsUnitSycn.getInstance().sendPost(path, string);
      try {
        JSONObject jsonObj = (JSONObject) (new JSONParser().parse(str));
        JSONObject data = (JSONObject) jsonObj.get("data");
        System.out.println(data.get("token"));
        token = (String) data.get("token");
      } catch (ParseException e) {
        e.printStackTrace();
      }
      // 第二步:创建个人信息
      path = "http://172.16.99.20:20020/x_organization_assemble_control/jaxrs/person";

      JSONObject dep1 = new JSONObject();
      dep1.put("genderType", "m");
      dep1.put("name", "王文雄2");
      dep1.put("employee", "12345678222");
      dep1.put("unique", "wwx2");
      dep1.put("orderNumber", "4");
      dep1.put("mail", "955237612@qq.com");
      dep1.put("mobile", "13456929932");

      String strResult = HttpClientUtilsUnitSycn.getInstance().sendPost2(path, token, dep1.toJSONString());
      String id = "";
      System.out.println("strResult=" + strResult);
      //第三步:获取个人id
      JsonParser parser = new JsonParser();
      JsonObject object = null;
      object = (JsonObject) parser.parse(strResult);
      object = object.getAsJsonObject("data");
      id = object.get("id").getAsString();
      System.out.println("id=" + id);

      //第四步:创建个人身份信息
      path = "http://172.16.99.20:20020/x_organization_assemble_control/jaxrs/identity";
      JSONObject identity1 = new JSONObject();
      identity1.put("name", "王文雄2");
      identity1.put("person", id);
      identity1.put("unit", "e32434b2-6071-4f7d-8858-d7ee3811e8f4");

      strResult = HttpClientUtilsUnitSycn.getInstance().sendPost2(path, token, identity1.toJSONString());
      System.out.println("strResult=" + strResult);
}

_
sendPost2函数:

public static String sendPost2(String url, String token, String paramsStr) throws IOException, Exception {
      // POST请求
      CloseableHttpClient httpclient = HttpClients.createDefault();
      // 请求参数
      StringEntity postingString = new StringEntity(paramsStr, "utf-8");
      HttpPost httpPost = new HttpPost(url);
      httpPost.setEntity(postingString);
      // 请求头设置
      httpPost.addHeader("Cookie", "x-token=" + token);
      httpPost.addHeader("accept", "*/*");
      httpPost.addHeader("connection", "Keep-Alive");
      httpPost.addHeader("Content-Type", "application/json; charset=utf-8");
      httpPost.addHeader("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
      // 执行请求
      CloseableHttpResponse execute = httpclient.execute(httpPost);
      // 处理返回结果
      String restStr = IOUtils.toString(execute.getEntity().getContent(), "utf-8");
      return restStr;
}

推荐文章:

服务管理-前后端脚本的差异
2021-03-01
O2OA提供的服务管理中心可以让用户使用Javascript语言自由编写脚本的处理逻辑来实现与第三方的数据交互,数据同步以及系统内的数据处理等工作。本文主要介绍
开发知识-O2OA平台启用Eruda进行移动端调试
2021-02-07
//reload--是否重新加载页面。true表示重新加载页面;默认falseo2.debug(reload);
流程设计-流程设计与应用权限设置
2021-02-26
本文主要介绍如何在O2OA中进行审批流程或者工作流设计,O2OA主要采用拖拽可视化开发的方式完成流程的设计和配置,不需要过多的代码编写,业务人员可以直接进行修改
平台服务器下载及安装部署-Linux环境
2021-02-25
O2OA信息化系统开发支持公有云,私有云和混合云部署,也支持复杂的网络结构下的分布式部署。O2OA开发平台安装部署非常方便,只需要简单的三步即可完成安装。平台内
信息栏目-新建信息发布流程
2021-03-01
O2OA提供的信息管理功能可以帮助用户快速地配置信息发布栏目,如通知公告,公司动态,规章制度等。用户可以高效地完成信息栏目和配置。本文主要介绍如何在O2OA中为
创建组织架构及个人信息
2021-02-19
本篇主要简单讲述初次使用O2OA如何创建人员信息,组织职务信息以及组织成员和组织职务管理的实际意义及使用场景。
CRM客户管理使用手册
2021-02-19
O2OA包含一个简单的开源CRM客户信息管理系统,提供客户信息管理,客户线索管理,公海管理,联系人管理以及跟进信息和数据统计功能。O2OA是一款以流程管理为核心
流程设计-简单流程的创建与设计
2021-02-26
本文主要介绍如何在O2OA中进行审批流程或者工作流设计,O2OA主要采用拖拽可视化开发的方式完成流程的设计和配置,不需要过多的代码编写,业务人员可以直接进行修改
常见问题-服务器和日志时间相差12小时的问题
2021-02-07
解决方案:修改start_linux.sh,在最后的调用java命令的参数中添加时区参数:-Duser.timezone=GMT+08重启后生效!
数据中心-数据视图开发
2021-03-01
O2OA提供的数据管理中心,可以让用户通过配置的形式完成对数据的汇总,统计和数据分组展现,查询和搜索数据形成列表数据展现。视图可以用于展现,用于选择以及用于统计

results matching ""

    No results matching ""