数据库中间表(推荐)

针对三方异构系统与COP组织人员数据结构差异较大场景,COP开放数据库中间表,三方异构系统按要求将组织数据写入中间表后,COP重新组装完成组织同步模式。

1、概述

针对三方异构系统与COP组织人员数据结构差异较大场景,COP开放数据库中间表,三方异构系统按要求将组织数据写入中间表后,COP重新组装后完成组织同步模式。

2、优缺点

a. 优点

i. 集成压力小;

ii. 对数据质量要求低;

ⅲ.问题跟踪,问题定位速度快

b. 缺点

i. 无

3、操作步骤

3.1、开放OpenAPI模式(推荐)

序号 步骤名称 责任方 使用场景
1 开放OpenAPI 致远 必须,提供组织数据写入OpenAPI和调用示例
2 新建集成应用,获取集成应用ID 致远 必须,获取集成应用ID,接口必须入参
3 启用API 致远 必须,只有启用API,才能分配授权
4 新建接入应用 致远 必须,分配授权APPKey和AppSecret
5 查看AppKey和AppSecret 致远 必须,接口鉴权使用
6 API授权 致远 必须,未启用时,接口调用直接报错
7 启用接入应用 致远 必须,未启用时,接口调用直接报错
8 选择同步模式 致远 必须,选择中间表模式
9 配置同步周期 致远 必须,配置数据处理周期
10 配置字段映射 致远 必须,字段映射、默认值、过滤条件等
11 调用接口写入数据 三方异构系统 必须,三方异构系统负责写入数据到中间表
12 查看日志 致远 非必须,监控过程数据

3.2、直接写入数据库模式

序号 步骤名称 责任方 使用场景
1 提供数据库连接信息和库表结构 致远 必须,
2 新建集成应用,获取集成应用ID 致远 必须,获取集成应用ID,接口必须入参
3 选择同步模式 致远 必须,选择中间表模式
4 配置同步周期 致远 必须,配置数据处理周期
5 配置字段映射 致远 必须,字段映射、默认值、过滤条件等
6 连接数据库写入数据 三方异构系统 必须,三方异构系统负责写入数据到中间表
7 查看日志 致远 非必须,监控过程数据

4、集成配置步骤

4.1、开放OpenAPI模式(推荐)

4.1.1、开放OpenAPI

参照接口清单

4.1.2、新建集成应用,获取集成应用ID

1720595899626

1720595936814

4.1.3、启用API

1720596032390

4.1.4、新建接入应用

1720596066425

4.1.5、查看AppKey和AppSecret

1720596102771

4.1.6、API授权

1720596150002

4.1.7、启用接入应用

1720596170496

4.1.8、选择同步模式

1720596695013

4.1.9、内容配置

1720596811554

1720596874359

4.1.10、配置同步周期

1720596969443

4.1.11、调用接口写入数据

参考接口清单调用接口处理

4.1.12、查看日志

1720597917440

1720597926133

4.2、直接写入数据库模式

4.2.1、提供数据库连接信息和库表结构

请参照物理表接口定义

4.2.2、新建集成应用,获取集成应用ID

1720595899626

1720595936814

4.2.3、选择同步模式

1720596695013

4.2.4、配置同步内容

1720596811554

1720596874359

4.2.5、配置同步周期

1720596969443

5、接口清单

4.1、接口鉴权

4.1.1、请求头(Header)

参数名称 是否必填 参数说明
app-key true 应用的唯一标识,创建接入应用后生成,可在应用基础信息页面获得。
示例:d43b0b442cf34076a2c4af6bb8928afb
sign-type true 固定值:MD5
sign true 签名,字符串“AppSecret+请求体的JSON字符串+AppSecret”的MD5值(MD5值忽略大小写)
AppSecret,为应用的秘钥,创建接入应用后生成,可在应用基础信息页面获得。
示例:154fa5bc7e294deda68a15559b07c845请求体的JSON字符串,
需要将请求体中的请求参数转换为JSON字符串。
Accept-Language false 语种:用以设置开放平台OpenAPI运行时上下文的语种参数。
枚举项可选值列表:zh-CN(简体中文),
zh-TW(繁体中文),
en(英文),
其他枚举项请参照平台语种列表。

4.1.2、签名示例(sign)

String secret = "154fa5bc7e294deda68a15559b07c845";
String body = "{"name": "张三", "age": 35, "company": {"name": "致远", "address": "北京"}";
String sign = Md5(secret + body + secret); // 结果是 01a8795a7fe6dda23aaec40de3d301b7;

4.2、批量插入组织中间表(机构/部门)

