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

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-05-14
O2OA云笔记提供了一个给员工记录工作笔记,在线协同编辑文档,白板演示的工具,该功能可以将记录下来的文档信息件实时同步到云端,用户随时在多个设备上进行查看、编辑
开发知识-中标麒麟安装达梦数据库(DM8)
2021-02-07
环境说明操作系统版本:NeoKylinLinuxAdvancedServerreleaseV7Update6(Chromium)1.前期准备工作1.1数据库下载
开发知识-中标麒麟安装人大金仓详细步骤
2021-03-24
环境说明操作系统版本:NeoKylinLinuxAdvancedServerreleaseV7Update6(Chromium)1.前期准备工作1.1数据库下载
密码管理-普通用户初始化密码设置
2021-02-25
O2OA可以配置新用户初始化密码的规则。本篇主要介绍如何配置新用户初始化密码的规则。
表单-数据模板的配置方法
2022-01-21
数据模板可以用来让用户在使用层,自动进行添加整个数据表格。具体的使用方法如下:1.从表单中拖动数据表格:组件的标识是:datatemplate2.在数据模板中制
移动办公-将平台集成到华为WeLink
2021-02-25
O2OA平台拥有配套的原生开发的安卓和IOS移动APP,可以以WeLink企业内部轻应用的方式集成,同步WeLink的通讯录作为本地组织人员架构,并且可以将待办
常见问题-服务器错误:can not decrypt token
2021-02-07
cannotdecrypttoken服务端无法解开token,可能的原因是,xadmin的密码刚刚修改过而前台没有刷新页面.重新刷新前台页面即可,app端需要重
流程设计-自定义提交功能
2021-08-27
@流程开发@流程引擎@流程设计@工作流@提交效果@自定提交@O2OA @自定义提交界面当默认提交界面不能满足用户时候,可以使用本功能进行提交界面的定制。自定义提
源码调试-后端Java代码的远程调试
2021-04-26
O2OA是真正全代码开源的应用开发平台,开发者可以直接使用从github或者gitee上clone的源码编译成安卓客户端,代码可以修改,安全可靠,无限制。O2O
会议申请使用手册
2021-02-19
O2OA会议申请是使用平台流程管理能力开发的一个申请流程。员工的会议申请通过审批之后,可以同步到会议管理系统,由会议管理系统进行展现,提醒和跟踪。可以清晰地在会

results matching ""

    No results matching ""