请求地址:

【接口请求地址前缀】/cip-connector/middle-table/unit-create

请求参数

参数名称 父节点 是否必填 参数类型 参数描述
requestId true string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp true int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl false string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
data true UnitInfoReqDto 请求参数数据
linkerId data true int64 集成应用ID
data data true array[UnitInfoDto] 数据列表
code data true string 编码
name data true string 组织名称
parentCode data true string 父组织code
shortName data false string 简称
type data false enum 类型。枚举项可选值列表:
INSTITUTION(机构),
DEPARTMENT(部门),
thirdId data false string 第三方组织id
enable data false boolean 是否启用
thirdUpdateTime data true date 第三方数据最新时间
sortId data false int32 排序号
str1 data false string 扩展字段1
str2 data false string 扩展字段2
str3 data false string 扩展字段3
str4 data false string 扩展字段4
str5 data false string 扩展字段5
str6 data false string 扩展字段6
str7 data false string 扩展字段7
str8 data false string 扩展字段8
str9 data false string 扩展字段9
str10 data false string 扩展字段10

请求示例

{
  "data": {
    "data": [
      {
        "code": "100101",
        "thirdId": "100101",
        "type": "INSTITUTION",
        "str7": "",
        "str8": "",
        "str5": "",
        "str6": "",
        "str3": "",
        "parentCode": "group",
        "str4": "",
        "enable": "true",
        "sortId": 1,
        "str1": "",
        "str2": "",
        "name": "API导入致远",
        "str10": "",
        "shortName": "API导入致远",
        "thirdUpdateTime": "2024-01-01",
        "str9": ""
      }
    ],
    "linkerId": "-4511464491497948501"
  },
  "requestId": "3799345662156838701",
  "notifyUrl": "",
  "timestamp": 1720592508046
}

返回参数

参数名称 父节点 参数类型 参数描述
data SingleData 返回值数据
content data void 数据对象
status int32 状态
code string 错误码
message string 返回信息

返回示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": null
}

4.3、批量插入岗位中间表

请求地址:

【接口请求地址前缀】/cip-connector/middle-table/post-create

请求参数

参数名称 父节点 是否必填 参数类型 参数描述
requestId true string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp true int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl false string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
data true PostInfoReqDto 请求参数数据
linkerId data true int64 集成应用ID
data data true array[PostInfoDto] 数据列表
code data true string 编码
name data true string 名称
unitCode data true string 组织code
thirdId data false string 第三方id
type data false string 岗位分类枚举值code
category data false enum 岗位性质。枚举项可选值列表:
NONE(空),
BENCH_MARK(基准岗),
SELF_BUILT(自用岗),
enable data false boolean 是否启用
thirdUpdateTime data true date 第三方数据最新时间
sortId data false int32 排序号

请求示例

{
  "data": {
    "data": [
      {
        "code": "001",
        "thirdId": "12345",
        "enable": "true",
        "sortId": 1,
        "unitCode": "100101",
        "name": "P0",
        "type": "1",
        "category": "BENCH_MARK",
        "thirdUpdateTime": "2024-01-01"
      }
    ],
    "linkerId": "-4511464491497948501"
  },
  "requestId": "-4579930924623847185",
  "notifyUrl": "",
  "timestamp": 1720592507597
}

返回参数

参数名称 父节点 参数类型 参数描述
data SingleData 返回值数据
content data void 数据对象
status int32 状态
code string 错误码
message string 返回信息

返回示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": null
}

4.4、批量插入职级中间表

请求地址:

【接口请求地址前缀】/cip-connector/middle-table/level-create

请求参数

参数名称 父节点 是否必填 参数类型 参数描述
requestId true string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp true int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl false string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
data true LevelInfoReqDto 请求参数数据
linkerId data true int64 集成应用ID
data data true array[LevelInfoDto] 数据列表
code data true string 编码
name data true string 名称
thirdId data false string 第三方id
enable data false boolean 是否启用
thirdUpdateTime data true date 第三方数据最新时间
sortId data false int32 排序号(默认:1)

请求示例

{
  "data": {
    "data": [
      {
        "code": "001",
        "thirdId": "12345",
        "enable": "true",
        "sortId": 1,
        "name": "P0",
        "thirdUpdateTime": "2024-01-01"
      }
    ],
    "linkerId": "158933225308768072"
  },
  "requestId": "-395422794033167315",
  "notifyUrl": "",
  "timestamp": 1720592508081
}

返回参数

参数名称 父节点 参数类型 参数描述
data SingleData 返回值数据
content data void 数据对象
status int32 状态
code string 错误码
message string 返回信息

返回示例

{
  "code": "200",
  "data": {
    "content": ""
  },
  "message": "成功",
  "status": "FRONT"
}

4.5、批量插入人员中间表

请求地址:

【接口请求地址前缀】/cip-connector/middle-table/member-create

请求参数

参数名称 父节点 是否必填 参数类型 参数描述
requestId true string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp true int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl false string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
data true MemberInfoReqDto 请求参数数据
linkerId data true int64 集成应用ID
data data true array[MemberInfoDto] 数据列表
code data true string 编码
name data true string 名称
thirdId data false string 第三方id
email data false string 邮箱
phoneNumber data false string 手机
gender data false enum 性别。枚举项可选值列表:
NONE(空),
MALE(男),
FEMALE(女),
UN_KNOW(未知),
unitCode data true string 组织code
thirdJobId data false string 第三方任职id
main data false boolean 是否主岗
postCode data false string 岗位code
levelCode data false string 职级code
effectiveTime data false date 生效日期
invalidTime data false date 失效日期
enable data true boolean 是否启用
thirdUpdateTime data true date 第三方数据最新时间
sortId data false int32 排序号(默认:1)
str1 data false string 扩展字段1
str2 data false string 扩展字段2
str3 data false string 扩展字段3
str4 data false string 扩展字段4
str5 data false string 扩展字段5
str6 data false string 扩展字段6
str7 data false string 扩展字段7
str8 data false string 扩展字段8
str9 data false string 扩展字段9
str10 data false string 扩展字段10

请求示例

{
  "data": {
    "data": [
      {
        "code": "001",
        "gender": "MALE",
        "effectiveTime": "2023-12-31 00:00:00",
        "main": "true",
        "invalidTime": "9999-12-31 00:00:00",
        "str7": "aaa",
        "levelCode": "001",
        "str8": "aaa",
        "str5": "aaa",
        "str6": "aaa",
        "str3": "aaa",
        "str4": "aaa",
        "enable": "true",
        "sortId": 1,
        "str1": "aaa",
        "unitCode": "seeyon",
        "str2": "aaa",
        "str10": "aaa",
        "email": "pan@163.com",
        "thirdUpdateTime": "2024-01-01",
        "str9": "aaa",
        "thirdId": "12345",
        "thirdJobId": "12345456",
        "phoneNumber": "1345668900",
        "name": "P0",
        "postCode": "defaultCode"
      }
    ],
    "linkerId": "158933225308768072"
  },
  "requestId": "1121213206799116311",
  "notifyUrl": "",
  "timestamp": 1720592507997
}

返回参数

参数名称 父节点 参数类型 参数描述
data SingleData 返回值数据
content data void 数据对象
status int32 状态
code string 错误码
message string 返回信息

返回示例

{
  "code": "200",
  "data": {
    "content": ""
  },
  "message": "成功",
  "status": "FRONT"
}

4.6、确认全量同步完毕(必须)

说明:

全量模式下,每次全量数据写入中间表后,必须调用当前接口,否则即使满足集成平台配置的定时执行时间,也不会执行同步

请求地址:

【接口请求地址前缀】/cip-connector/middle-table/sync-finish

请求参数

参数名称 父节点 是否必填 参数类型 参数描述
requestId true string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp true int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl false string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
data true int64 集成应用ID

请求示例

{
  "data": "-4511464491497948501",
  "requestId": "-4875171919230719752",
  "notifyUrl": "",
  "timestamp": 1720592508031
}

返回参数

参数名称 父节点 参数类型 参数描述
data SingleData 返回值数据
content data string 数据对象
status int32 状态
code string 错误码
message string 返回信息

返回示例

{
  "code": "200",
  "data": {
    "content": ""
  },
  "message": "成功",
  "status": "FRONT"
}

6、物理表结构

注意:库名称:cip-connector

6.1、机构/部门

CREATE TABLE `cip_sync_unit` (
  `id` bigint(20) NOT NULL COMMENT '主键',
  `tenant_id` bigint(20) NOT NULL COMMENT '租户ID',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '修改时间',
  `version` smallint(6) NOT NULL COMMENT '版本号',
  `linker_id` bigint(20) NOT NULL COMMENT '连接器ID',
  `code` varchar(100) DEFAULT NULL COMMENT '组织编号',
  `name` varchar(255) DEFAULT NULL COMMENT '组织名称',
  `short_name` varchar(255)  DEFAULT NULL COMMENT '简称',
  `type` smallint  NOT NULL COMMENT '类型(机构=1,部门=2)',
  `parent_code` varchar(100)  DEFAULT NULL COMMENT '父组织code',
  `third_id` varchar(100) DEFAULT NULL COMMENT '组织id',
  `is_enable` tinyint(1)  NOT NULL COMMENT '是否启用(1-启用,0-停用)',
  `third_update_time` datetime NOT NULL COMMENT '第三方数据最新时间',
  `status` smallint  NOT NULL DEFAULT 0 COMMENT '同步状态(不处理=-1,未处理=0,失败=1,成功=2)',
  `retry` smallint NOT NULL DEFAULT 0 COMMENT '重试次数',
  `batch` varchar(20) DEFAULT NULL COMMENT '批次号',
  `sort_id` int(11) NOT NULL DEFAULT 1 COMMENT '排序号',
  `v8_id` bigint(20) NOT NULL DEFAULT -1 COMMENT 'V8ID',
  `str1` varchar(255)  DEFAULT NULL COMMENT '扩展字段1',
  `str2` varchar(255)  DEFAULT NULL COMMENT '扩展字段2',
  `str3` varchar(255)  DEFAULT NULL COMMENT '扩展字段3',
  `str4` varchar(255)  DEFAULT NULL COMMENT '扩展字段4',
  `str5` varchar(255)  DEFAULT NULL COMMENT '扩展字段5',
  `str6` varchar(255)  DEFAULT NULL COMMENT '扩展字段6',
  `str7` varchar(255)  DEFAULT NULL COMMENT '扩展字段7',
  `str8` varchar(255)  DEFAULT NULL COMMENT '扩展字段8',
  `str9` varchar(255)  DEFAULT NULL COMMENT '扩展字段9',
  `str10` varchar(255)  DEFAULT NULL COMMENT '扩展字段10',
  `msg` longtext  DEFAULT NULL COMMENT '异常信息',
  PRIMARY KEY (`id`)
) COMMENT='组织同步组织中间表';

6.2、职级

CREATE TABLE `cip_sync_level` (
  `id` bigint(20) NOT NULL COMMENT '主键',
  `tenant_id` bigint(20) NOT NULL COMMENT '租户ID',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '修改时间',
  `version` smallint(6) NOT NULL COMMENT '版本号',
  `linker_id` bigint(20) NOT NULL COMMENT '连接器ID',
  `code` varchar(50) DEFAULT NULL COMMENT '职级编号',
  `name` varchar(100) DEFAULT NULL COMMENT '职级名称',
  `third_id` varchar(100) DEFAULT NULL COMMENT '职级id',
  `is_enable` tinyint(1)  NOT NULL COMMENT '是否启用(1-启用,0-停用)',
  `third_update_time` datetime NOT NULL COMMENT '第三方数据最新时间',
  `status` smallint NOT NULL DEFAULT 0 COMMENT '同步状态(不处理=-1,未处理=0,失败=1,成功=2)',
  `retry` smallint NOT NULL DEFAULT 0 COMMENT '重试次数',
  `batch` varchar(20) DEFAULT NULL COMMENT '批次号',
  `sort_id` int(11) NOT NULL DEFAULT 1 COMMENT '排序号',
  `v8_id` bigint(20) NOT NULL DEFAULT -1 COMMENT 'V8ID',
  `msg` longtext  DEFAULT NULL COMMENT '异常信息',
  PRIMARY KEY (`id`)
) COMMENT='组织同步职级中间表';

6.3、岗位

CREATE TABLE `cip_sync_post` (
  `id` bigint(20) NOT NULL COMMENT '主键',
  `tenant_id` bigint(20) NOT NULL COMMENT '租户ID',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '修改时间',
  `version` smallint(6) NOT NULL COMMENT '版本号',
  `linker_id` bigint(20) NOT NULL COMMENT '连接器ID',
  `code` varchar(50) DEFAULT NULL COMMENT '岗位编号',
  `name` varchar(100) DEFAULT NULL COMMENT '岗位名称',
  `unit_code` varchar(100) DEFAULT NULL COMMENT '组织code',
  `type` varchar(100) DEFAULT NULL COMMENT '岗位分类枚举值code',
  `category` smallint NOT NULL DEFAULT 0 COMMENT '岗位性质(基准岗=0,自用岗=1)',
  `third_id` varchar(100) DEFAULT NULL COMMENT '岗位id',
  `is_enable` tinyint(1)  NOT NULL COMMENT '是否启用(1-启用,0-停用)',
  `third_update_time` datetime NOT NULL COMMENT '第三方数据最新时间',
  `status` smallint NOT NULL DEFAULT 0 COMMENT '同步状态(不处理=-1,未处理=0,失败=1,成功=2)',
  `retry` smallint NOT NULL DEFAULT 0 COMMENT '重试次数',
  `batch` varchar(20) DEFAULT NULL COMMENT '批次号',
  `sort_id` int(11) NOT NULL DEFAULT 1 COMMENT '排序号',
  `v8_id` bigint(20) NOT NULL DEFAULT -1 COMMENT 'V8ID',
  `msg` longtext  DEFAULT NULL COMMENT '异常信息',
  PRIMARY KEY (`id`)
) COMMENT='组织同步岗位中间表';

6.4、人员&任职

CREATE TABLE `cip_sync_member` (
  `id` bigint(20) NOT NULL COMMENT '主键',
  `tenant_id` bigint(20) NOT NULL COMMENT '租户ID',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '修改时间',
  `version` smallint(6) NOT NULL COMMENT '版本号',
  `linker_id` bigint(20) NOT NULL COMMENT '连接器ID',
  `code` varchar(50) DEFAULT NULL COMMENT '工号',
  `name` varchar(50) DEFAULT NULL COMMENT '姓名',
  `third_id` varchar(100) DEFAULT NULL COMMENT '第三方人员id',
  `gender` smallint NOT NULL DEFAULT 0 COMMENT '性别(男=0,女=1)',
  `email` varchar(255) DEFAULT NULL COMMENT '邮箱',
  `phone_number` varchar(20) DEFAULT NULL COMMENT '手机号码',
  `unit_code` varchar(100) DEFAULT NULL COMMENT '组织code',
  `third_job_id` varchar(100) DEFAULT NULL COMMENT '第三方任职id',
  `is_main` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否主岗(主岗=1,副岗=0)',
  `post_code` varchar(50) DEFAULT NULL COMMENT '岗位code',
  `level_code` varchar(50) DEFAULT NULL COMMENT '职级code',
  `effective_time` datetime NOT NULL DEFAULT '2024-01-01' COMMENT '生效日期',
  `invalid_time` datetime NOT NULL DEFAULT '9998-12-31' COMMENT '失效日期',
  `is_enable` tinyint(1)  NOT NULL COMMENT '是否启用(1-启用,0-停用)',
  `third_update_time` datetime NOT NULL COMMENT '第三方数据最新时间',
  `status` smallint NOT NULL DEFAULT 0 COMMENT '同步状态(不处理=-1,未处理=0,失败=1,成功=2)',
  `retry` smallint NOT NULL DEFAULT 0 COMMENT '重试次数',
  `batch` varchar(20) DEFAULT NULL COMMENT '批次号',
  `sort_id` int(11) NOT NULL DEFAULT 1 COMMENT '排序号',
  `v8_id` bigint(20) NOT NULL DEFAULT -1 COMMENT 'V8ID',
  `str1` varchar(255)  DEFAULT NULL COMMENT '扩展字段1',
  `str2` varchar(255)  DEFAULT NULL COMMENT '扩展字段2',
  `str3` varchar(255)  DEFAULT NULL COMMENT '扩展字段3',
  `str4` varchar(255)  DEFAULT NULL COMMENT '扩展字段4',
  `str5` varchar(255)  DEFAULT NULL COMMENT '扩展字段5',
  `str6` varchar(255)  DEFAULT NULL COMMENT '扩展字段6',
  `str7` varchar(255)  DEFAULT NULL COMMENT '扩展字段7',
  `str8` varchar(255)  DEFAULT NULL COMMENT '扩展字段8',
  `str9` varchar(255)  DEFAULT NULL COMMENT '扩展字段9',
  `str10` varchar(255)  DEFAULT NULL COMMENT '扩展字段10',
  `msg` longtext  DEFAULT NULL COMMENT '异常信息',
  PRIMARY KEY (`id`)
) COMMENT='组织同步人员中间表';

7、注意事项

7.1、更新标识【重重重】

选择OpenAPI模式时,为了防止同一批次数据全部写入前,定时处理任务开始执行,造成数据不完整,请务必再同一批次数据写入完成后调用【全量同步完毕】接口,更新批次同步完成标识。

7.2、扩展字段定义

1720595133347

7.3、集成应用ID

1720594988748

7.4、开放OpenAPI

如需要限制访问IP、限流控制等高级设计,请参考集成开发-开放平台-接入应用配置说明

7.5、手工同步

如果同步频率配置的为手工同步,请在调用OpenAPI写入数据,调用【全部同步完毕】接口后,手工点击执行同步,否则数据不会再日志表中执行同步。