这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

平台实施

1 - 门户及工作台

portal and workbench

1.1 - 登陆前门户

登录前门户总体说明

定位:企业级登录前门户

价值:企业内外部协同,提供统一对外服务

场景

  1. 集团统一登录前门户;
  2. 集团各个企业有独立登录前门户
  3. 集团提供集团所有人员登录前门户,部分机构提供本机构独立登录前门户

配置登录前门户

登录前门户操作配置步骤:

descript

租户管理

控制租户是否可启用登录管理,可独立控制单个租户的登录管理;

操作账号:system-admin

多租户管理平台的登录管理入口:登录系统管理员,打开租户管理,打开租户列表中的【详情】

descript

操作步骤

① 租户需要有独立的登录管理,则打开【是否启用独立域名】开关

descript

② 打开后需要输入独立子域名

descript

2.2登录前门户设置

控制本机构或者本环境是否启用登录前门户 ,可按照3个层级来控制,控制账号及控制界面如下所示:

  1. 多租户环境:不支持,system-admin
  2. 租户级登录前门户:根机构管理员
  3. 机构级登录前门户:机构管理员/门户管理员

操作入口:登录管理 -> 设置

操作逻辑及界面

【启用登录前门户】开关控制是否启用登录前门户、及是否可以设计登录前门户;

  • 打开:左侧菜单中显示【登录前门户】
  • 关闭:左侧菜单中不显示【登录前门户】

根机构设置界面

打开【启用登录前门户】后,显示根机构登录前门户访问地址:租户域名+/main/pre/,比如:visitor04.test.seeyonv8.com/main/pre

descript

子机构设置界面

打开【启用登录前门户】后,显示登录前门户访问地址:租户域名+/main/pre/机构标识

descript

关闭登录前门户

descript

登录前门户设计

门户设计师搭建登录前门户页面呈现效果

操作用户:门户管理员/机构管理员

操作步骤:

①配置基本信息:

门户名称:修改登录前门户的名称,比如改为:致远互联网上服务大厅

管理授权:可以进入后台设计登录前门户的人员

门户图标:可以修改该门户的图标

descript

②设计门户:门户搭建与普通门户搭建一致,详情见【腾讯文档】门户操作手册门户操作手册

③设计空间:空间搭建与普通门户搭建一致,空间搭建详情见门户操作手册

特殊说明

  • 备选栏目:仅有【guest】授权的栏目
  • 登录前门户空间不进入统一的【空间管理】,仅在登录前门户的【PC空间】【移动空间】查看

应用及内容公开

3.1应用设计

设计应用请按低代码平台操作手册进行搭建,详细说明见低代码平台操作手册

3.1.1应用数据设计

其中,应用内需要展示在登录前门户的数据,需要配置一个选人控件,用于授权和权限解析。

descript

3.1.2应用栏目设计

新建栏目

在应用设计器中,创建本应用下的栏目,需要配置:栏目分组、栏目名称、栏目标识、适配终端、选择模板,配置基本信息后,保存进入设计器

栏目设计

①页面设计

栏目页面内容设计与低代码平台页面设计一致,配置请按照低代码平台操作手册中的【页面设计】,详情说明见低代码平台操作手册

descript

②栏目更多页面配置

配置用户在前端访问栏目时,点击更多打开的页面

入口:选择页面空白区域,选择【事件】

descript

配置页面

点击更多时,打开的目标页面

descript

授权解析和数据过滤配置

通过后端微流程做选人控件的授权人员解析逻辑

descript

通过前端微流程调用后端微流程,并将过滤好的数据写入到页面中。

descript

页面事件调用前端微流程,实现页面默认加载即执行。

descript

发布应用

应用发布后,将栏目注册运行态的栏目列表中,可在栏目选择器中被用户选择到

descript

应用发布后,应用栏目支持授权,并且授权可包含【guest】用户,如果被授权给【guest】用户,则可以在登录前空间设计器的栏目选择被选择到

前端用户

在浏览器中输入访问地址:【设置】页面中显示的登录前门户的访问地址,比如:https://visitor04.test.seeyonv8.com/main/pre/default

后置条件:点击【登录】,输入正确用户名和密码,打开登录后首页。

打开登录前门户页面效果:

descript

1.2 - 门户

整体概述

门户作为组织数字化办公的统一入口,通过门户引擎、配置与呈现能力,结合集成连接,提供多组织/多场景/多角色/多端/多业务门户,形成组织/团/个人的工作台

  • 门户/空间设计器:在门户模板基础上快速搭建主题门户、业务门户、信息门户等
  • 连接应用中心,在门户的菜单、磁贴、导航中统一呈现,成为统一工作的应用入口
  • 集成第三方系统、待办中心、消息中心,形成组织级工作的待办和消息入口
  • 打造多层级、多角色、多端门户,成为组织、团队、个人业务提供信息汇聚
  • 支持个性化配置,实现组织、业务、角色、用户层面的不同视觉效果

角色介绍

角色 介绍
门户管理员 被授权用户可进入系统后台维护【门户管理】模块中的数据,包括:门户管理、空间管理、第三方栏目管理、用户定制管理等
空间管理员 被授权用户可以进入后台维护有管理授权的空间
前端用户 最终的使用系统的用户,可以在前端页面个性化修改允许本用户修改的、模板、菜单、导航、空间、栏目等,将内容个性化修改为围绕当前用户,最终达到千人千面的呈现效果。

术语介绍

术语 解释说明
门户 在Web端浏览器/移动端网页中打开的一个完整的页面叫门户,包含头部区、左侧区、右侧区、底部区和内容区
空间 呈现在门户的内容区,将承载应用或者第三方系统的信息的多个栏目通过一定布局结构聚合而成的页面
栏目 包含某一个主题或者是业务的关键信息,信息的最小单位,每一个栏目是一个信息片段,每个信息片段来源于一个应用或者系统
第三方栏目 通过第三方系统接口制作的栏目叫第三方栏目
用户定制管理 后台管理端为一个人、几个人、一小部分人(组、部门、岗位)用户定制首页门户效果图,包含门户模板、个人空间、空间设置、菜单导航设置等内容

门户介绍

门户作为用户访问组织信息系统的最小单位,功能结构图,如下图所示:

descript

门户是将不同应用、不同系统、不同类型的数据汇聚在一起,呈现出以“业务”为中心的内容汇聚,其中包含门户、空间、栏目等,门户结构如下图所示。

descript

门户页面结构详解如下图所示:

descript

管理员配置门户的步骤

管理员配置门户操作步骤

descript

前端用户个性化步骤

descript

登录前门户配置步骤

descript

角色授权

由于只有机构管理员和门户管理员才能进入后台管理门户,尤其初次配置时,需要将机构管员的角色权限授予终端用户,终端用户可切换到后台管理端做门户管理,角色授权详情请见用户中心

登录页搭建关键步骤

登录页设计器提供集团定制登录页的能力,基于模板,修改模板中部分元素的属性等快速搭建登录页的最终效果。

操作用户:超级管理员system-admin

登录页目标场景:配置企业特色的登录页效果,包含LOGO、主题颜色等

包含终端:Web端登录页、桌面端登录页、移动登录页

配置步骤

序号 步骤 步骤说明 适配端
1 切换模板 选择需要使用的模板 仅PC Web端
2 修改属性 修改模板中的元素属性:LOGO 修改背景图 三端:PC Web端、桌面端、移动端

门户搭建关键步骤

在组织门户及应用不能满足组织呈现业务的需求,且需要将各个应用数据围绕某一主题、业务、专题重新组合时,可以通过门户设计器的配置能力,快速的搭建业务门户、主题门户、专题门户、信息门户等。门户设计器提供配置门户的布局、门户元素(LOGO、名称、菜单、导航等)、空间的布局、栏目外框、栏目数据内容和栏目显示样式等。

序号 步骤 步骤说明
1 创建门户 定义门户的基本信息,其中重要属性说明: a. 管理授权: 有进入后台管理端维护门户的用户 b. 使用授权:有访问门户的权限前端用户 注:首页门户是系统预置门户,门户名称不可修改
2 设计门户页面 基于模板配置门户 进入门户设计器,切换模板、修改主题、调整门户布局和配置元素等
3 创建空间 定义空间页面的的基本信息,管理授权与使用授权与门户一样 注:个人空间、单位空间、集团空间是系统预置的三个空间,只可启停用空间的状态,不可修改空间名称
4 设计空间页面 基于空间模板搭建空间页面 进入空间设计器,通过切换模板,基于模板修改空间布局、栏目、栏目外框等配置能力配置空间 支持门户空间一体化设计器能力,

统一集中管控和分层管控

统一集中集中管控和分层管控只对首页门户有效,其他门户是由创建机构统一管理,其他机构只有使用权限。

序号 步骤 步骤说明
1 配置属性【允许下级机构自定义】 控制首页门户的管理效果 实现分层管控和统一集中管控的首页门户效果
2 确认下发 将当前首页门户和空间的数据同步给下级机构: 空间:首页门户下的空间,且使用范围为:全部下级机构或者本机构及全部下级机构

用户定制管理关键步骤

给管理员提供为部分终端用户定制个性化首页门户和个人空间,可选使用范围包含为一个、多个用户、岗位、部门化和系统组。配置步骤如下表:

序号 步骤 步骤说明
1 新建方案 创建用户定制方案,定义方案的基本信息,其中: 使用范围:可以选择多人、岗位、组、部门 影响被授权对象的首页门户效果
2 菜单设置 配置前端用户显示的菜单内容和排序
3 导航设置 配置前端用户在前端显示的菜单内容和排序
4 门户设置 可进入进入首页的门户设计器中,配置首页使用的模板、元素、布局等。当方案中不仅需要修改菜单和导航,且需要切换模板及修改模板中的元素和布局时使用门户设置功能
5 个人空间设置 可进入空间设计器设置个人空间的布局、栏目内容和样式等

前端用户个性化门户的步骤

descript

管理员配置的首页门户及空间的呈现内容及效果不能满足用户的工作和审美需求,并且组织机构允许前端用户个性化修改首页门户时,前端用户可以通过系统为前端用户提供的修改模板、导航、菜单和进入设计器修改样式等个性化配置的能力,达到千人千面的首页门户呈现效果。

序号 步骤 步骤说明
1 切换模板 注:受【允许前端个性化模板】开关控制 打开:可切换模板
2 导航设置 注:受【允许前端个性化菜单和导航】开关控制 打开:可调整导航中门户和空间的排序
3 菜单设置 注:受【允许前端个性化菜单和导航】开关控制 打开:可调整菜单排序
4 添加/编辑/删除栏目 注:受【前端个性化】开关控制 添加栏目:可以为当前栏目添加其他栏目生成组合栏目 编辑栏目:用户可以编辑空间中栏目的基本信息及业务属性信息 删除栏目:删除当前栏目
5 编辑组合栏目 注:受【前端个性化】开关控制 编辑组合栏目的修改样式和样式的属性
6 门户设计 进入门户设计器修改模板、门户的元素和布局等 注:LOGO不能修改
8 空间设计 可进入空间设计器中,可修改布局、栏目和栏目样式信息

管理员配置门户的关键步骤介绍

角色授权

使用角色授权,将某一个用户或多个用户设置为机构管理员,被授权用户可进入后台管理当前机构的后台所有功能,包括门户管理权限,因此需要将门户管理人员设置为机构管理员,详细授权管理请查看用户中心

操作步骤:集团管理员org-admin进入【组织模型】-【选择根机构】,点击【设置管理员】,进行机构管理员的设置。

descript

设计登录页

集团可以根据当前业务、宣传、价值传递和披露重大事项等需求,设置登录页的背景图、LOGO、登录框的位置等信息。

前端效果图

1722509704100

1722509681895

1722509657701

操作用户:超级管理员 system-admin

操作步骤

1、在【门户管理】,选择 【登录页管理】 进入登录页配置界面

descript

2、设计【登录页-Web端】

选择【登录-Web端】中的【设计】进入Web端登录页设计器

搭建步骤:选择模板->配置元素->修改属性->保存

a. 选择模板

1721979433252

b. 配置元素:从左侧元素区 - 选中元素->拖动到设计页面中 ->再选中元素->在右边修改属性。

1721979572788

配置能力如下表:

属性分类/元素 属性分类 属性名称 作用 目标场景配置
模板 选择模板 可切换不同的模板,快速搭建不同机构、不同场景的登录页 √ - 选择模板三
模板属性 背景图 控制登录页的背景图,可上传一张或者多张 √ - 上传一张图片
适配方式 控制背景图片显示效果
轮播速度 多张背景图片时,每张图片显示的时长,播放到时切换显示下一章图片
背景色 设置背景颜色
LOGO
显示LOGO 控制LOGO的显示和隐藏
上传LOGO 选择LOGO图片来源 √ - 自定义
上传图片 自定义上传LOGO图片 √ - 上传一张LOGO图片
适配方式 控制LOGO图片的显示方式
背景色 控制LOGO元素预期的背景色
宽度 控制LOGO宽度
高度 控制LOGO高度
水平方向 控制LOGO的水平显示位置
垂直方向 控制LOGO的垂直显示位置
登录框 样式 控制登录框的显示位置及整体显示样式
竖版:垂直方向显示登录所有相关信息
横版:水平方向排列显示登录所有相关信息
显示内容 显示内容 控制登录框中部分内容的显隐,比如:登录文本、隐私服务协议、使用其他账号登录
使用其他账号登录 除了平台账号信息登录外,还可以使用其他第三认证系统来做用户统一校验
显示内容 支持配置显示效果:图文、仅文字、仅图标
背景 背景色 控制登录框整体背景色
边框颜色 登录框的背景边框颜色
阴影颜色 登录框的背景阴影显示颜色
阴影样式 登录框的背景阴影显示样式
背景毛玻璃 控制是否显示毛玻璃效果
登录按钮颜色 控制登录按钮的颜色 √ 色值:61B1F2
底部按钮背景色 控制语言切换和找回/设置密码的背景色
尺寸 宽度 宽度显示样式,按照百分比、固定值
尺寸值 宽度尺寸值
高度 高度显示样式,按照百分比、固定值
尺寸值 高度尺寸值
位置 显示位置 位置相对于画布是相对位置还是绝对位置
水平方向 水平方向计算的开始位置
边距值 水平方向的与开始位置的距离值
垂直方向 垂直方向计算的开始位置
边距值 垂直方向的与开始位置的距离值
图片 上传图片 支持多图上传
适配方式 上传的图片在图片元素中的显示方式,支持:填充、自适应、拉伸、平铺
轮播速度 多张图轮播显示的速度,支持:低速、中速、告诉
背景色 图片元素的背景颜色
位置 显示位置 位置相对于画布是相对位置还是绝对位置
水平方向 水平方向计算的开始位置
边距值 水平方向的与开始位置的距离值
垂直方向 垂直方向计算的开始位置
边距值 垂直方向的与开始位置的距离值
客户端 文字大小 控制客户端文字显示大小
文字颜色 控制文字显示颜色
文字交互色 控制文字鼠标悬停或者选中时,文字颜色
背景色 客户端的的背景色
背景交互色 控制文字鼠标悬停或者选中时,背景颜色
边框颜色 边框的颜色
边框交互色 控制文字鼠标悬停或这选中时,选中时边框颜色
位置 显示位置 位置相对于画布是相对位置还是绝对位置
水平方向 水平方向计算的开始位置
边距值 水平方向的与开始位置的距离值
垂直方向 垂直方向计算的开始位置
边距值 垂直方向的与开始位置的距离值
文本 文字内容 控制文字显示的内容
文字大小 控制文字显示的大小
文字颜色 控制文本显示颜色
字体样式 文本显示的样式有:加粗、删除线、下划线、斜体
链接 点击文本时,打开的页面地址
背景外观 背景色 文本元素的背景色
圆角范围 支持整体设置圆角和四个角单独设置圆角
圆角尺寸 文本元素框的圆角大小,支持整体设置和四个角单独奢姿
对齐方式 水平方向 文本内容在元素框中水平方向的显示位置,支持居左、居中、居右
垂直方向 文本内容在元素框中垂直方向的显示位置,支持居上、居中、居下
尺寸 宽度 宽度显示样式,按照百分比、固定值
尺寸值 宽度尺寸值
高度 高度显示样式,按照百分比、固定值
尺寸值 高度尺寸值
位置 显示位置 相对于画布是相对位置还是绝对位置
水平方向 水平方向计算的开始位置
边距值 水平方向的与开始位置的距离值
垂直方向 垂直方向计算的开始位置
边距值 垂直方向的与开始位置的距离值
视频 视频 上传视频入口
适配方式 视频在视频元素中的显示方式,支持:填充、自适应、拉伸、平铺
背景色 视频元素的背景颜色
尺寸 宽度 宽度显示样式,按照百分比、固定值
尺寸值 宽度尺寸值
高度 高度显示样式,按照百分比、固定值
尺寸值 高度尺寸值
位置 显示位置 位置相对于画布是相对位置还是绝对位置
水平方向 水平方向计算的开始位置
边距值 水平方向的与开始位置的距离值
垂直方向 垂直方向计算的开始位置
边距值 垂直方向的与开始位置的距离值

支持配置元素

元素 说明 作用
登录框 登录账号相关配置,比如隐私服务协议、其他账号登录、样式等 满足客户对登录框不同显示样式、登录账号的配置
图片 配置、显示多张图片 可满足客户显示宣传图片,
文本 可以在登录页配置文本信息 满足用户在登录页中显示企业的slog语、价值观、广告语等
视频 可以在登录页中配置显示的视频 可以是企业产品和价值观宣传视频、广告视频等
LOGO 支持配置LOGO图片,可显示本机构或者自定义的LOGO图片 展示企业文化的集团/企业LOGO
客户端 显示客户端下载入口、移动端服务地址的显示入口,且受登录页配置的控制 展示客户端相关信息的入口

3、设计【登录页-桌面端】

操作步骤:进入【登录页管理】菜单页面中,选择【登录-桌面端】,点击【设计】进入下图。

descript

通过配置上图中的红色标记属性 - 上传图片,可达到桌面端登录页的目标效果图。

配置能力:

属性分类 属性名称 作用 目标场景配置
背景
上传图片 控制登录页的背景图,可上传一张或者多张 √ - 上传一张图片
适配方式 控制背景图片的显示效果 √ - 默认选项
轮播速度 控制图片显示时长
背景色 设置背景颜色
LOGO
显示LOGO 控制LOGO的显示和隐藏 √ - 显示
上传LOGO 选择LOGO图片来源 √ - 上传LOGO
上传图片 自定义定义上传LOGO图片
适配方式 控制LOGO图片显示方式
背景色 控制LOGO的背景色
服务和隐私协议 √ - 关闭
使用协议 控制是否需要使用【服务和隐私协议】

4、设计【登录页-移动端】

操作步骤:进入【登录页管理】菜单页面中,选择【登录-手机端】,点击【设计】进入下图。

descript

通过配置上图中的属性(配置无先后顺序),可达到移动端登录页的目标效果图。

属性分类 属性名称 作用 目标场景配置
手机-启动页
高分辨率 上传高分辨率启用页的背景图
适配方式 控制高分辨率背景图片显示效果
中分辨率 上传中分辨率启用页的背景图
适配方式 控制中分辨率启用页背景图片显示效果
背景色 设置背景颜色,未设置背景图时生效
手机-登录页
高分辨率 上传中高分辨率登录页的背景图 √ - 上传图片
适配方式 控制高分辨率登录页的背景图片显示效果
中分辨率 上传中分辨率登录页的背景图
适配方式 控制中分辨率登录页背景图片显示效果
背景色 设置背景颜色,未设置背景图时生效
文字颜色 控制文字的显示效果
自动处理背景 勾选,系统处理登录页背景
服务和隐私协议
使用协议 选择是否使用【服务和隐私协议】 √ - 关闭

门户搭建

提供搭建Web端网页和移动网页的能力,并且支持多门户、多空间业务场景需求,首页门户与子门户的搭建过程基本一致,门户搭建过程主要以首页门户搭建为主,涉及差异的步骤会将两者都进行描述。

场景:首页门户(主门户)- 各个机构的首页门户样式不同,且支持最终用户个性化修改门户和空间、 研发门户(子门户)

操作用户:机构管理员

首页门户Web端效果图

首页门户移动端效果图:

研发门户Web端效果图:

搭建研发业务类门户,门户中呈现的内容都是与研发管理相关,效果图如下:

descript

子门户移动端效果图

descript

新建门户

提供创建多个门户的能力,机构可以根据业务需求创建多个门户。

本步骤是首页门户与其他门户的主要差异点。

首页门户是系统预置的门户,不需要通过新建来生成,且门户名称为【组织门户】不可修改需要,通过配置基本信息实现集团对首页门户的集中统一管控和分层级管控。

研发门户是子门户,须通过新建来创建,因此会将首页门户和研发门户的创建过程都进行描述。

首页门户

操作步骤:用户从前端切换到【后台管理】,选择【后台管理】,【门户管理】模块下的【首页管理】,显示组织门户的基本信息的维护界面。

由于目标场景是分层管控且允许前端用户个性化修改,首页门户的关键基本属性信息配置如下表:

属性分类 属性名称 作用 目标场景配置项
管理授权 设置首页门户的管理人员 被授权用户可进入后台配置门户 注: - 默认机构管理员有该机构下所有门户的管理权限 - 只能选人
个性化设置 允许下级机构自定义 控制各个机构首页门户的呈现效果 不勾选:首页门户集中统一管控 不勾选:各个机构首页门户分层管控或者单独管控 √ - 勾选
允许前端个性化模板 控制前端用户修改首页门户的模板权限 勾选:前端用户可以切换模板及进入门户设计器编辑首页 不勾选:屏蔽前端用户切换模板及进入门户设计器编辑首页 √ - 勾选
允许前端个性化菜单和导航 控制前端用户修改首页门户的菜单导航和空间导航的权限 勾选:前端用户可以设置菜单和导航 不勾选:屏蔽设置菜单和导航入口 √ - 勾选

查询本门户下PC空间

查询本门户下的创建的所有Web端空间

步骤:点击【PC空间】,查询本门户下PC空间,并且可以【新建PC空间】

查询移动端空间

查询本门户下创建的所有移动端空间

步骤:点击【移动空间】,查询本门户下移动空间,并且可以【新建移动空间】

研发门户

操作步骤:【门户管理】-> 【新建】,进入新建门户的基本信息维护的页面。

注:门户管理列表中不包含首页门户,首页门户在首页管理中单独维护。

配置子门户基本信息

配置门户的基本信息,需要输入门户关键信息门户名称、设置门户的管理人员、使用范围和启用端设置。只有有使用权限的用户才能访问门户,未被授权的用户不能访问门户,配置界面如下:

descript

注:启用端设置中只控制门户在PC端和移动端的启用状态,不控制是否可以设计门户。

基本信息的配置清单如下表(只列出与首页门户的差异)****:

属性分类 属性名称 作用 目标场景配置项
基本信息 门户名称 存储到系统中的名称 √ - 研发门户
排序号 控制门户在门户管理列表中的显示顺序,按照升序显示
分类 设置门户所属分类 将门户按照业务做分类管理
使用授权 设置门户使用范围 选人、机构、部门 √ - 选择数字和信息化管理部
启用端设置 启用PC端 - 控制门户在PC的呈现 启用移动端 - 控制门户在PC的呈现 √ 勾选 - 启用PC端 勾选 - 启用移动端

确认后,门户注册成功,可进入门户设计器设计,且门户默认使用第一个模板内容,同时默认创建一个空间(研发项目管理门户空间)。

PC端门户设计器

门户设计器提供PC端和移动端一体化设计能力,提供头部区、左侧区、右侧区和底部区等布局元素实现门户框架搭建能力,LOGO、我的头像、菜单导航、空间导航等元素配置门户需要呈现内容。

设计器提供选择门户模板、调整布局元素、预览效果等能力

支持在设计器中灵活拖拽,调整模板、元素的大小及显示位置等属性信息

实现从设计态到呈现态的所见即所得效果

操作步骤:进入后台管理端【首页管理】中的【设计首页】进入首页门户设计器

PC门户设计器

用于设计Web端门户的页面框架,比如配置Web页面的菜单导航、头部区的样式。除了配置页面内容外,还支持页面的基本操作,如下图和表格所示

descript

设计器的操作:

操作类型 操作说明
历史记录 保存门户一年内的历史版本记录,支持一键恢复到历史版本
预览 支持预览门户页面的最终呈现效果
存为模板 将当前门户页面的内容存储为模板,进入模板库中统一管理
保存 将已设计的内容保存 有使用权限的用户可以在前端看到页面的夏鸥共
恢复默认 将门户内容恢复到模板的默认初始数据
页面缩放 按照当前设计时的电脑屏分辨率作实际页面宽度做缩放 可按照100%、75%、50%、25%的比例呈现

页面配置操作的关键步骤如下:

a. 选择模板

系统模板库提供丰富的预置门户模板,搭建门户时,可在设计器中可切换模板,并且基于门户模板修改元素、属性等,实现快速搭建门户,从而提升搭建门户效率。

基于目标效果图,需切换模板并且修改模板中的属性,页面呈现效果如下图:

注:左侧是备选资源区,右侧是属性区

b. 布局

切换模板后,可基于模板添加、删除、修改页面布局、元素,并且可修改布局和元素的属性,基于目标效果图,将LOGO元素从左侧区删除,再次添加到头部区

操作:将门户布局拖动到设计内容区,页面元素拖动到设计内容区的门户布局中

配置界面如下:

  1. 门户布局

门户布局元素是页面元素的容器,主要用来定义门户的基础结构,且每个门布局只能被添加一次,添加后,可被移除出设计内容区比如是上下结构、左右结构、上左右结构等,主要有以下几种布局:

头部区

头部区是在门户头部的区块容器,添加头部区后,元素可以被添加到门户头部的头部区中,可修改头部区的高度和背景。比如,目标效果图中添加头部区,并且在头部区中添加全文检索元素、文本元素和菜单导航元素

a. 切换样式:

1722218156970

b. 修改样式

1722218236993

底部区

底部区是在门户页面的底部区块容器,添加后,可在页面底部添加页面元素,添加后,可被移除出设计内容区比如首页门户中添加底部区,并且可修改底部区的高度和背景属性。

a. 切换样式

1722218276650

b. 修改样式

1722218312215

左侧区

左侧区是门户页面的右侧区块容器,添加后,可在页面左侧添加页面元素,添加后,可被移除出设计内容区比如首页门户中的左侧区,并且可修改宽度、背景及折叠图标属性。

a. 切换样式

1722218351044

b. 修改样式

1722218380857

右侧区

右侧区是在门户页面的右侧区块容器,添加后,可在页面右侧添加页面元素,添加后,可被移除出设计内容区,与左侧区配置等基本一样,只是呈现位置不一样,比如某些少数页面会添加右侧区,并且在右侧区中添加菜单导航

a. 切换样式

1722218410285

b. 修改样式

1722218435871

内容区

内容区与其他四个区块容器不同,内容区主要是用来承载空间和页面的呈现区域,内容由空间和页面来定义,并且每个门户必须会有一个内容区,内容区不可移除。

descript

  1. 页面元素

页面元素是门户页面的最小内容单位,主要用来呈现页面的公共内容,比如为页面提供导航的空间导航和菜单导航,提供价值宣传的文本元素等,主要有以下元素。

LOGO元素

LOGO元素是显示图片的组件,主要用来显示企业的LOGO图片,可配置图片背景、尺寸、位置,同时也可配置切换兼职单位图标属性,还可以配置是否显示组织名称来控制企业名称的显隐。

显示内容中控制本机构用户是否允许切换其他任职部门,切换身份后,用户在发起表单或者处理待办时,会以当前使用的身份处理业务。

运行效果

支持切换兼职单位及同一单位的多个任职部门

  1. Web端
  2. 桌面端

descript

我的头像

我的头像元素主要用来显示用户的头像图片、岗位、部门和姓名信息,并且提供内容和样式的配置能力,样式配置包括显示方式、头像、文字和显示位置等

descript

在线人数

在线人数主要用来显示当前同一个根机构组织下登录系统的用户数量,通过每一个账号计算一次的方式统计在线人数,除了显示内容外,还可以为配置样式、文字和显示位置等属性

descript

文本

文本是文本显示框,主要用来显示当前门户页面的Slog和标题,可通过文字设置属性来自定义编辑显示的内容,同时刻配置文字的显示颜色和大小,及元素的宽度和高度信息等

descript

系统操作区

系统操作区是首页门户独有的元素主要用来配置系统的操作入口,配置内容比如个人设置、应用中心、设置等,同时时可配置尺寸、位置、文字颜色和图标颜色等

配置显示内容

包含内容:菜单、门户、空间和第三方页面、系统操作(首页个性化、页签设置、后台管理端、退出、)

系统操作功能说明:

  • 首页个性化:前端用户个性化首页入口,包含切换模板、导航设置、菜单设置、更多设置(进入设计器中设计)
  • 后台管理端:有后台功能角色的用户切换后台的入口,比如门户管理员、报表管理员等
  • 退出:退出账号,转为未登录状态
  • 页签设置:控制【打开方式=新开系统页签】的页面在运行时的最终打开方式,使用其他打开方式的页面不受影响
    • 打开:【打开方式=新开系统页签】的页面,运行时使用新开系统页签打开页面
    • 关闭:【打开方式=新开系统页签】的页面,运行时可使用【内容区刷新】/【新开浏览器页签】打开。平台默认使用【内容区刷新】,页面可以个性化适配使用【新开浏览器页签】方式打开,比如:待办详情、打开流程模板、消息详情等

前端显示数据:只显示当前用户有权限的门户管理员已配置数据

天气

用来显示当前用户所在地区的天气信息,包括天气状态图标和温度区间,同时刻配置文字颜色和大小、元素尺寸等属性信息

空间导航

空间导航是一种导航,主要用来显示本门户下的空间和其他门户,系统提供显示样式属性配置,比如选中样式效果、背景色、文字、尺寸等

内容配置:

descript

样式配置:

菜单导航

菜单导航是一种应用菜单显示导航,可配置内容包含门户、本门户下空间、菜单或者应用中心的应用,同时系统提供文字大小、文字颜色和元素尺寸等属性配置能力。

内容配置:支持配置首页和门户空间作为导航内容,配置首页时,前端用户可以点击回到首页

1722217148485

横幅图片

横幅图片是多张图片显示组件,主要用来显示轮播图,系统提供图片配置能力及图片显示配置属性。

图片配置包含:图片上传、底部显示文字、图片链接

descript

全文检索

在门户页面中提供全文检索的入口,系统提供显示样式、图标、显示位置、搜索通道配置,配置如下图所示:

悬浮按钮

为机构提供门户级快捷操作入口,可以打开智能助手、消息助手、链接地址、悬浮面板。支持配置悬浮按钮显示样式、配置操作的显示方向(1个悬浮按钮中,配置多个悬浮操作),及其他样式属性。

操作配置内容:

descript

显示效果:

descript

浮窗元素

为门户提供门户级的浮框,在门户设计器中添加浮框元素,可以在浮框中配置宣传和重要通知公告的图片、文字。显示方式支持固定显示和动态移动显示。

配置内容:

descript

配置显示效果:

descript

新建PC空间

支持为门户创建多个内容空间,使不同岗位、角色的用户可以查看门户下不同空间。创建空间时,需要配置空间的基本信息,首页门户下空间与其他门户下空间的基本信息基本相同及不同点如下表所示:

属性名称 作用/说明 首页门户 其他门户
空间名称 定义空间的名称
所属门户 空间的归属门户
排序号 空间在空间列表中的显示顺序
管理授权 被授权人员,可进入后台维护空间
使用范围 定义空间的访问人员 下拉选框:1. 本机构全员;2. 本机构及下级机构全员;3. 下级机构全员;4. 指定人员 选人
指定范围 指定某一部分人员 只有使用范围选择指定人员时,才显示
使用模板空间 新建的空间是否默认使用门户模板中的空间内容
从模板空间创建 使用当前模板中的模板空间创建空间
前端用户个性化 前端用户是否可以在前端修改空间
空间状态 空间的状态:启用、停用
空间图标 空间显示图标

系统提供3种创建空间的方式:

方式1:进入【首页管理】,【PC空间】,点击右上角的【新建】进入新建本门户下空间页面,空间名称为【首页工作台】。

descript

方式2:在门户设计器中创建空间,点击设计器左上角上的【+】,进入创建空间页面,所属门户默认是当前门户。

descript

注:以上2种方式创建空间,不可修改所属门户

方式3:进入【门户管理】模块下的【空间管理】查询列表页,显示本机构下创建的所有空间,点击右上角的【新建】。

descript

空间基本信息说明如下表所示:

PC空间设计器

空间是栏目的布局和栏目内容的容器,空间设计器是空间页面设计的工具,包含布局配置、栏目外框设计,为空间的最终呈现效果,内容创建空间页面,根据空间页面的呈现效果,分析空间的布局及栏目清单,在空间设计器中搭建布局,再添加栏目,进入空间设计器的方式有2种。

方式1:进入后台【门户管理】,【空间管理】,【设计】/【门户管理/首页管理】,【编辑】门户,【PC空间】,【设计】

方式2:进入后台【门户管理】模块,【空间管理】,【基本信息】,【确定并设计】

空间设计器操作与门户设计器一致,详细见PC门户设计器

单行布局

布局嵌套布局:为增加布局的灵活性,可在单元格(空单元格、已添加有栏目的单元格)中拖动添加布局

单行布局,是布局的最小单位,每行分成24等分,可以按照比例来配置单行布局中单元格大小。可从左侧面板中拖动到设计内容区,鼠标松开位置是布局的显示位置

1722174103703

支持配置内容

属性 说明 作用
布局设置 将一个整行布局拆分成多个单元格,最多分成24个单元格 布局设置
背景图 设置布局的背景图 拆分成多个单元格的单行布局显示为统一背景图
适配方式 支持四中适配方式:填充、自适应、平铺、拉伸 图片在单行布局中的显示方式
背景色 单行布局的颜色设置 拆分成多个单元格的单行布局显示为统一背景颜色
左内间距 布局中单元格内容距离布局容器左边线的距离 用户控制每个布局有不同的左内间距
右内间距 布局中单元格内容距离布局容器右边线的距离 用户控制每个布局有不同的右内间距

配置好布局后:方案1 - 点击【点击添加栏目】;方案2 - 从左侧拖动栏目到设计器舞台区,进入栏目配置弹框页面选择要配置的栏目。

以添加应用磁贴为例,演示配置栏目的过程,选中应用磁贴,修改磁贴的基本信息:显示名称改为否,修改显示高度。

方案1:点击添加栏目,添加应用磁贴

1722174248581

方案2:从左侧拖动添加

1722174326223

配置栏目属性 - 内容配置

1722246215554

内容设置:设置应用磁贴内容,点击【点击设置内容】,进入磁贴配置界面。

1722174407782

样式:设置栏目的属性

1722174468492

添加完成空间的全部栏目后的效果如下图所示:

1722175150091

空间页面配置的栏目列表如下图所示,具体栏目配置参数如附件2

布局 栏目名称 栏目说明
第1行 指定报表 选择任务统计报表,不显示标题
指定报表 选择任务完成进度报表,不显示标题
项目文档 选择知识文档中的按【文件夹显示】栏目,修改栏目标题为项目文档,且选择项目文档文件夹
组合栏目 选择页签样式 栏目:待办事项、待开会议 待开会议:使用待办事项的个性化设置配置
组合栏目 显示样式:页签式 栏目:公示板、研发应用中的超期任务、任务栏目
应用磁贴
公告 显示样式:单行滚动
第2行 项目新闻 选择新闻应用中的我的新闻栏目 显示样式:列表样式 新闻分类:项目新闻
视频栏目 本地上传视频

配置组合栏目

组合栏目是在同一布局单元格中,配置一个和多个栏目

配置外框

栏目外框主要是定义栏目除内容外的样式,系统提供多种外框样式,可修改空间整体栏目外框样式,也可修改单个栏目的样式,可配置标题区、操作按钮、内容区、整体设置的属性

1722175347457

桌面端门户设计器

支持设置桌面端APP的首页效果,可基于模板配置头部区颜色和主题色,配置后作为前端用户默认桌面端效果。整体配置入下图所示:

descript

配置能力

  1. 切换模板
  2. 导航配置:支持设置导航内容和样式
    1. 配置导航内容

descript

  1. 配置导航样式

descript

移动门户设计器

进入移动门户设计搭建移动端门户页面的内容。进入移动门户设计器有两种方式首页门户界面如下图所示

方式一:从门户基本信息进入,点击查看门户基本信息

方式二:从PC门户设计器,切换到移动门户设计器

移动门户设计器

配置移动网页的头部区外框,比如上导航、底导航、欢迎语等,首页门户与子门户的操作会有差异。

移动门户设计器的操作如下表所示:

操作类型 操作说明
历史记录 保存门户一年内的历史版本记录,支持一键恢复到历史版本
存为模板 将当前门户页面的内容存储为模板,进入模板库中统一管理
保存 将已设计的内容保存 有使用权限的用户可以在前端看到页面的夏鸥共
恢复默认 将门户内容恢复到模板的默认初始数据

配置操作步骤如下所示:

  1. 首页门户

首页门户中不能选择模板及布局,所有机构只能使用同一个固定的模板,只可修改模板中元素属性,修改内容如下图红线框所示

descript

模板属性中配置的关键配置项如下表所示:

属性分类 属性名称 作用 目标场景配置项
页面头部
背景拉通 控制背景图是否充满整个页面的背景区 √ - 打开
内容拉通 控制页面的内容区是否充满整个页面区域 √ - 关闭
图片对齐方式 修改模板背景图片的与背景区域的对齐方式
水平对齐方式 背景图与页面区域水平方向的对齐方式,支持选择居左、居中、居右
垂直对齐方式 背景图与页面区域垂直方向的对齐方式,支持选择居上、居中、居下

标题区:主要是用于显示页面的标题,可配置标题显示位置,操作样式及设置【+】操作内容

descript
设置操作内容,主要用于设置标题区中【+】的操作内容,可配置内容与上导航一致

descript

  1. 子门户

移动子门户的设计器,可切换使用模板库中启用中的模板、修改布局和配置元素等,配置步骤如下:

1)切换模板

在设计器切换模板,模板库列表中显示移动模板库启用的所有模板和空白模板

descript

注: 使用空白模板时,用户从零开始搭建页面的效果。

2)布局

布局主要用来定义门户的外框,包含门户的结构、元素,并且可修改其属性信息,设置界面如下图所示

descript

布局内容说明:

布局模板

布局模板是系统基于页面元素、业务内容区、底导航、上导航做组合,设置的基础布局模板,是搭建门户页面的基础框架结构,设计师可以基于布局搭建门户,添加页面元素,修改布局模板中元素的属性等,选中布局1后,设计效果如下图所示:

descript

业务内容区:是栏目显示容器,主要用于在头部区配置显示报表、磁贴和视频栏目,并且可以配置月内容区的尺寸、内容间距和圆角

descript

配置应用磁贴栏目后,效果如下图所示

descript

上导航:是一种页面内容页签,可配置内容支持常用下内容、门户(门户、空间)、菜单(应用、应用中页面)、报表、流程、文档、第三方URL链接,主要固定在布局4、布局5、布局6中,不可移除,选中这三个布局中的一种,可配置上导航

特性:

导航样式:左图右文字、右图左文字、仅文字

默认显示:进入门户时,默认页面内容区默认的内容

descript

配置整体样式:主要配置导航的显示样式效果,可配置背景色、文字颜色、字体样式等

descript

导航内容配置界面

descript

底导航:是页面的整个门户主导航,可配置内容只比上导航多一个常用下的快捷操作,底导航固定在布局1、布局3、布局5、布局6中,选中布局后,可进入编辑导航页面。

特性:

导航布局:主要控制导航的显示样式效果,支持固定样式和悬浮样式

整体样式:支持配置更多/快捷设置的样式

前端呈现:当配置内容超过5个时,只显示前4个和更多,展开更多可显示第5个及后面的导航内容

descript

整体样式配置

descript

快捷操作:支持在配置多个导航内容到快捷操作中,在运行态,点击快捷操作可展开导航内容

descript

页面元素

页面元素作为页面框架配置的最小单元

操作:支持从左侧面板中拖动到头部区的页面元素区,添加到页面元素区后,选中元素可移除元素,并且可切换配置门户的其他区域的属性

descript

移除元素:将元素从设计器的内容区移除掉

descript

切换编辑区域

descript

配置元素区:元素区是一个容器,主要用于承载页面元素,可配置元素区高度

descript

配置头部区:头部区是元素区和业务内容区的容器,只可配置样式属性,比如背景图、背景图适配方式、边框等

descript

  • LOGO元素

主要用于展示企业的一张LOGO图片或者业务的LOGO图片,与横幅图片的主要区别是,横幅图片支持上传多张图片,LOGO元素支持等比缩放,配置界面如下图:

descript

注:

上传LOGO,支持显示当前机构、自定义,选择自定义时,可单独再上传一张LOGO图片。

等比缩放,LOGO需要保持最佳效果时,使用等比缩放调整宽高

  • 搜索

是一个搜索入口,在页面中提供全文搜索能力,可搜索应用、文档、流程、通讯录等,配置界面如下图所示:

descript

  • 我的头像

主要用于展示用户的个人信息,包括头像图片、部门、岗位信息、姓名,并且可以配置元素的样式属性信息,配置如下图所示:

descript

  • 文本

文本主要用于在页面头部区输入自定义文本,支持为文本配置跳转链接,文本样式支持配置文字颜色、背景颜色、圆角边框、文本内容的显示位置等,主要用于当前展示页面的宣传语、Slog等,配置界面如下图所示

descript

  • 欢迎语

欢迎语是两行文字的组合,第一行主要用于显示固定的内容,第二行动态从自定义配置的多行内容中随机显示一条。样式显示属性中可配置文字大小、颜色、尺寸、显示位置、对齐方式等。

特性

首行:支持三种样式,无、星期+日期、姓名+问候语

第二行:支持自定义配置7条文字,并且在运行态会动态随机显示其中一条内容。

descript

  • 天气

显示当前IP地址所在地区的天气情况、温度范围等,可配置文字的显示颜色、尺寸、和位置

descript

  • 横幅图片

横幅图片是图片显示元素,可根据轮播速度按序动态的显示多图组件中配置的图片,可设置图片的显示方式、轮播速度、尺寸、位置、对齐方式。

descript

图片上传组件

多图上传组件,可最多配置20张图片,并且为每张图片配置链接、底部显示文字等,图片来源支持从本地上传和从图片库中上传两种。

descript

配置后显示效果如下图所示

descript

新建移动空间

新建的流程及基本信息与PC空间一致,请查看新建PC空间

移动空间设计器

用于搭建移动空间页面内容、样式等,配置移动端栏目和栏目外框等,移动空间设计器如下图,可以使用门户模板空间创建和不使用模板空间创建。

上图右侧属性面板,可以编辑空间的基本信息

1722246550459

上图左侧属性面板,可以配置模板、栏目组件、目外框,可编辑栏目标题区样式、内容区样式、整体样式等属性

添加栏目:有2种方式可以在空间设计器中添加栏目

方式1:从左侧属性面板中添加到设计器中

1722246646112

方式2:点击【+】

入口

1722246699901

配置弹框

1722246677205

修改栏目外框

修改空间中所有栏目的外框

1722246816809

修改单个栏目外框

1722246873674

空间页面的栏目内容清单,如下表所示:

栏目名称 栏目说明
指定报表 选择:研发任务统计报表 显示栏目名称:否
应用磁贴 显示栏目名称:否 配置内容:任务查询、BackLog、新建Backlog、新建任务
待办事项
分组任务统计 【研发管理】应用栏目
超期任务 【研发管理】应用栏目
待演示任务 【研发管理】应用栏目,可配置任务状态

栏目管理

栏目是页面中呈现数据的最小窗口,可以将系统内部、外部数据通过栏目汇聚在同一个空间中。一个栏目只能显示一个数据源的数据,系统中栏目按照数据来源分为3类:常用栏目、第三方栏目、应用栏目,移动端和PC端栏目的基本类型一致,只有栏目个性化参数会有差异,因此以PC端为例介绍栏目。

栏目分类:基础栏目、应用栏目、第三方栏目、常用栏目

descript

常用栏目

本机构使用频繁的栏目,由机构管理员定义,可从其他三种类型的栏目中添加到该分组下,添加页面如下图所示:

descript

基础栏目

系统中使用频率高或者展示静态数据的栏目,主要有以下栏目:

应用磁贴

提供访问页面、应用、门户、报表、流程、文档、第三方页面的入口,可配置显示样式、分部及颜色属性

descript

配置磁贴内容

可配置磁贴的样式、颜色、显示设置,

descript

备选资源:

常用: 使用频率的较高的页面

菜单: 显示应用中心的应用,可选择应用及应用下有链接的菜单和页面

门户空间:本机构创建的所有门户及空间

报表中心:可选当前机构在报表中心创建的所有报表

流程模板:流程中心创建的流程模板、低代码平台创建的流程模板等

文档中心:可配置文档中心预置的文件夹,前端用户可配置用户有权限的文档

其他:用于配置第三方页面

创建分组

可以将磁贴配置内容按照分组分类展示,可配置分组的名称、样式属性。

descript

可切换到整体属性中,配置分组的样式、颜色、显示设置属性。

descript

关注人员

显示用户关注的人员卡片信息,运行态可在通讯录中关注人员,也可在空间中添加关注的人,移除栏目后再添加栏目时,显示历史关注的人员信息。编辑栏目时,可配置关注人员的显示样式。

待办事项

显示用户的全部待处理事项,数据来源包括工作流的将流程模板、无模板流程、调查和第三方待办数据,并且可以设置待办事项的数据,比如配置应用来源、指定条件、栏目显示字段、更多页面字段配置等。

应用来源:a. 可选择应用中心的所有应用、流程中心、集成平台,其中集成平台主要是连接器集成的第三方待办数据;b. 可选择应用下的流程模板、分类,选择流程模板时,主要是当前应用下创建的流程模板,分类

筛选方式:主要可配置节点类型、超期状态、处理状态、发起人等,其中节点类型包含置灰、审批、协同,发起人是显示指定人员发起的待办数据

descript

已办事项

已办事项,是用户已经处理完的审批、知会、协同事项,数据来源、配置项与待办事项基本相同,不需要配置超期状态、处理状态等

descript

代理事项

代理他人的待办事项,由被代理人主动添加代理人为其处理待办事项,且内容设置中只能配置栏目字段和更多页面显示字段。

descript

我的模板

显示有待办中心的所有流程模板,数据来源工作流、应用流程模板、第三方模板数据

descript

我的报表

可显示本机构创建的所有报表,前端用户只显示用户有使用权限的报表,可配置指定某一个分类的报表或者全部报表

数据来源:报表中心的报表管理中创建的全部报表

descript

指定报表

将报表的数据展示在栏目中,配置时可以选择当前机构创建的指定某一个报表,并且可以配置选中报表的查询参数值,以及报表在栏目中的显示方式

更多页面:进入报表的详情页

详情页:可显示某一数据的具体报表,需要再报表中心配置

descript

我的消息

显示消息中心接发送给用户的所有消息,消息数据按照时间逆序展示,消息来源:UDC应用、即时聊天应用、第三方接口,可按照指定条件显示,比如指定分类的消息、消息的状态、消息的发送时间范围

设置条件

消息分类:可只显示某一个类别的消息

消息状态:可显示全部消息或者未读消息

时间范围:发送时间距离当前系统时间的时间区间,可选择最近三天、最近七天、最近一个月

更多页:更多页面进入消息

详情页:可点击条数据查看消息的详情信息

descript

横幅图片

主要用于显示图片,图片支持多种显示样式。上传图片时可配置的链接、图标的标题等,同时可配置图片的显示方式及多图时的图片轮播速。

descript

视频

音频、视频播放组件,目前支持mov、mp4、mp3格式的音频和视频,视频来源支持本地上传或者配置在线视频的播放地址

descript

大事记

记录机构、部门的重大事件,产品发展过程中的重要时间节点,可编辑事件,并且配置事记的显示方式

详情页:单条事记中配置的链接地址

descript

选择事记:从已配置的事记中选择一个需要展示的事记

descript

配置事记:

descript

配置效果图

descript

公示板

用户显示重要的公示信息、静态的列表数据等,可配置文本、表格、图片,并且支持配置链接、背景图等

在线地图

使用场景:在门户中显示企业的1个或者多个位置信息,并且用户可以快读导航到目标地址

使用效果

配置步骤及能力

  1. 配置地图栏目
    descript
    1. 配置内容

      1. 地图位置:左、右,支持配置地图显示在栏目的左右位置
      2. 地图宽度:百分比,地图占整个栏目的百分比
      3. 位置列表:地图中需要显示的位置信息,最多支持配置10
    2. 配置【位置列表】详情说明:

      管理位置列表:管理显示的位置列表,及每个位置需要显示的信息,包含标题、详细地址、其他、图片,最多支持配置10个位置信息

      能力:1. 可新建、编辑、删除位置信息;2. 可上下拖动修改位置的显示顺序

descript

位置配置信息包含一下几个字段,详细说明如下说明:

  1. 配置标题:配置需要显示的地址名称,可配置内容包含固定信息和地图接口变量
    1. 配置详细地址

      配置内容:输入位置关键词,在搜索结果中,选择需要显示的具体位置

descript

  1. 配置其他:支持输入固定常量和该位置存储在地图服务中的变量信息

descript

  1. 配置图片:支持本地上传和取地图接口中的图片

descript

全文检索

提供搜索入口,可配置多种通道、样式等配置,通道包含全文检索、其他三方搜索通道

天气

显示当前IP地址所在地区的天气信息,包含城市名称、温度及天气图标

第三方栏目

显示第三方栏目管理中配置的栏目,结合连接器能力,将第三方接口数据和页签展示在栏目

  1. 第三方栏目配置

实现将第三方系统的数据和页面集成到本系统空间中呈现,支持配置样式和数据,并且支持穿透到第三方系统中更多页面和详情页。支持创建、编辑、删除栏目和栏目分类,并且支持拖动修改显示顺序。

整体步骤:创建分类,在分类下创建栏目

创建栏目分类

步骤:点击新建分类,输入分类名称,再保存

操作内容:编辑栏目分类,栏目分类不允许重复

操作页面如下图所示:

descript

创建第三方栏目

操作内容:配置栏目的数据来源、数据的呈现结构、栏目样式、更多页和详情页等,最后注册生成一个可以添加到空间的具体栏目,主要有2个场景:

场景1:接入第三方接口数据

操作步骤:点击【新建栏目】,填写栏目基本信息,其中【数据类型】选择应用,配置样式、更多页和详情页,确定后生成栏目。【选择应用】配置应用后,如果有单点登录支持免登录穿透到第三方系统详情页和更多页。

操作如下图所示:

descript

场景2:接入第三方页面

操作步骤:点击【新建栏目】,填写栏目基本信息,其中【数据类型】选择第三方URL,配置样式,确定后生成栏目。栏目支持单点登录穿透到第三方更多页面

操作如下图所示:

descript

应用栏目

在低代码平台的应用设计器中配置的栏目,在应用栏目设计器中可配置页面内容、更多页面、详情页和栏目个性参数等,比如新闻应用中的我的新闻栏目,公告应用中的我的公告栏目等,应用栏目设计器见低代码平台。

统一集中管控和分层管控

统一集中集中管控和分层管控只对首页门户有效,其他门户是由创建机构统一管理,其他机构只有使用权限。

统一集中管控是集团上下级所有机构的首页门户呈现同样的样式效果,且由根集团统一配置管理,其他机构只能查看不可修改。分层管控是根集团对下级机构的首页门户的呈现效果没有有统一要求,各个机构可以根据是否对下级机构有统一管控的需求来做单独配置,比如中国致汇集团下二级机构为中致集团、中致投资公司,二级机构中致集团下有三级机构:中致设计公司、中致技术公司,分层管控实现的效果是:中国智汇集团的首页门户效果、中致集团、中致投资公司呈现效果不一致。但是中致集团及其下级机构(中致设计公司、中致技术公司)首页门户效果一致,且由中致集团统一管理。由于集团业务和管理需求,支持集团对首页门户的多种管理需求,对首页门户呈现内容实现统一集中管控和按机构层级的分层管控,配置步骤如下:

序号 步骤 步骤说明
1 配置属性【允许下级机构自定义】 控制首页门户的管理效果 实现分层管控和统一集中管控的首页门户效果
2 确认下发 将当前首页门户和空间的数据同步给下级机构: 空间:首页门户下的空间,且使用范围为:全部下级机构或者本机构及全部下级机构

分层管控

  1. 根机构:【允许下级机构自定义】打开,上级机构可设计【首页门户】
  2. 下级机构:在根机构的基础上设计门户,如果是下级机构修改首页门户后,上级机构又重新修改下发,那么下级机构使用本机构修改后的首页门户数据。

descript

统一管控

a. 根机构:关闭【允许下级机构自定义】开关,只有根机构可设计【首页门户】

  1. 下级机构:只能查看根机构配置的门户,且不可修改配置信息

descript

下发

将首页门户和其下使用范围包含下级机构的空间页面内容发送给全部下级机构,a. 如果下级机构和用户未个性化修改空间内容,收到下发的空间数据后,会立即生效。b. 如果下级机构个性化修改后,那么需要进入设计器点击恢复默认才能收到下发的数据。c. 用户个性化修改后,恢复默认只能恢复到当前用户所属机构的空间管理员配置的数据。

descript

分类管理

门户支持按照企业的业务和组织结构将门户做树形结构的分类分组管理。提高查询和管理效率。最多支持5级分类。

操作步骤:

  1. 查询分类,可查询本机构下所有的门户分类

descript

  1. 新建/编辑分类
    1. 新建分组:支持创建一级分类和子级分类,最多支持5级分类,

      1)新建一级分组

      入口:分类【+】

descript

编辑分类基本信息:分类名称、分类编码

descript

2)新建子级分组

入口:父级分类的【+】

操作:点击【+】,编辑基本信息,入新建一级分组的【编辑分类基本信息】页面

descript

  1. 使用分类:新建和修改门户基本信息时,可以选择已创建的分类,见【门户搭建】->【新建门户】

导入/导出

导入/导出是为门户、空间、栏目、门户模板、空间模板提供跨环境、跨租户、跨机构的复用。门户包含登录前门户、首页门户、普通门户,不包含应用门户。空间包含登录前空间、首页门户空间、普通门户空间

导入导出操作流程:导出 -> 导入

a. 登录前门户导入导出

从一个机构下导出登录前门户,将导出的登录前门户包原样导入到另一个机构中更新本机构的登录前门户数据为当前导入的数据

操作条件:本机构【登录页设置】-> 【登录前门户设置】中已勾选【启用登录前门户】

descript

1)【导出】登录前门户

将登录前门户设计器中设计的内容原样导出,包含登录前门户、登录前门户下所有空间,不包含基本信息中,比如门户名称、图标、管理授权、主题风格

入口:

descript

导出确认:

descript

2)【导入】登录前门户

其他机构导出的登录前门户导入到当前机构中,将本机构的登录前门户和空间数据更新为导入包的数据。导入成功后,登录前门户和门户下已有空间将生成一条新的历史记录,如果当前机构没有导入的的登录前空间,则在本机构中新建该空间,空间名称与导入包中空间名称一致。导入中不包含门户基本信息中,比如门户名称、图标、管理授权、主题风格。

入口:

descript

选择文件

descript

导入进度及结果展示:

descript

b. 首页门户导入导出

1)【导出】首页门户

将首页门户及门户下的空间全部导出生成一个【首页门户.zip】,导出内容包含首页门户中最新设计内容,首页门户下所有空间(包含空间基本信息、空间最新设计内容),不包含首页门户的基本信息内容

descript

2)【导入】首页门户

其他机构导出的首页门户导入到当前机构中,将本机构的首页门户和空间数据更新为导入的数据。导入成功后,首页门户和门户下已有空间将生成一条新的历史记录,如果当前机构没有导入的空间,则在本机构中新建该空间,空间名称与导入包中空间名称一致。导入中不包含门户基本信息中,比如门户名称、图标、管理授权、主题风格。

入口及选择文件

descript

导入进度及结果展示:

descript

c. 普通门户导入导出

1)【导出】门户

将所选门户及门户下的全部空间导出生成一个【门户名称.zip】文件包,导出内容包含门户中最新设计内容,首页门户下所有空间(包含空间基本信息、空间最新设计内容),不包含首页门户的基本信息内容。可导出普通门户,不可导出应用门户。导出时,可一次性选择多个或一个门户

入口:门户列表中,勾选复选框 -> 导出

descript

descript

导出确认:选择多个门户时,会生成多个文件包【门户名称.zip】,确定后,会添加到浏览器的下载列表中

descript

2)【导入】门户

将已导出的门户,导入到本机构下

入口

descript

选择文件:可一次选择1个或者多个门户包

descript

选择门户所属分类:当前选择的所有门户,都被导入到所选分类下

descript

导入进度及结果展示:

只能导入普通门户,如果是登录前门户、首页门户或者其他类型的文件,导入失败。

descript

d. 栏目导入导出

支持将在门户中自定义的栏目跨环境导入导出,包含自定义应用栏目、三方栏目。

  1. 导出栏目

选择栏目:仅在栏目管理中自定义的栏目支持导出,可导出1个或者多个。选择多个栏目时,仅支持

descript

配置导出文件名称:配置导出生成文件的名称,默认显示名称日期,可手动修改为自定义名称

descript

2)导入栏目

支持已导出的栏目导入到其他机构。

选择文件

descript

导入进入和结果展示:导入成功后,栏目显示在所选分类下面。

descript

e. 个性化定制方案导入导出

支持个性化定制方案跨环境复用

操作路径:进入后台管理,选择【门户管理】下的【个性化定制管理】

1)导出

将个性化定制方案文件导出到本地,以便再导入到其他机构的个性化定制管理中。导出内容包含定制方案中的基本信息 - 默认首页、排序号、启用状态、描述、主题风格,不包含使用范围

descript

descript
2)导入

导入时,只能选择个性化定制方案导出的ZIP包,其他类型的ZIP文件不可被导入。

descript

导入进度和结果展示

descript

个性化定制方案

个性化定制是为某一部分用户提供个性化默认首页效果。支持配置和管理本机构下的所有个性化方案。默认首页可以是首页门户、子门户,当选择首页门户是,个性化数据包括首页门户、个人空间的修改。默认首页选择子门户时,可再次修改所选子门户。例如:总裁办人员和普通员工看到的首页内容不同,因此为总裁办创建定制首页。

操作用户:机构管理员、系统门户管理员

定制方案管理

管理本机构下所有的定制方案,可启用/停用、导出、编辑定制方案

descript

配置定制方案步骤

  1. 选择【门户管理】中的【用户定制管理】,点击【新建】

    使用范围支持选择部门、岗位、职务、职级、组、外部单位和人员,有使用授权的用户,在终端用户登录系统后,呈现的首页效果是定制方案中配置的效果,个性化设置控制使用范围中的用户首页个性化的开关,打开时,前端用户可以个性修改模板、导航和菜单。

    默认首页支持选择组织门户,和部分子门户(移动端和PC端都启用的子门户)。

    默认首页为组织门户,配置内容:

descript

默认首页为其他子门户,配置内容:

2、菜单设置:需要根据工作的优先级,将菜单按照优先级排序

descript

3、导航设置:将空间导航的空间按照工作相关程度进行优先级排序,达到导航内容围绕以用户为中心。

descript

4、门户设置:进入门户设计器,可切换模板,修改元素的显示样式等,其中LOGO不支持修改,效果如下图所示。

5、个人空间设置

定制用户的个人工作台,可以进入空间设计器修改页面布局、栏目、栏目的内容。将在个人空间中,添加报表统计数据,可以让有定制方案的用户登录首页即可查看重要的报表数据。

descript

样式库

统一管理本机构中有权限使用的所有模板,包含门户模板库、空间模板库、空间布局库、栏目外框库,并且支持修改门户模板、空间模板

门户模板

按照分类统一管理本机构有权限使用的所有模板,并且可以修改有管理权限的模板.

1722219648085

a. 修改模板基本信息:

入口:编辑

修改内容:可修改模板名称、模板分类、封面图

1722219662883

b. 设计:

入口:设计

修改内容:门户和空间中的所有内容

模板模板操作与门户设计器一致

1722219704783

空间模板

统一管理本机构有权限使用的所有空间模板,并且可以修改有管理权限的模板。

1722219796441

a. 修改模板基本信息:

入口:编辑

修改内容:可修改模板名称、封面图片

1722219823389

b. 设计:修改模板内容

入口:设计

修改内容:可修改模板内所有的内容,修改方式与空间设计器一致

1722219882372

栏目外框库

统一管理系统中所有的栏目外框

1722219971096

显示设置

平台显示设置(一键置灰)

使用场景:国家领导人去世、重大灾害等悼念日时,将集团内部的所有页面设置为灰黑色,表示对灾难的发生致以敬意。

操作角色:根机构管理员

使用效果

配置步骤及能力

1. 配置入口:基础设置->平台显示设置

descript

高级设置

配置平台内页面新开浏览器页签打开时,浏览器页签中显示的名称及图标,登录页面及登录后页面分开单独控制。

a. 登录页面包含登录前门户和登录页

支持配置固定的显示名称。配置完成后,打开登录页和登录前门户时,浏览器页签中显示已配置的名称和图标

descript

b. 登录后浏览器页签显示

为登录后打开的页面设置浏览器页签的显示名称、图标。包含两种显示方式:固定显示、动态显示;

动态显示:显示页面预置的标题和图标

固定显示:所有页面显示统一的页签名称和图标

descript

前端显示效果:

descript

c. 平台页面打开方式

定义机构级默认打开方式为【新开系统页签】的页面的默认打开方式

页签设置 = 打开,使用新开系统页签打

页签设置 = 关闭,使用新开浏览器页签打开,前端用户打开页面时,使用新开浏览器页签打开,而非默认的新开系统页签方式打开

页签设置 = 关闭,使用内容区刷新打开,前端用户打开页面时,使用内容区打开,而非默认的新开系统页签方式打开

descript

回收站

门户、空间、门户模板、空间模板、用户定制方案、栏目布局、第三方栏目删除后,被删除的数据进入回收站,在回收站列表中支持按照分类查找

支持的操作

操作类型 操作说明
预览 PC门户模板、PC空间、PC门户、用户定制方案的PC端
还原 支持将所有的删除的内容从回收站还原到列表中

前端用户个性化门户的关键步骤介绍

支持前端用户自定义用户有权限的应用、菜单、栏目数据及用户自定义的样式。

PC端门户个性化

  1. 非定制用户访问首页

descript

  1. 定制用户访问首页:取用户定制管理中为当前用户个性化配置的首页方案。例如,【总裁办门户方案】的授权用户,登录首页展现定制化方案。

descript

【总裁办门户方案】

切换模板

可切换到其他可选模板,切换时,可以选择是否将个人空间内容修改为模板空间的内容

操作步骤:【系统操作区】,点击【设置】,选择【首页个性化】

descript

使用空间模板,打开【预览模板空间效果】开关,将门户框架及个人空间内容全部改为模板效果

descript

增加/编辑/删除栏目

新增栏目

操作步骤

1、填加栏目:在组合栏目中的待办事项栏目中,点击【添加栏目】

descript

2、编辑栏目:以【待办事项】栏目为例,可配置的内容包括:

1)栏目显示名称:可配置为“超期待办”和设置条件“处理状态=已超期”,实现预期效果

2)待办事项栏目业务内容,比如:发起人、超期状态等。业务内容由各应用决定,每个应用的栏目内容可能不同。

导航设置

主要用于设置空间导航中的显示内容及排序。比如用户将个人工作相关的空间内容放在首页,设置在第一位的空间是进入系统后默认显示的空间内容

步骤:【系统操作区】,选择【设置】,从设置中选择【首页个性化】下的【导航设置】

选中【单位空间】向上拖动到第1位,或者选中【单位空间】->【置顶】按钮快速置顶

descript

菜单设置

主要用于设置菜单导航中显示的内容及内容排序,比如财务人员比较关心报销费控相关的信息,可将费控管理拖动到菜单的第一位

步骤:选择【系统操作区】中的【设置】,在【设置】的下拉菜单中选择【首页个性化】,在打开的浮层中选择【菜单设置】

选中未勾选的菜单,其中√ - 菜单的全部下级都被选中,无√且选框实心 - 菜单的部分下级被选中,复选框空 - 菜单不显示在菜单导航中

descript

门户设计器

快捷个性化的能力不能满足样式的需求,可进入前端用户的门户设计器或者空间设计器修改更多的属性,设计器与后端管理员配置除LOGO图片外,其他的能力一样

步骤:访问【系统操作区】中的【设置】下拉菜单中的【首页个性化】,在展开的浮框中点选择【首页个性化】,显示可个性化的内容的弹框

descript

点击【设计首页】进入门户设计器,与用户定制管理设计器交互界面一致

选择【空间个性化】可进入空间设计器,与后台空间设计器一致

桌面端个性化

门户管理员打开【首页】的【允许前端个性化】、【允许前端个性菜单和导航】开关后,用户可在桌面端自定义导航内容、主题、导航位置 。

入口:我的头像->设置->主题设置

descript

descript

  1. 个性化导航

支持将导航配置在页面顶部和左侧

descript

  1. 个性化主题色

用户可自定义配置桌面端首页显示的主题颜色

descript

  1. 个性化导航内容

用户可个性化配置导航的显示内容

descript

移动端个性化

门户管理员打开【允许前端个性化】、【允许前端个性菜单和导航】开关后,用户可在移动端自定义空间及底导航

空间个性化

用户根据工作需求自定义配置空间内容,可修改栏目排序及显示栏目,比如:将【代理事项】栏目添加到个人空间,操作界面如下图所示:

descript

底导航个性化

底导航个性化主要是用户自定义移动首页门户底导航,可修改排序、配置显示栏目内容、配置默认打开页面

  1. 入口:系统提供2个编辑底导航的入口

入口1:如果底导航的配置内容超过5个时,点击【更多】,在打开的弹框中点击【编辑】,此入口是根据底导航的数量动态显示

descript

入口2:进入【我的】页面,在页面中找到【底导航设置】

descript

  1. 自定义底导航:备选添加到已选、移除已选内容,修改导航内容的排序及默认显示页面,默认显示页面只能从前4个选项中选择

应用磁贴个性化

自定义应用磁贴中显示显示内容、排序等,比如在应用磁贴中添加费控管理应用,操作如下图所示:

门户搭建案例请看视频

1.3 - 移动平台

整体概述

移动平台是企业统一的移动办公入口,随时随地连接人与业务。

  • 打造集 “ 统一入口、统一信息门户、移动化业务应用、团队协作与办公、轻应用开发平台 ” 五位一体的移动平台。
  • 形成移动工作平台的生态圈,同步可通过“微协同”模式融入其他生态。
  • 实现移动办公全员化,形成企业信息化基础平台,不断融入移动业务应用及服务,最终建设企业级统一的移动工作平台。

1.1 角色介绍

角色 介绍
集团管理员 该角色有后台【移动管理】菜单资源,其中包括IM授权管理、云端同步、移动插件菜单。 该角色有后台【应用中心】菜单资源,可在应用管理中,对应用的选项卡及机器人能力进行配置,配置后V8协同中可使用。
机构管理员 该角色有后台【移动管理】菜单资源,其中包括IM授权管理菜单。
系统管理员 该角色有后台【移动管理】菜单资源,其中包括原生App托管、IM能力配置菜单。
普通用户 可登录V8协同桌面端/移动端/pad端,通过IM进行随时随地的即时沟通;通过统一的工作入口查看、处理工作事务;将“团队”与工具及业务应用充分结合,打造团队协作空间。

1.2 术语介绍

名词 含义
IM授权管理 管理查看当前机构授权使用融云IM功能的用户,已授权用户可在V8协同中使用IM进行沟通交流。
域名同步 设置企业名称及协同服务器地址后,员工登录V8协同时,无需手动配置服务器地址,搜索企业名称即可快速获取服务器地址。
移动插件 基于连接平台能力,实现移动平台的微协同集成能力。可实现V8协同组织同步、应用发布至第三方平台。
原生App托管 对原生app版本进行管理:包括原生APP上架更新、版本管理等
IM能力配置 融云公有云或私有云信息呈现,包括App key 、App Sercert、服务部署方式(公有云、私有云)、服务有效期等
团队协作 团队协作空间 = 协作团队+协作工具+协作看板。 通过团队协作机制与团队协作工具的深度融合,覆盖组织日常办公场景

管理员关键场景及操作

2.1 原生App托管

对原生app版本进行管理:包括原生APP上架更新、版本管理等。

  1. 系统管理员进入后台后,在【移动管理->原生App托管->创建应用】中可创建应用。选择应用类型(包括iOS、安卓、macOS、Windows、Linux);上传应用图标;输入应用名称及描述。

    descript

  2. 创建应用后,点击编辑,即可对该应用进行管理。

    descript

  3. 包括【基础信息】及【版本管理】,可对已有版本进行【编辑】、【预览】、【禁用】操作;也可以通过【上传新版本->本地上传/自定义配置】上传新的版本。

    descript

2.2 IM能力配置及授权管理

管理查看当前机构授权使用融云IM功能的用户,已授权用户可在V8协同中使用IM进行沟通交流。

  1. 系统管理员进入后台后,在【移动管理->IM能力配置】中可查看App Key、App Secret、服务部署方式、服务有效期等信息。

    descript

  2. 集团管理员或机构管理员进入后台后,在【移动管理->IM授权管理】中,可查看当前机构【总授权数】、【可用授权数】、【已授权数】,并且可查看【授权列表】,授权失败的可进行【重试】。

    descript

2.3 域名同步

设置企业名称及协同服务器地址后,员工登录V8协同时,无需手动配置服务器地址,搜索企业名称即可快速获取服务器地址。

  1. 集团管理员进入后台后,在【移动管理->云端同步->新建】中,可输入【企业名称】、【协同服务器地址】,新建同步企业。

    descript

  2. 列表中可查看已创建的同步企业信息,并且可对其进行【编辑】、【删除】、【关闭】操作。

    descript

  3. 普通用户登录V8协同桌面端/移动端时,在【登录页->设置域名->域名查询添加】中,可输入企业的名称,对已云端同步的企业进行检索,获取其域名后登录。

    descript

    descript

2.4 移动插件能力配置

基于连接平台能力,实现移动平台的微协同集成能力。可实现V8协同组织同步、应用发布至第三方平台。

  1. 集团管理员进入后台后,在【移动管理->移动插件->配置】中,可启用微协同,并进行一系列设置。

    descript

  2. 在【移动管理->移动插件->新建】中,可创建移动插件,设置【接入类型】、【接入应用名称】等信息。

    descript

  3. 新建插件后,点击可进入对插件详情进行配置。包括【基础信息】、【组织同步】、【应用发布】、【使用日志】等。

    descript

    descript

2.5 团队协作能力配置

  1. 集团管理员进入后台后,在【应用中心->应用管理->选择应用->编辑->应用能力】中,可对应用【选项卡】、【机器人】能力进行设置。

    descript

  2. 选项卡配置:在【应用能力->选项卡->创建】中,可创建该应用的选项卡。包括【选项卡名称】、【PC端选项卡网页地址】、【移动端选项卡网页地址】;并且可设置前端筛选【参数】,包括【显示名称】、【参数名称】、【参数类型】等。

descript

  1. 机器人配置:在【应用能力->机器人】中,可开启【通知机器人】能力。选择对应【连接器】后,可对【执行动作】及【触发事件】的快捷消息操作进行配置。

    descript

2.6 首页及样式配置

可对桌面端门户样式及导航进行配置。

  1. 集团管理员进入后台后,在【门户管理->首页管理】中,可对【桌面端门户】首页进行设置。

    descript

  2. 点击【桌面端门户】-【设计首页】,左侧可选择导航模式【顶部导航】、【侧边导航】,右侧可选择【框架背景色】,也可自定义主题,选择图片或其他颜色。

descript

3)点击导航区域,可对导航内容及样式进行配置

descript

4)点击【快捷操作】区域,可配置快捷操作样式及内容。

descript

可对手机端门户样式及导航进行配置。

  1. 集团管理员进入后台后,在【门户管理->首页管理】中,可对【手机端门户】首页进行设置。

    descript

  2. 点击【手机端门户】-【设计首页】,点击【标题区】可配置标题区样式及内容

descript

3)点击【底导航】,可配置底导航样式及内容

descript

2.7 IM消息审核

  1. system-admin管理员进入后台后,点击【移动管理->IM能力配置】

    descript

  2. 复制【消息路由地址】,并按照【?】内的引导进行配置

descript

descript

  1. 集团管理员进入后台后,在【用户中心->授权管理->新建】

    descript

  2. 【选择角色】,选择【IM消息审计管理员】,并授权给指定人员。

descript

5)被授权的人员进入后台后,有【移动管理->IM消息审计】菜单

descript

6)点击【IM消息审计】菜单后,可查看该租户所有人员的IM消息。

descript

普通用户关键场景及操作

3.1 工作场景下的实时沟通交流

  1. 普通用户登录V8移动桌面端/移动端后,在【消息列表->右上角+号->发起聊天】中,可灵活选择人员进行单聊/群聊。

    descript

  2. 发起聊天后,可在单聊/群聊中,实时发送、接收多种类型IM消息,如:发送文本、富文本、文件、链接等项目相关资料,实时进行工作沟通。

    descript

3.2 部门群等业务群组的创建及管理

  1. 普通用户登录V8移动桌面端/移动端后,在【消息列表->右上角+号->发起聊天】中,可选择部门、岗位、职务、职级、业务线等,直接创建业务群组。

    descript

  2. 群组创建成功后,当所选部门、岗位、职务、职级、业务线等组织有人事变动时,如人员入职、转岗、离职等,群内人员自动更新,无需手动操作。

    descript

  3. 群主、群管理员,可分别根据其权限对群组进行对应设置,如转移群主、设置群管理员、成员权限管理等。

    descript

3.3 实时查看、处理工作及业务

  1. 普通用户登录V8移动桌面端/移动端后,在【消息列表】中可实时查看IM聊天消息及应用消息,产生新消息时,会在消息列表中优先显示,且会显示新消息角标,提醒用户查看。

    descript

  2. 在【消息列表】中可实时接收、查看、处理应用消息,如查看参会提醒、会议纪要。支持V5、V8应用、异构系统多种来源消息的接入。

    descript

  3. 点击消息可直接查看消息详情,如查看会议详情,并进行回执处理。

    descript

  4. 可对应用消息进行管理,将关注的应用消息移出显示,不关注的应用消息移入合并显示。

    descript

3.4 统一的应用工作入口

  1. 普通用户登录V8移动桌面端/移动端后,在【工作台】中可搜索应用、查看管理员设置的应用分组及分组下的应用。集团管理员工作台设置。

descript

  1. 点击【添加快捷】,支持添加应用快捷入口。

    descript

  2. 无需切换应用,从【工作台】点击即可穿透进入对应的协同工作/业务应用页面。应用来源包括:协同办公应用、低代码应用、集成连接应用、ISV厂商服务应用等。

    descript

3.5 自定义个人工作空间

  1. 普通用户登录V8移动桌面端/移动端后,支持查看自定义的个人工作空间。

    descript

  2. 个人空间自定义,可以通过门户提供的个性化能力,达到千人千面的效果。

3.6 打造团队专属协作空间

  1. 普通用户登录V8移动桌面端/移动端后,作为群组群主/群管理员,可在【群设置->

    选项卡管理-添加选项卡】中,添加群文件、网页、菜单/门户空间、报表、应用等。

descript

  1. 添加群文件选项卡至群组。

    descript

  2. 添加项目管理门户至群组,实时跟进团队项目进度。

    descript

  3. 添加工作计划表格至群组,实时更新查看团队工作计划。

    descript

  4. 添加Jira应用看板至群组,实时查看团队待解决bug,并进行跟进。

    descript

3.7 导航及风格自定义

  1. 普通用户登录桌面端后,点击【头像->设置->个性化设置】。可选择【导航模式】;显示方式;导航内容;主题色。

descript

2)点击导航区【更多】,或右键点击导航区,可进行【导航设置】

descript

descript

2 - 组织管理

orgnization management

整体介绍

新一代组织模型,支持大型/超大型多层级组织、多元多业务线的分工协作体系,完整描述组织工作群集与上下级关系,并提供集权分权管理模式,成为组织协作、业务管理的基础。支持多集团、多层级、多业态、多管控方式、多授权体系。

1.1 角色介绍

角色 介绍
机构管理员 区分层级:根机构管理员、下级机构的管理员,管理的组织范围不同 管理内容:该角色有完整的后台管理权限,支持管理组织模型、用户中心、应用中心、门户、流程管理、集成连接、数据报表、移动、基础设置等模块
组织模型管理员 区分层级:根机构的组织模型管理员、下级机构的组织模型管理员,管理的组织范围不同 管理内容:仅支持管理机构的组织模型模块

1.2 术语说明

术语 含义
行政组织 即组织基于企业行政管理或人事管理定出的组织结构,是组织最基础的组织结构
机构 是组织中数据隔离的基准,支持挂在集团、单位下
部门 是组织中最末端的单元,支持挂在单位、部门下
岗位 在特定的组织中,在一定的时间内,由员工承担完成若干项工作任务,并具有一定的职务和责任、权限,就构成一个岗位。例如:产品经理、开发工程师。
岗位类别 根据工作内容、任职或对组织的贡献的相似性而划分为同一组的职务。如:管理类、技术类、营销类。
职务 组织中承担相同或相似的职责或工作内容的若干职位总称。如部门经理
职级 是对所有职务等级的统一划分,如:高级经理、经理、项目经理。
人员 也称雇员,为了工资或其它报酬而为别人工作的人。这里的员工指的是一个组织(企业事业单位)内部各个部门的工作人员,包括永久性雇员和临时性工作人员。如:产品开发人员、行政人员、采购员、销售员、生产工人以及各个部门的管理人员等。员工与组织构成雇佣关系。这里所指的员工不包括虽然与该组织发生业务关系但与该组织并没有雇佣关系的人员,如客户/供应商的联系人,海关、银行、工商税务的工作人员。
业务线 基于行政组织的机构、部门,按业务重组汇报关系。如人力业务线、财务业务线等

1.2 操作步骤

descript

管理员关键操作说明

2.1 权限说明

机构管理员、组织模型管理员拥有组织模型的管理权限,管理范围受设置控制:

  • 本机构:仅支持管理本机构的组织模型信息
  • 本机构及下级机构:支持管理本机构及所有下级机构的组织模型信息

注:根机构管理员默认可管理本租户内所有机构的组织模型信息

2.2 维护基础数据

组织模型的基础数据包括:

  • 扩展字段:为行政组织、人员提供自定义描述能力
  • 外部单位扩展字段:为外部单位提供扩展描述能力
  • 枚举管理:为枚举类型的扩展字段提供枚举
  • 编码规则:机构、部门、岗位、职务、职级、人员、业务线、外部组织、联系人等编码规则维护
  1. 扩展字段管理

场景:某集团公司的总部及分子公司的各部门都有具体的职能(如:人力、财务、营销、法务),用于在流程中按业务匹配到具体的审批部门和人员。

具体维护分为两步:

  1. 维护扩展字段本身:定义类型、名称、引用的枚举(如是枚举类型字段)
  2. 在行政组织管理 - 扩展字段中,添加扩展字段,并设置使用的组织范围、组织类型

descript

descript

descript

  1. 枚举管理
  • 预置枚举有:岗位分类、职能类型、证件类型
  • 自定义枚举:按需增加

descript

3)编码管理

预置了组织模型各对象的编码规则,支持用户自定义编辑,不允许新建。

descript

2.2 维护行政组织

组织分为两种类型:机构、部门,如何区分机构、部门,有两个原则:

  • 法人单位视为机构
  • 相对完整、独立的业务协作单元,视为机构

2.2.1 新建机构

1)新建单个机构

descript

descript

2)通过导入做机构的初始化

descript

2.2.2 新建部门

1)新建单个部门

descript
descript

2)通过导入做部门的初始化

descript

2.2.3 维护组织

维护的具体内容包括:组织基本消息、扩展字段信息、组织历史上级、所属业务线。

descript

2.3 维护岗位职务职级

岗位职务职级的说明,见「术语说明」,综合用来起来描述人员的任职信息。

权限说明:

对象 管理权限 支持下发
岗位 各级机构 基准岗位支持下发
职务 各级机构 基准职务支持下发
职级 仅根机构 租户内各机构使用一套职级

2.3.1 新建岗位

1)新建基准岗,设置适用范围,选择「本机构及下级机构」下发给下级机构

descript
descript

2)下级机构如果已使用了自用岗位,上级后下发了基准岗位,下级机构可以通过将自用岗位绑定到上级下发的基准岗位,既能实现岗位的标准化,也不用调整本机构现有的流程、授权等。

descript

3)批量导入,快速初始化岗位。

descript

2.3.2 新建职务

与岗位定义基本一致。

1)新建基准职务,设置适用范围,选择「本机构及下级机构」下发给下级机构

descript

descript

2)下级机构如果已使用了自用职务,上级后下发了基准职务,下级机构可以通过将自用职务绑定到上级下发的基准岗职务,既能实现职务的标准化,也不用调整本机构现有的流程、授权等。

descript

3)批量导入,快速初始化职务。

descript

2.3.3 新建职级

职级是定义在根机构,下级机构使用同一套职级体系。

1)根机构管理员做统一的职级管理。

descript
descript

2)批量导入,快速初始化职级。

descript

2.3.4 维护岗位、职务、职级

具体操作同2.3.1、2.3.2、2.3.3

2.3.5 维护汇报关系

产品中的汇报关系,主要用于流程审批,汇报关系分为两类:

  • 按组织维度和层级体现出的人员的汇报关系:如行政组织、业务线、多维组织中的部门负责人、部门分管领导、上级部门的负责人、上级部门的分管领导等
  • 单独维护的汇报关系:
    • 岗位汇报关系:按组织+岗位体现的一种汇报关系,有效减少因频繁的人员变动产生的汇报关系的调整
    • 领导秘书管理:一种特殊的汇报和协作关系,多出现在政府、国企、大型企业中

1)业务线

业务线是基于基础的行政组织,按业务协作需要形成的组织的汇报关系,多用于流程审批、业务数据的授权等场景。

① 新建业务线

descript

② 维护业务线

在机构、部门管理页面的详情页,支持将当前机构、部门加入业务线。

descript

2)岗位汇报关系

① 新建岗位汇报维度,一般按业务维度呈现。

descript

② 新建岗位汇报维度

descript

descript

3)领导秘书管理

领导秘书主要用于公文流转中的处理、领导日程的管理。

descript

descript

2.4 维护人员及任职

人员信息分为:基本信息、账号信息、任职信息(主岗、兼职)、扩展信息

2.4.1单点维护人员

0)人员的批量初始化:通过导入功能做人员

1)人员列表:默认展示生效的人员

descript

2)人员基本信息

descript

3)人员任职信息

  • 主岗信息:岗位职务职级需要在所属机构下选择,显示的扩展字段是所属机构下的人员扩展字段
  • 兼职信息:仅允许设置兼职组织、岗位、职务、职级,组织的选择范围是当前管理员有权限管理的机构

descript

  1. 工作交接

对人员调岗、离职、挂职等情况时,做工作交接,内容包括:

  • 待办事项
  • 组织的信息:组织信息中选择的当前人员
  • 流程信息:流程节点、分支、节点属性中的当前人员
  • 角色权限:当前人员拥有的角色权限

descript

2.4.2批量维护人员

1)批量新建人员

第一步:选择下载模板字段,下载导入模版。

descript

第二步:按模板字段梳理并填入人员信息。

descript

第三步:将梳理好的人员信息文件,上传进行导入。如有错误请按提示操作并修改信息,再进行导入操作。

descript

2)批量更新人员信息

第一步:查询出要更新的人员,导出这部分人员;如果不查询,默认导出当前机构下的生效人员。

descript

第二步:在导出的文件中更新人员信息

descript

第三步:将更新好的人员信息文件,导入系统。如有错误请按提示操作并修改信息,再进行导入操作。

descript

2.5维护组织角色及人员

企业集中维护组织角色信息,并设置在不同组织下的角色授权人员,满足各业务场景下复杂流程的找人、选人等。

2.5.1维护组织角色

根机构管理员统一维护组织角色信息,包括角色名称、角色分类、适用组织等。

descript

角色分类可在【基础数据管理-枚举管理】中通过「角色分类」枚举维护。

descript

角色的适用组织可设置为本组织、本组织及下级组织、指定组织、指定组织及下级组织,并可根据组织类型(机构、部门)进行设置。:不在角色适用组织范围内的组织将无法使用该角色。

descript

2.5.2角色人员设置

机构管理员可维护管理范围内组织的各个角色授权人员。即:xx组织下的xx角色是谁

descript

设置角色人员信息时:

1)【业务线】需在【组织】的所属业务线范围内。组织所属业务线可查看《2.3.5维护汇报关系》;

2)【组织角色】需在【组织】的适用角色范围内

3)若选择【业务线】,则维护xx组织在xx业务线上的xx角色人员;若选择【业务线】,则维护xx组织下的xx角色人员

descript

2.6 维护外部单位

外部单位是描述组织外部的供应商、经销商、外包机构等合作伙伴的组织形式,包括外部单位管理、外部人员管理。

2.5.1 维护外部单位

descript

descript

2.5.2 维护外部人员

入口:外部单位管理 - 外部人员

  1. 创建外部人员:填写基本信息、主岗信息、扩展字段,会在用户中心同步创建对应的用户。

descript

descript

2)扩展字段

与内部组织、人员共用扩展字段,其中组织扩展字段支持按组织类型指定使用范围。

descript

2.7维护外部个人用户

前提:环境的nacos中配置了外部单位用户和外部个人用户的注册租户A

入口:A租户后台 - 组织模型 - 外部个人用户管理

新建外部个人用户,同时在用户中心创建对应的外部个人用户。

descript

descript

2.8设置注册人员

2.8.1 设置

第一步:环境的nacos中配置了外部单位用户和外部个人用户的注册租户A

第二步:登录系统的system-admin设置登录页的功能入口,如外部单位人员、外部个人用户的注册入口

descript

第三步:设置登录页面

  • 外部人员与内部人员使用统一登录页

descript

  • 外部人员与内部人员使用单独登录页

descript

2.8.2 前端注册入口

场景一:外部人员与内部人员使用统一登录页

descript
descript
descript

场景二:外部人员与内部人员使用单独登录页

内部人员登录页

descript

外部人员登录页

descript

注册页面:外部个人用户注册

descript

注册页面:外部单位用户注册

descript

2.9对接OCIP

前置准备:

  1. 部署了OCIP平台
  2. 需购买开放协同互联平台集成(OCIP)插件,后台集成平台下才会有【OCIP】菜单

具体操作步骤如下:

第一步:在OCIP平台中做对接配置,将V8系统的信息配置好

descript

第二步:在V8平台根机构下,上报组织数据,包括:机构、部门、岗位、职级、人员

descript

第三步:在OCIP平台中,将创建的组织视图授权给接入的V8系统

descript

第四步:在应用中就可以正常使用了,如发文场景选择OCIP平台中的组织,实现跨系统公文交换等

2.10 其他设置

2.10.1 维护组织互访权限

组织互访权限管理分为机构间的互访权限、部门(机构内)互访权限。用来解决以下场景需求:基于业务管理合规、新业务保密、外包人员管理等需要,设置协作可见的组织、人员范围。

互访权限控制的地方:

  • 通讯录:组织树、人员列表
  • 选人界面:组织树、人员列表

1)机构互访权限

仅根机构管理员设置,其他机构管理员仅可查看「机构互访权限」的设置

descript

2)部门互访权限

优先级说明:

  • 机构互访权限与部门互访权限的优先级:部门互访权限 > 机构互访权限
  • 部门互访权限优先级:可见 > 不可见

descript

2.10.2 维护系统组

系统组是协作组织的一种扁平化的描述形式,适用于小范围的团队协作,如跨部门的开发小组、委员会等。

新建系统组:可选对象包括机构、部门、岗位、人员、外部单位和外部人员

descript

descript

2.10.3 维护领导秘书关系

维护领导和秘书的协作关系,包括一个秘书服务一个领导、一个秘书服务多个领导等场景,秘书与领导的协作内容包括:秘书帮领导流转公文,秘书帮领导规划并维护日程等。

descript

2.10.4 通讯录设置

三端的通讯录列表、人员卡片的显示字段,敏感字段、敏感成员的设置,满足显示个性化、领导联系方式小范围成员可见等需求。

  1. 显示字段设置

支持设置人员的基本信息字段在通讯录中的显示,并支持设置通讯录的自定义字段。

descript

descript

其中自定义字段值的维护,在前端用户 - 个人设置页面维护。

descript

  1. 敏感字段设置

设置的含义是:所有人不可见「敏感成员」的「敏感字段」的值,但「白名单」人员可见。

descript

前端查看的效果如下:

descript

案例

视频:https://pan.baidu.com/s/1f2D0oloZ_5Wj9qFFumzIGQ?pwd=1chw

常见问题

Q1:组织模型中是否可以删除以下对象,如:机构、部门、岗位、职务、职级、人员等?

A:无删除功能,但支持停用。这么处理是为了保证业务历史数据中的组织数据正常留痕显示。

3 - 权限管理

authotity management

概述

用户中心提供4A级统一安全管理,以RBAC模型为基础构建的完整权限体系,同时支持基于国家保密标准的三员分离、涉密信息系统的分级保护等。主要从特征如下:

  • 统一账号:集中协同账号管理,包括企业员工账号、外部人员账号、设备账号等;
  • 统一认证:提供丰富的认证方式,包括登录及密码策略配置,登录设备管理,账号及IP锁定管理,用户在线管理;
  • 统一授权:以RBAC模型为基础构建的完整权限体系,包括功能权限、数据权限、字段权限;
  • 统一审计:提供详细的日志审计,包括登录及异常登录日志,操作日志,授权日志,越权日志等

1.1 角色介绍

角色 介绍
根机构管理员 拥有用户中心完全的管理权限,包括:用户管理、角色管理、授权管理、安全管理、日志管理、权限审计、认证服务
普通机构管理员 仅拥有部分管理权限,包括:用户管理、角色管理、授权管理、日志管理

1.2 术语说明

名词 含义
用户 即系统中的账号
角色 特定权限的集合
资源 主要指各种业务对象,包含:菜单、页面、控件、按钮等
权限 角色可使用的功能,分角色的功能权限和角色的数据权限
功能 指对资源的操作,是资源与操作类型的二元组,如增加销售单、修改销售单等
操作类型 对资源可能的访问方法,如增加、删除、修改等
功能权限 指能干什么,如新建销售订单等
数据权限 指能在哪里干什么,如:查看北京分公司销售部的销售订单

1.3 关键操作步骤

序号 步骤 步骤说明
1 用户管理 内部用户、外部用户来自于组织模型自动注册、开通 特殊用户需要手动新建
2 角色管理 预置角色、应用角色是自动追加的,无需手动新建 按需创建机构角色
3 授权管理 普通人员角色、外部联系人角色自动按类型授权,无需手动授权 按需将应用角色、机构角色授权给用户
4 认证方式 按需设置认证服务
5 安全设置 登录及密码策略 三员分离设置
6 查看日志 查看登录日志、操作日志、授权日志、越权日志
7 审计 根机构管理员、审计管理员查看审计日志、做权限审计
8 udc udc中使用角色权限管理,见「低代码平台操作手册 - 2.11角色权限」

关键操作说明

2.1 用户管理

用户类型分为三类:内部用户、外部用户、特殊用户,其中内部用户、外部用户来自于组织模型自动注册、开通,仅特殊用户需要手动新建。

1)内部用户

随组织模型的人员及任职管理同步创建内部用户,支持以下管理方式:

  • 查看用户权限
  • 启用/停用用户
  • 重置用户密码

descript
2)外部单位用户

随组织模型的外部单位人员管理同步创建外部单位用户,支持以下管理方式:

  • 查看用户权限
  • 启用/停用用户
  • 重置用户密码

descript

3)外部个人用户

随组织模型的外部个人用户管理同步创建外部个人用户,支持以下管理方式:

  • 查看用户权限
  • 启用/停用用户
  • 重置用户密码

descript

4)特殊用户

特殊用户是无档案的用户类型,分为两种类型:

  • 管理员:用于授权机构管理员、组织管理员,用户登录后会直接进入后台
  • 特殊设备:多用于大屏设备展示报表数据

descript
descript

2.2 角色管理

角色分为三类:

  • 预置角色:系统预置的角色,目前仅有两个,分别是普通人员角色、外部联系人角色
  • 应用角色:各应用内的角色,不允许自定义资源,如流程设计师、会议室管理员等
  • 机构角色:即用户自定义角色,按业务授权需要打包资源形成角色,便于授权
  1. 预置角色
  • 维护权限:仅允许根机构管理员自定义普通人员角色、外部联系人角色的资源
  • 维护资源的范围:仅限于授权给普通人员权限的资源,不可选择授权给keyuser的资源

descript

  1. 应用角色

预置应用的角色,不允许修改;搭建应用的角色说明如下:

  • udc设计态:允许自定义角色的资源
  • 运行态:不允许修改keyuser的资源,允许修改普通人员角色的资源,规则见「1)预置角色」

注:udc中使用的角色权限说明,见「低代码平台操作手册 - 2.19角色权限」

descript

  1. 机构角色

即自定义角色,支持跨应用选择应用资源,便于按业务场景自定义角色,简化授权。

descript
descript

2.3 授权管理

2.3.1 角色授权

授权有两种方式:

  1. 新建授权:新建授权,选择角色、授权对象、设置数据权限
  2. 修改授权:基于已有授权,新增/移除授权对象、添加/移除角色

授权对象:支持授权给具体用户,也支持授权给机构、部门、岗位、职务、职级、组,避免因人员变动,频繁调整授权规则。

c)授权生效机制:近实时生效,最长1分钟内会生效

descript

设置数据权限

注:应用中的实体需要开启【数据权限】,这里的受控实体才会显示,受控维度是受控实体的子实体。

descript

2.3.2 机构管理员授权

用于维护每个机构的机构管理员、组织模型管理员、安全保密管理员(开启三员分离后才显示此管理员)的授权。仅根机构管理员有权限维护机构管理员,共有两个入口:

  • 组织模型:机构管理页面 - 设置管理员
  • 用户中心:授权管理 - 机构管理员授权

descript
descript

2.4 安全管理

2.4.1分级保护

2.4.1.1 三员分离

  • 系统提供三员账户:组织管理员,安全保密管理员,安全审计员
  • 安全保密管理员:与机构一一对应,授权行为需要经过「安全保密管理员」审核通过才能生效,包含添加、移除授权
  • 安全审计管理员:租户内仅有一个安全审计管理员,可以查看系统中各个用户行为轨迹
  • 互斥规则:同一个用户不允许同时担任三员中的两员

三员的权限说明:

一级菜单 二级菜单 组织管理员 安全保密管理员 审计管理员
用户管理 内部用户管理 × ×
外部用户管理 × ×
特殊用户管理 × ×
角色管理 - × ×
授权管理 角色授权 × ×
机构管理员授权 × ×
审批列表 ×
安全管理 三员分离 × ×
登录设备管理 ×
账户锁定管理 ×
用户在线管理 ×
水印设置 ×
安全保密管理员配置 - × ×
安全审计管理员配置 - × ×
日志管理 登录日志
操作日志
授权日志
越权日志
权限审计 资源审计
用户权限审计
认证服务 - × ×

开启三员分离功能

descript

  1. 组织管理员

见组织模型操作手册

  1. 安全保密管理员

安全保密管理员与机构一一对应,

  • 负责授权信息的审批,包含权限的添加、移除
  • 查看日志
  • 权限审计
  • 安全保密管理员的授权维护

descript

  1. 安全审计管理员

租户内仅有一个安全审计管理员,支持授权多人,仅支持根机构管理员授权第一批安全审计管理员。

安全审计管理员可做的操作如下:

  • 查看审计日志
  • 查看资源、权限审计信息
  • 授权安全审计管理员

descript

2.4.1.2 密级管理

密级管理是对人员、业务数据进行分级管理,是有效保障信息安全的管理方式。

第一步:根机构管理员/用中心管理员在后台 - 用户中心 - 安全管理 - 分级保护管理页面,开启密级管理,按需维护密级枚举。

descript

descript

第二步:给人员定密,可以按人员定密,也可以按岗位批量给人员定密

descript

第三步:前台业务人员给业务数据定密,如发文给文单、附件定密等

第四步:人员查看业务数据,或处理流程选人受密级规则过滤

2.4.2 登录及密码策略

需要登录系统管理员进行设置,支持设置以下内容:

  • 用户名生成策略:按手机号、姓名全拼、手动输入自动生成默认用户名,默认策略是按手机号生成用户名
  • 密码强度设置:设置密码的强度要求规则
  • 修改密码规则:设置密码的有效期,到期强制修改密码
  • 设置与找回密码的验证方式:设置、找回密码时的验证方式,可选短信、邮件,多选
  • 登录保护:设置密码验证失败多次后,增强验证、锁定账号
  • IP访问控制:设置密码验证失败多次后,增强验证、锁定IP
  • 超时保护:设置超时无操作自动锁屏

descript

descript

2.4.3 登录设备管理

登录设备管理是为了将在保证使用安全的同时,不影响用户的使用体验设计的。主要策略是:

  1. 登录新设备需要短信验证并绑定设备
  2. 手机号+短信验证码登录的,默认绑定设备
  3. 本人、机构管理员可管理登录设备
  4. 解绑设备后,再次登录需要重新验证绑定

descript

descript
descript

2.4.4 账户锁定管理

  • 操作内容:解锁锁定账号、锁定IP
  • 操作权限:机构管理员

descript

2.4.5 用户在线管理

对管理员来说,用来查看、管理系统在线人员;对普通用户来说,查看、管理个人账号的当前在线情况和历史在线记录。保障用户账号的在线安全。

1)后台管理员

descript

2)前端用户

web端

descript

桌面客户端

descript

2.4.6水印设置

水印从以下两个方面解决数据安全问题:

  1. 防止截图、文件下载等方式的数据泄露
  2. 便于事后追溯
  3. 管理员设置

按应用控制水印的显示。

descript

  1. 前端显示效果

descript

2.5 日志管理

为了系统安全、合规、留痕,记录了用户在系统的敏感操作行为,并提供备查、审计。

  1. 登录日志

记录用户的登录、退出时间和在线状态。

descript

  1. 操作日志

记录用户操作除角色授权之外的操作。

descript

  1. 授权日志

记录角色授权记录。

descript

4)越权日志

记录越权访问记录动作,并不意味了访问成功。

descript

2.5 权限审计

用于审计管理员做资源和权限审计。

  1. 资源审计

支持查看实体资源、菜单资源、其他资源。

descript

  1. 用户权限审计
  • 角色:支持查看用户拥有的角色权限
  • 其他资源:支持查看用户拥有的资源权限,如指定的门户、报表、系统组等资源

descript

2.6 认证服务

AD/LDAP统一认证

descript

案例

场景:开启三员分离的情况下,给销售人员,需要授予客户管理、费控管理、YonBIP的应用权限。

视频演示:用户中心授权管理案例.mp4

4 - 流程管理

整体概述

组织级统一的开放的智能化的流程管理平台,帮助企业实现流程全过程的数字化与管理,包括流程的梳理与规划 – 设计与模拟 - 流程集成 - 执行与自动化 - 运维与监控 – 分析与优化。

1.1 手册说明

本操作手册将按照下图所示流程设计和使用步骤进行介绍。

descript

1.2 角色介绍

角色 介绍
机构管理员 机构管理员作为一个机构的管理员,可对用户进行角色授权
流程设计师 机构管理员可以为用户授予流程设计师角色,该角色拥有后台【流程管理中心】菜单权限,可创建流程应用,在流程应用中创建流程模板,并对流程模板执行发布、测试、上线、使用授权等一系列操作
流程发起人 即流程的发起人员
流程处理人 即流程的处理人员
流程督办人 对在途流程进行督办的人员,督办人可对流程超期或异常等情况进行督办干预操作,如催办、移交、跳过、编辑流程、异常处理等
流程分析师 对流程效率进行分析的人员,从而优化流程和组织绩效
试、上线、使用授权等一系列操作

1.3 术语介绍

名词 含义
流程应用 流程应用作为流程模板的载体,可以在一个应用中创建一组流程模板。应用由实体、表单、微流程、生单规则、流程模板等一系列功能组成,通过功能的灵活配置可以实现复杂的业务流程需求。如通过生单规则实现费用申请单一键生成借款单
实体 实体用于创建表单字段,一个实体对应一个数据库表
表单 表单由多个控件/组件组成,用于数据填报和收集
微流程 微流程看起来像流程图,是一种表达逻辑的可视化方式,提供一个个逻辑单元,比如条件分支、循环分支、实体操作、控件操作等。微流程包括前端微流程和后端微流程,前端微流程用于一些表单效果的实现,如通过一个组件值控制另一个组件的状态;后端微流程用于触发一些业务数据的处理逻辑,如借款申请通过后在借款台账中新增一条借款数据
生单规则 生单规则是根据某一单据生成另外单据的规则,如通过费用申请单生成借款单
流程模板 流程模板是一个表单和流程都预设好的标准业务流程,用户选择流程模板发起时,只能填写预设的表单,以及按照预设的流程流转

1.4 流程设计步骤

角色 步骤 步骤说明
机构管理员 1 角色授权 给用户授予流程设计师角色,用户才可创建流程应用
流程设计师 2 建应用 创建流程应用,推荐将有相关性的一组流程模板创建在一个应用中,配置更加便捷。如将有生单关系的费用申请单和借款单创建在一个应用中
3 建实体 创建流程模板的表单字段
4 建基础数据 创建字段关联的枚举、流水号、基础资料等
5 建页面 创建流程模板的表单页面
6 建流程模板 创建流程模板,配置表单,制作流程
7 发布 流程模板设计好后,进行发布
8 流程仿真 对发布的流程模板进行上线前模拟测试
9 灰度体验 在正式使用前,授权小部分用户灰度体验测试
10 正式使用 正式上线使用并进行使用授权

1.5 流程使用步骤

角色 步骤 步骤说明
流程发起人 1 发起流程 发起人选择流程模板,填写表单内容并发送
流程处理人 2 处理提醒 处理人会收到处理提醒,包括待办提醒、超期提醒等
3 处理流程 处理人可对流程进行处理,包括提交、回退、移交、加签、会签、知会等操作
流程督办人 4 流程督办 流程设计师可为流程设置督办人,督办人可对流程超期或异常等情况进行督办干预操作,如催办、移交、跳过、编辑流程、异常处理等
流程分析师 5 流程效率分析 流程分析师可查看流程效率分析报表,优化流程和组织绩效

2.【流程设计】关键步骤介绍

当前角色:机构管理员

2.1 角色授权

用户要进行流程设计,首先需要找机构管理员授权流程设计师角色:机构管理员从【右上角->头像->后台管理】进入后台,在【用户中心->授权管理->角色授权】中为用户授权"BPM引擎"的"流程设计师"角色

descript
用户被授权流程设计师后,进入后台,即可查看【流程管理中心】菜单

descript


当前角色:流程设计师


2.2 建应用

进入【流程管理】界面,选择分类创建应用,该应用下的流程模板上线后会挂在该分类下

descript

如在"营销类"下创建"合同管理"应用,应用内包括"销售合同单"和"合同预审单"两个流程模板,上线后挂在"营销类"下,截图如下:

descript

应用创建成功后,跳转到该应用的设计器界面

descript

2.3 建实体

1)实体介绍:一个实体在底层对应一个数据库表,在实体中创建表单字段。可为实体创建子实体,支持"一对多"或"一对一"的实体关系

实体关系 使用场景
一对多 即父实体的一条数据对应子实体的多条数据,如一个费用报销单对应多条报销明细
一对一 即父实体和子实体之间是一一对应关系,当所有字段放在一个实体,信息量较多且可以归类时,可以使用“一对一”,一般是常用属性+附加属性,如一条用户基本信息对应一条用户附加信息

2)使用场景:

以"销售合同单"为例,页面包括"合同基本信息"和"合同税目列表",一条基本信息会对应多条税目列表,需要创建主实体和一对多的子实体,主实体用于创建"合同基本信息"的字段,子实体用于创建"合同税目列表"的字段,如下所示。

descript

descript

2.3.1 字段

在实体中可以创建不同数据类型的字段,根据表单字段要求选择相应类型创建即可

descript

字段类型介绍如下:

字段类型 使用场景
文本
多行文本
整数
长整数
小数
货币
日期
时间
日期时间
布尔
选项集 提供固定的几个选项供用户选择,选项集定义见2.4.1 选项集/枚举
枚举 提供固定的几个选项供用户选择,枚举定义见2.4.1 选项集/枚举
附件
实体 1)建实体字段后可以引用该实体中的字段,如创建一个人员实体字段后,可以引用人员实体中的姓名、电话、邮箱等字段2)可选的实体包括:(1)当前应用的实体(2)依赖应用的实体,在【应用->依赖】中可依赖应用(3)当前应用的基础资料,基础资料定义见2.4.4基础资料
流水号 发起流程后自动生成的一串唯一性编号,流水号定义见2.4.3 流水号
正文
意见
文号

2.3.2 规则

配置条件对字段进行必填、唯一性约束等,如发起者<18时,身份证必填。详细用法参考:[低代码操作手册]{.underline}

descript

2.3.3 参照

  1. 参照定义:实体在业务中需要引用其他实体的数据,低代码平台提供标准规范的引用模板,称之为"参照方案",承载参照方案及参照内容的控件,称之为"参照控件"。参照控件可配置参照携带,即将引用实体的字段值填充到页面的控件中
  2. 使用场景:流程关联,例:在销售合同单中关联已结束的合同预审单,并将合同预审单的客户信息填充到销售合同单的客户信息中。

(1)前端效果:

step1:点击销售合同单中的“合同预审单”控件

1719976961266

step2:弹出合同预审单数据选择弹窗

1719977000457

step3:选择一条合同预审单数据后,“流程标题”显示在参照控件中

1719977025551

step4:参照数据支持点击跳转到详情页面

1719977058421

1719977077606

step5:同时合同预审单的客户信息填充到销售合同单的客户信息中

1719977114706

(2)设计步骤:

step1:在合同预审单实体中创建参照方案

1719977169454

1719977242682

step2:在销售合同单实体中创建字段“合同预审单”,选择实体“合同预审”

1719977254726

step3:在销售合同单表单中拖入创建好的“合同预审单”字段,显示为参照控件,控件上显示在“合同预审”实体上创建的参照方案

1719977262848

step4:设置参照携带:将合同预审单中“客户名称(甲)”、“客户名称(乙)”、“客户名称(丙)”三个字段的值填充到当前销售合同单中“甲方”、“乙方”、“丙方”三个控件中

1719977277213

1719977285405

3)参照详细用法参考:[低代码操作手册]{.underline}

2.3.4 事件

创建事件,当事件触发后,事件监听者会接收到该事件从而执行某些动作,如借款申请审批通过后,在借款台账中增加借款信息,详细用法见:[低代码操作手册]{.underline}

1719977316730

2.3.5 索引

索引用法参考:[低代码操作手册]{.underline}

2.4 建基础数据

基础数据包括选项集、枚举、字段集、流水号、基础资料。基础数据被创建后,可在【实体->字段】菜单创建相应类型的字段时进行选择引用。基础数据介绍如下:

2.4.1 选项集/枚举

选项集和枚举的区别是,选项集只支持一级且发布后不可以在运行态修改,枚举支持多级且发布后可以在运行态实时修改生效。详细用法参考:[低代码操作手册]{.underline}

1)选项集:只支持一级

descript

2)枚举:支持平级层级、多级层级和级联层级三种类型

descript

枚举类型 说明 前端效果
平级枚举 只支持一级枚举
1719913825892
多级枚举 一个控件中显示多级枚举
1719913836041
级联枚举 多个控件的枚举是联动关系
1719913836041

2.4.2 字段集

字段集是通用的一个字段集合,可在不同实体中进行复用,减少字段的重复配置工作。详细用法参考:[低代码操作手册]{.underline}

2.4.3 流水号

  1. 流水号介绍:

发起流程后自动生成的一串唯一性编号,流水号可按固定规则生成,规则可由四类元素构成,介绍如下:

构成元素 介绍
实体字段 根据实体字段的值显示
上下文字段 根据当前登录信息显示,包括:登录日期、登录组织、登录用户
流水号 根据实体字段/上下文字段自增的一串序列号
常量 固定值
  1. 使用场景:如销售合同单的合同编号

descript

编号规则示例 固定值 实体字段 上下文字段 流水号
XSHT 登录日期(yyyymmdd) 3位流水号(001、002…)
生成编码效果 XSHT20220808001

2.4.4 基础资料

  1. 基础资料介绍:

基础资料是企业的一些公共基础数据表,例:企业的印章资料列表,数据示例如下:

印章 印章描述 印章负责人 印章管理员
公章 用于公司对外事务处理,工商,税务,银行等外部事务处理事需要加盖 邹秋 严福
财务专用章 用于公司票据的出具,支票等在出具时需要加盖,通常称为银行大印鉴 邹秋 施嘉懿
合同专用章 通常在公司签订合同时需要加盖 邹秋 慎半雪
法定代表人章 用于特定的用途,公司出具票据时也要加盖此印章,通常称为银行小印鉴 杨桦 施乐
发票专用章 在公司开具发票时需要加盖 杨桦 王希
  1. 基础资料使用场景:

在页面中选择基础资料表的数据,例:在销售合同单中,需从印章资料列表中选择印章,并将印章的其他信息如印章管理员带入到当前表单展示。

(1)前端效果:

step1:点击“印章”控件

1719977472885

step2:弹出弹窗,显示印章资料列表

1719977481990

step3:选择某个印章后,印章名称显示到控件中

1719977493042

step4:同时印章的管理员信息填充到印章管理员字段中

1719977501163

(2)设计步骤:

step1:创建基础资料“印章资料列表”,定义列表字段

1719977578495

step2:在销售合同单实体中,创建实体类型字段“印章”,关联创建的基础资料“印章资料列表”

1719977590057

step3:在销售合同单中拖入“印章”字段,显示为一个参照控件,并设置该参照控件显示印章资料列表的“印章名称”

1719977599224

step4:设置参照携带:将印章资料列表的“管理员”的姓名填充到当前表单的“印章管理员”控件中

1719977614069

1719977624682

step5:发布应用,应用发布成功后才可以在应用外【基础数据/基础资料】查看“印章资料列表”并维护列表数据

1719977624682

1719977654207

step6:录入基础资料“印章资料列表”的数据

1719977664133

在流程节点中也可以配置基础资料表中的人员,例:销售合同单流程需要印章管理员审核。以下内容涉及流程设计,可在学习[2.6建流程模板]{.underline}后再进行查看。

  1. 前端效果:

    step1:在销售合同单中选择印章资料表的一个印章,对应的印章管理员是“严福”

  2. 1719978865237

step2:流程会经过印章管理员“严福”审核

1719979068667

  1. 设计步骤:

    step1:在印章资料列表配置印章管理员,字段类型为人员实体

    1719984823875

    step2:在流程设计中添加“路径表”节点,可选印章资料列表的印章管理员

1719984834043

1719984834043

2.5 建页

2.5.1 流程表单

以"销售合同单"为例进行介绍,页面由表单页面和流程外框组成,表单页面包括主表单和明细表,主表单是合同基本信息,明细表是合同税目列表,主表信息和明细表是一对多的关系。

descript

descript

创建步骤如下:

step1:创建页面:选择预置模板“详情页-审批外框”

1719985002181

模板说明:该模板包括流程相关组件,如流程操作按钮、流程处理意见框、流程意见列表等。如果不使用该模板,则在前端呈现的只是一个单一的表单页面,使用该模板后,在前端呈现的页面会包含流程相关组件

step2:创建主表单:在页面拖入数据控件如“单一记录”,选择主实体“销售合同”的字段,字段控件显示在页面中

1719985028981

1719985040091

1719985049740

step3:创建明细表:在页面拖入数据控件如“重复表录入”,选择实体关系下的子实体“税目列表”的字段,字段控件显示在页面中

1719985135101

1719985060815

1719985135101

2.5.2 辅助信息

  1. 辅助信息介绍:辅助用户进行流程发起和审批的辅助决策信息,在辅助信息页可配置流程数据及报表数据等
  2. 使用场景:如员工发起补卡申请时,部门经理审批会参考该员工的历史补卡申请,以确定补卡是否正常

(1)前端效果

step1:审批流程时,点击“辅助信息”按钮,弹出辅助信息页,显示当前发起人的历史补卡申请

1719985181620

step2:可点击历史补卡申请穿透查看详情

1719985192285

(2)设计步骤:

step1:选择预置模板“辅助信息-我的流程”创建辅助信息页

1719985307358

模板说明:该模板专用于创建辅助信息页

step2:在页面拖入“我的流程”控件

1719985327419

控件说明:该控件用于展示流程数据

step3:“我的流程”控件属性设置,对于该员工的本月历史补卡申请:选择数据范围为“我的已办和待办”,发起人为“当前发起人”,发起时间为“本月”

1719985348730

控件属性说明:

1、数据范围:当前操作人的已发数据、已办数据或待办数据

2、已办/待办发起人:待办/已办数据的发起人是当前发起人的还是所有发起人

3、发起时间:数据的发起时间

4、数据所属流程模板:该属性不在控件上设置,而是后续在哪个流程模板上绑定辅助信息页,就显示相应模板的数据

step4:在“补卡申请流程”的“部门经理审核节点”绑定配置好的辅助信息页,则在该节点审核时能查看该辅助信息页

1719985412755

1719985400703

创建流程模板后,在流程节点上绑定辅助信息页,每个节点都是单独配置的,可为不同节点配置不同的辅助信息页

2.6 建流程模板

流程模板可创建"表单流程"和"第三方表单流程"两种类型:

模板类型 介绍
表单流程 表单和流程都使用本系统的
第三方表单流程 流程使用本系统的,表单使用第三方系统的。这种情况一般是客户需要使用自己系统的表单,同时需要使用本系统的流程能力。

descript

下文以"表单流程"的创建进行介绍,最后说明"第三方表单流程"与"表单流程"的差异点。

2.6.1 基本信息

创建流程模板,编辑基本信息,介绍如下:

基本信息 介绍
模板名称 前端显示的流程模板名称,如下所示:
img
模板编号 流程模板的唯一编号
标签 标签具有系统唯一性,流程模板上可设置多个标签,则模板发布上线后,用户在发起流程页面可以通过标签快速筛选模板,如下所示:
1719985678075
实体 选择流程模板关联的实体数据源
发起权限 1、节点权限:开始节点的操作按钮权限2、表单权限:开始节点的表单页面权限
发起辅助信息 开始节点的辅助信息页
流程责任人 即流程模板的负责人
使用说明 在流程模板的基本信息中会展示使用说明
img
流程梳理文档 可上传流程相关的文件,便于追溯和管理

2.6.2 流程设计

1)流程设计:流程元素有两种添加方式:一是从左侧面板上选择流程元素拖曳至流程图的连线上,二是在流程图的流程元素上单击出现面板,选择流程元素进行添加。

descript

2)流程元素介绍:

流程元素 符号 介绍
节点
img
流程中基本的业务活动单元,可以是人员处理也可以是系统行为
网关
img
网关用来控制流程的执行流向,一个网关后可以接多个分支条件,根据分支条件的命中情况走不同的分支
连线
img
节点之间靠连线连接,连线上可设置条件,根据条件的命中情况决定是否走该连线
泳道
img
对流程中的一个分区,有时是池中的一个子分区,它将垂直地延伸整个流程;用于组织/活动分类

3)节点类型介绍

节点类型 使用场景
开始节点 普通开始节点,一般场景下使用
自动开始 自动开始节点中需要配置监听的事件,事件触发后,自动开始节点会接收到事件并自动发起流程。如:借款单的自动开始节点配置“费用申请单的流程结束事件”,则费用申请单流程结束后自动发起借款单
定时开始 定时开始节点中需要设置定时器,定时器触发后,自动发起流程,如:每月1号自动发起月计划
人工节点 普通人员处理节点
知会节点 普通人员处理节点,但处理与否不影响流程流转
路径表 分支条件与节点对应关系通过表格维护,详见2.6.3.1 路径表节点
逐级审批 适用于按组织/人员关系需要往上找多级领导审批的场景,详见2.6.3.2 逐级审批节点
规则节点 规则节点中可以配置一组条件和人员,满足哪个条件则到相应的人员进行处理。详见2.6.3.3 规则节点
脚本找人 适用于复杂的找人逻辑,在节点中配置脚本,通过脚本执行来匹配处理人
动态节点 支持将动态节点的参与人按人员、部门/机构、重复表字段行数据拆分为多个分支,每个分支并行处理,相互不影响。
专人送转 专人送转节点是双向线模式,即我送给他人处理后会回到我再处理,公文场景使用较多
自动节点 自动节点用于配置API调用其他服务,并可将返回结果传给当前流程参数。如:在合同申请单流程中配置自动节点,用于同步合同信息至CRM系统创建订单,并将返回的订单信息同步至当前表单中。详见2.6.3.4 自动节点
消息节点 消息节点用于发送系统消息、短信或邮件,并可自定义消息内容和消息接收对象。详见2.6.3.5 消息节点
定时节点 定时节点中需设置定时器,流程到达该节点时处于等待状态,待定时器触发后,节点执行完毕,流程往下流转
事件节点 事件节点中需要定义事件,事件包含配置的流程参数,当流程到达事件节点时,事件节点抛出事件,可被流程中监听该事件的监听节点接收
监听节点 监听节点中需要配置监听的事件及事件参数和当前流程参数的映射关系,当流程到达该节点时处于等待状态,待接收到相应的事件时,节点执行完毕,流程往下执行
子流程节点 子流程节点中可以配置同实体的任意一个流程,当主流程走到子流程节点时,会发起一个子流程,当子流程运行结束后,主流程的子流程节点执行完毕,主流程往下流转。详见2.6.3.6 子流程节点
结束节点 流程中可以配置多个结束节点,所有结束节点都执行完毕后流程才结束
终止节点 流程中可以配置多个终止节点,只要有一个终止节点执行完毕则流程结束

4)节点属性介绍:节点上单击设置按钮进入节点属性编辑弹窗

descript

descript

节点信息包含两部分:节点信息、节点动作

节点信息 介绍
节点名称 节点的显示名称
参与人 节点的处理人,支持多种选人模式
1、流程相关
1.1流程变量:包括发起者、上节点、表单组织类型字段及其扩展关系
img

1.2流程节点:包含所有可执行的人工节点:人工节点、知会节点、专人送转、路径表、动态节点(动态区间外:只能选择区间外节点;动态区间内:同一区间内节点可选择,拆分后同一分支的节点的所有处理人)
img

2、行政组织:支持机构、部门、人员、岗位、角色等多种维度选择
img

3、业务线:按照业务线选择,如人力业务线、财务业务线等
img
匹配到人时 选项包括:
1、 全部处理:节点匹配的人全部处理
2、 由上节点最后处理人选择:上节点最后处理人往该节点提交时,对该节点匹配的人进行查看和选择,仅选择的人员处理
匹配不到人时 节点匹配不到人包括人员离职停用、岗位或角色下无人等情形,当系统识别到节点无人员匹配后,可按照以下四种方式处理:
1、 上一节点最后处理人选择:上一节点最后处理人往该节点提交时,弹出弹窗让上一节点最后处理人为该节点选择处理人,由选择的人员处理
2、 自动跳过:自动跳过该节点
3、 转督办人选择执行人:自动转给督办人,由督办人为该节点选择处理人,由处理人的人员处理
4、 转候补人处理(配置候补人):转给候补人处理
多人处理策略 当节点参与人配置的是部门、岗位、角色等涉及多人时,可选择并发、串发或竞争
合并处理策略 当流程中涉及相同人员重复多次处理时,可设置合并处理策略,选项包括:
1、 同时收到时合并处理:当处理人同时收到同一流程的多条待办时,则处理一条待办后其他待办自动处理
2、 处理人与发起人相同:当处理人是发起人时,则收到的该流程的待办自动处理
3、 处理人与上一处理人相同:当处理人与上一处理人相同,即需要连续处理,则后一条待办自动处理
4、 处理人已处理过:当处理人在流程中已处理过,则之后收到的待办都自动处理
流程操作权限 流程操作权限定义该节点查看的流程页面包含哪些流程操作按钮,可选的流程操作权限在【流程->操作权限->节点权限】定义,见2.6.4 操作权限
img
表单操作权限 表单操作权限定义该节点查看的流程页面的表单字段的读写状态,可选的表单操作权限在【流程->操作权限->表单权限】定义,见2.6.4 操作权限
img
期限设置
超期前操作
超期后操作
关键节点
处理说明 节点的处理说明可在前端处理时查看
img
节点动作 介绍
知会 支持设置流程级动作:在流程结束时,知会他人;
支持设置知会人员范围:全部已处理人、指定人员;
支持设置被知会人员的表单权限;
img
更新表单数据 目标:采购应用的采购申请中,包含招投标管理,当招投标节点处理通过时,需要修改招标状态为【已完成】
前提:已创建好采购申请应用,并设计了业务流程;
step1:流程动作切换执行时机,设置为事项提交后;
step2:设置更新字段,并进行赋值;
step3:错误提示设置为【更新招投标状态失败】;
配置过程完成,运行时执行到招投标节点提交后按照配置的节点动作执行。
自定义动作 配置过程:在【集成连接->连接器】创建管理第三方系统的API,详见集成平台连接器操作文档;
在【应用->依赖】依赖“连接器”应用,自动节点中才可配置连接器下的第三方API;(具体过程可参照2.6.3.5 自动节点)

5)网关分支条件介绍:网关上单击设置按钮进入网关分支条件编辑弹窗

descript

descript

网关分支条件属性包括:

属性 介绍
网关名称 网关显示名称
执行策略 网关后多个分支条件的执行策略,选项包括:
1、 全部执行:对所有的分支条件同时判断,走所有命中的分支
2、 按序执行:按序号对分支条件进行逐一判断,若命中则走命中分支且不再往下判断,若未命中则继续往下判断。
另:多个分支条件序号相同时,则同时进行判断,走所有命中的分支
分支条件 分支条件设置包括:分支条件显示名称、条件类型及条件表达式

条件类型介绍:

条件 介绍
即无条件执行
自动条件 需设置条件,走到该分支时,系统自动判断分支条件命中情况,命中则走该分支,未命中则不走该分支
自动排他条件 不设置条件,如果自动条件都未命中时走该分支
手动选择 不设置条件,当用户提交时遇手动选择分支,会弹出分支选择面板让用户自己选择是否走该分支
手动条件 需设置条件,当用户提交时遇手动条件分支,会弹出分支选择面板并呈现该分支的命中情况,让用户自己选择是否走该分支

条件表达式介绍:条件内容通过表达式设置,支持多种函数及变量,详细用法参考 [低代码操作手册]{.underline}

descript

6)流程泳道功能介绍

descript

功能 介绍
开启泳道 将泳道拖入画布区域即可。
泳道命名 双击泳道头部区域,文本区域进入编辑态,编辑泳道名称。
拆分泳道 开启泳道后,栏目头部有拆分的提示图标,单击后泳道一分为二,原有名称归于左侧泳道。
img
关闭泳道 画布右下角的显示泳道开关关闭即可。
img
删除泳道 双击泳道标题区域,显示删除图标,单击删除泳道。

2.6.3 节点配置

以下介绍一些特殊类型的节点配置,包括:路径表节点、逐级审批节点、规则节点、自动节点、消息节点。

2.6.3.1 路径表节点
  1. 路径表介绍:流程路径表是通过表格的形式维护分支条件和节点的对应关系,和流程图直接配置分支条件相比,具有清晰易维护的特点,区别如下:
流程案例
img
流程路径表配置效果 流程路径表的配置分两步,一是配置流程路径表,二是在流程图上添加路径表节点。
优点包括:
1) 在表格中维护数据,较为清晰便捷
2) 流程图只显示路径表节点,显示较简单
img

img
流程分支条件配置效果
img

2)操作步骤:

step1:流程路径表设计:在【流程->流程路径表】创建路径表,配置路径表的条件参数和节点名称,条件和节点均可设置多个

1719987604810

step2:流程路径表数据维护:配置条件参数的具体表达式和在节点名称下配置具体处理人

descript

step3:在流程图中添加路径表节点:选择具体路径表的节点

descript

descript

step4:运行态路径表数据维护:应用发布后可在应用外对流程路径表的数据进行更新维护,实时生效,无需重新发布应用

descript

2.6.3.2 逐级审批节点
  1. 逐级审批节点介绍:适用于按组织/人员关系需要往上找多级领导审批的场景。支持按发起者的相对角色(如发起者的直接上级)或发起者部门的相对角色(如发起者部门的负责人)往上找多级两种模式,在流程运行到该节点时会根据节点配置信息生成相应级数的多个审批节点。
  2. 使用场景一:员工发起时,需要员工的直接上级层层审批,直到找到部门负责人为止。例:在某部门,A的直接上级是B,B的直接上级即是部门负责人C,所以审批路径是:B→C。

(1)前端效果:A发起时,到达逐级审批节点"发起者的直接上级"时,生成了两个审批节点,分别对应处理人B和C,如下所示:

descript

(2)操作步骤:

step1:添加逐级审批节点

descript

step2:逐级审批节点配置:审批人选择“发起者直接上级”,审批层级选择“向上到指定人员/发起者部门的负责人”

descript

说明:

1、选择发起者的相对角色时,按人员往上找,不受组织结构影响

2、“最大层级”限制是避免一直匹配不到人无限往上找的情形,只能在该层级范围内往上找人

step3:逐级审批节点添加成功

descript

  1. 使用场景二:员工发起时,需要员工所属部门的部门负责人层层审批,直到部门等于机构下的一级部门为止。例:A属于产品部,产品部的上级部门是研发中心,即是机构下的一级部门,所以审批路径是:产品部的部门负责人→研发中心的部门负责人。
  1. 前端效果:A发起时,到达逐级审批节点"发起者部门的负责人"时,生成了两个审批节点,分别对应产品部的部门负责人和研发中心的部门负责人,如下所示:

descript

  1. 操作步骤:

    step1:添加逐级审批节点

    descript

    step2:逐级审批节点配置:审批人选择“发起者部门的负责人”,审批层级选择“向上到指定层级/一级部门”

    descript

说明:选择发起者部门的相对角色时,可选按行政组织或业务线往上找发起者所属的各级部门

step3:逐级审批节点添加成功

descript

2.6.3.3 规则节点
  1. 规则节点介绍:规则节点中可以配置一组条件和人员,会按照序号顺序往下执行,一旦满足某个条件时,则停止往下执行,节点由该条件对应的人员处理。另外,序号相同的条件会同时判断,节点处理人包括所有命中条件的人员
  2. 使用场景:对于某一个审批节点,不同条件下对应不同的处理人,但在流程图上只配置一个节点进行显示较为合适。例:某流程节点为"打印"节点,当表单条件选择总部打印时,由总部打印员处理,当表单条件选择地区打印时,由地区打印员处理。

(1)前端效果:

descript

(2)操作步骤:


step1:添加规则节点

descript

step2:规则节点配置:配置两个条件,序号相同,同时判断

descript

step3:规则节点添加成功

descript

2.6.3.4 动态节点
  1. 动态节点介绍:适用于多个参与人的节点,每个参与人处理完成流程即可往下流转。支持将动态节点的参与人按人员、部门/机构、重复表字段行数据拆分为多个分支,每个分支并行处理,相互不影响。
  2. 使用场景一:两个串行节点,首个节点多个人员,每个人员处理完成流程都可往下流转。例如:承办机关负责人办理->承办人办理。多个领导每个领导处理时,都选择各自处理的承办人,但每个领导处理后,流转各自处室承办人,不等其他领导处理。

(1)前端效果:

descript

(2)操作步骤:

step1:添加动态节点

descript

step2:动态节点配置:拆分对象选择人员

descript

动态拆分对象说明:

1、人员:将节点匹配到的人员作为拆分对象,每个人员形成一个独立的分支节点

2、人员(上节点选择):节点参与人员是由上节点选择的,每个人员形成一个独立的分支节

3、部门/机构:当节点参与人是多组织表单字段+组织扩展字段,或发起者负责/分管的各部门/各机构+组织扩展字段时,流程执行时会根据组织拆分,每个组织拆分一个节点,每个节点参与人为:具体组织+组织扩展字段

step3:动态节点节点添加成功

descript

3)使用场景二: 任务受理单,重复表中记录多个任务,每条任务有具体的处理人和审查人员。所有任务都处理完成,然后流程至下一个节点方案审阅。

(1)前端效果:

descript

(2)操作步骤:

step1:添加动态节点

descript

step2:动态节点配置:拆分对象选择重复表行

descript

动态拆分对象说明:

重复表行:动态节点首节点是重复表字段人员/组织类型字段时,流程执行时会按重复表行进行拆分,每行拆分为一个节点,节点参与为指定字段数据。

step3:动态节点添加成功

descript

2.6.3.5 自动节点
  1. 自动节点介绍:自动节点用于配置API(包括内部和第三方API)调用其他服务,并可将返回结果传给当前流程参数
  2. 使用场景一:调用第三方服务:如在新员工入职审批流程中,审批通过后通过自动节点同步人员信息到V5系统中创建人员

(1)前端效果:

descript

(2)操作步骤:

step1:在【集成连接->连接器】创建管理第三方系统的API,详见 集成平台连接器操作文档

descript

step2:在【应用->依赖】依赖“连接器”应用,自动节点中才可配置连接器下的第三方API

descript

step3:在新员工入职审批流程中添加自动节点

descript

step4:在“节点激活动作”中配置“连接器/A8连接器”下的“新建人员”API

descript

descript

step5:配置API请求参数和当前流程参数的映射关系

descript

descript

step6:自动节点添加成功

descript

  1. 使用场景二:调用内部服务,如在新员工入职申请单中,审批通过后通过自动节点同步人员信息到本系统中创建人员
  1. 前端效果:

descript

  1. 操作步骤:

    step1:在【集成连接->开放平台】可查看管理内部API,详见 集成平台连接器操作文档

    descript

step2:在【应用->依赖】依赖内部API所属的应用,自动节点中才可配置依赖应用下的内部API

descript

step3:在新员工入职审批流程中添加自动节点

descript

step4:在“节点激活动作”中配置“人员信息查询/维护”下的“新增人员”API

descript

descript

step5:配置API请求参数和当前流程参数的映射关系

descript

descript

step6:自动节点添加成功

descript

自动节点支持重试操作:配置自动重试条件就可以在满足条件的情况下进行自动重试。

descript

2.6.3.6 消息节点

1)消息节点介绍:消息节点用于发出系统消息、短信和邮件,可自定义消息内容(携带流程参数)和消息接收对象。

2)使用场景:在流程运行过程中,将流程相关消息通过指定消息渠道发送给指定接收方

(1)消息发送效果:

消息类型 消息发送效果
系统消息
img
短信
img
邮件
img

(2)操作步骤:

系统消息:

step1:添加消息节点

descript

step2:消息节点配置:消息通道选择“系统消息”、接收对象可配置流程已处理人和组织人员、消息内容可配置流程参数

descript

descript

step3:消息节点添加成功

descript

短信:

step1:配置消息节点可选的短信模板:在【集成连接->基础能力->短信】中配置短信模板

descript

descript

step2:添加消息节点

descript

step3:消息节点配置:消息通道选择“短信”、消息接收对象可选流程已处理人、组织人员和手机号类型的流程参数、短信模板选择step1中配置的短信模板,将“流程参数”和“短信模板参数”映射

descript

step4:消息节点添加成功

descript

邮件:

step1:配置消息节点可选的邮件模板:在【集成连接->基础能力->邮件】中配置邮件模板

descript

descript

step2:添加消息节点

descript

step3:消息节点配置:消息通道选择“邮件”、接收对象可配置“邮件类型的流程参数”、邮件模板选择step1中配置的邮件模板,将“流程参数”和“邮件模板参数”映射

descript

step4:消息节点添加成功

descript

2.6.3.7 子流程节点
  1. 子流程节点介绍:子流程节点中可以配置同实体的任意一个流程,当主流程走到子流程节点时,会发起一个子流程,当子流程运行结束后,主流程的子流程节点执行完毕,主流程往下流转。
  2. 使用场景:对于"集团收文流程",流程流转中可能需要指定多个协办部门进行办件,在所有协办部门的办件流程执行完毕后,集团收文流程继续往下流转

(1)前端效果

step1:主流程“集团收文流程”往“协办部门办件”子流程节点提交时,选择多个协办部门人员,系统自动为选择人员发起多个“协办部门办件流程”,主流程人员可在子流程节点查看各子流程的运行情况,并可穿透查看详情

descript

descript

step2:子流程人员在流程列表中可以看到系统自动发起的子流程,可查看子流程详情,还可点击“查看主流程”按钮穿透查看主流程详情

descript

descript

descript

(3)操作步骤

step1:创建子流程模板"协办部门办件流程"

descript

step2:创建主流程模板"集团收文流程",在流程图中添加子流程节点

descript

step3:子流程节点配置:选择子流程"协办部门办件流程",设置子流程发起者由上节点选择,多个子流程并发,主流程和子流程可互相查看

descript

step4:子流程节点添加成功

descript

2.6.3.8 循环节点

2.6.4 操作权限

操作权限包括表单权限和节点权限,创建后可在各节点的节点属性中进行设置。介绍如下:

1、表单权限

即表单控件的编辑/只读/隐藏权限,可为不同的节点设置不同的表单权限。如:发起者拥有表单全部内容的编辑权限,审核者只有表单内容的只读权限或对部分控件有编辑权限

descript

2、节点权限

1)节点权限介绍:即流程处理者拥有的流程操作权限,可针对不同节点的角色设置不同节点权限。如:财务审核人员有同意、不同意按钮的权限,出纳人员只有提交按钮的权限。

descript

2)节点权限类型:基于RASCI责任分配矩阵模型,定义节点权限类型。

角色 角色定位 权限类型
批准者 A: Accountable 负责批准与布置任务,具有目标导向,负责确定目标、确定目标牵头者(即R),并评价“R”所承担目标的完成情况。 审批
负责者 R: Responsible 负责牵头完成“A”布置的任务与目标,具有结果导向,对“A”布置的任务与目标的结果负全责。所承担任务与目标与其他部门(或岗位)配合时,负责确定需要的配合部门,确定配合部门的工作内容、工作标准等。 协同
辅助者 S: Support 负责配合“R”完成指标的工作,达到既定的目标。对于同一任务,“R”可指定多个“S”。 会签
告知者 I: Informed 应及时被通知结果的人员,却不必向他/她咨询、征求意见 知会
咨询者 C: Consulted 负责为各个相关的角色提供咨询服务 咨询

3)节点权限包括"预置"和"自定义"两种:

预置:由机构管理员在【流程管理中心->流程权限】预置,该机构的所有应用的流程模板都可以查看和使用预置节点权限。

descript

自定义:由流程设计师为当前应用创建,只有当前应用下的流程模板可以查看和使用

descript

4)流程操作介绍:

流程操作 使用场景说明
发送 用于发送流程,发送后流程流转到下个节点
保存草稿 用于发起者填写表单内容后,保存为草稿,暂不发送
多人填写 用于表单内容需要多人填写的场景,填写完内容后转给他人继续填写,由最后一个人填写完毕后发送流程。
提交 表示流程处理完成,如出纳打款,提交后流程往下流转
同意/不同意 用于审批权限类型的节点,代表了审批意见。如财务审核,同意表示审批通过,流程往下提交,审批意见记录为同意;不同意表示审批不通过,依据设定的流转规则可执行回退、终止、撤销等动作,审批意见记录为不同意
已阅 用于知会事项的处理,支持两种已阅模式:查看变已阅或点击已阅按钮变已阅
暂存待办 表示处理者已经接收到该事项,正在处理该事项,还没处理完成。
保存草稿 用于处理者保存输入的意见内容,暂不提交
撤销 当流程因为某种原因不需要再继续流转处理时,发起者可以撤销流程,流程会回到发起者的待发中。当处理者或者审核者审核流程时,发现流程存在重大问题时,可以撤销流程,由发起者重新填写。
终止 用于流程因某些原因需要中途终止的场景,发起者或处理者都可以进行操作。比如采购流程进行到一半时发现采购物品不需要了,可终止流程不再往下进行。
回退 当处理认为流程存在问题时,可以将流程回退到之前的节点,并且可以针对具体情况选择被回退对象处理后,是否需要流程重新流转。
移交 作为事项处理者,表示该事项不归我处理 ,转办给他人处理,不承担该事项权责。
加签 作为流程处理者/发起者,认为流程需要增加一个处理者时,可以用到加签。如果需要增加的处理者与【我】一起给出意见,可以使用“加签到节点内”或”加签与【我】并列;如果需要增加的处理者在【我】之后给出补充意见,可以使用“加签到【我】后面。
减签 用于可能需要简化当前流程处理的场景,减少流程的审批节点
会签 作为流程处理者/发起者,会签给辅助者,由辅助者给出意见后,再进行处理。
咨询 用于该事项暂时无法给出意见,需要咨询他人的场景,并且被咨询人是否回复不影响流程提交。
知会 用于知会给他人知晓,不影响流程,在任何事项状态下均可以知会
转发 用于将流程转发到与他人或群组的聊天会话中,他人可快捷点击查看,比如发起请假流程时,可转发到与领导的聊天窗口中,领导可快速点击审批
流程挂起 当流程因某些业务原因暂时不需要处理时,可由发起者/处理者将流程挂起,挂起后所有待办无法处理,取消挂起后待办恢复处理。
流程关注 当需要跟踪流程处理进度或者重点关注某个流程时,发起者或处理者可以进行流程关注,支持关注整个流程、重要节点或人员。
流程评分 用于对当前流程进行评分,评分维度可以依据实际业务需求进行设定,如服务态度、处理质量、处理速度等
查看流程 可实时查看流程的流转进度,及其详细的流转日志
复制表单 可一键复制历史表单数据到当前表单,稍作修改后便可发起流程,比如周报、月报
取回 当处理者发现处理有误,其下一节点还未处理时,可以取回重新处理

2.6.5 高级设置

高级设置主要包括动态标题、办理时限、转发按钮权限(转发按钮受双重权限控制,只有此处及【节点权限/转发】都勾选,才对用户可见)、减签、流程复活、加签/会签可选权限范围、流程评分、时长计算方式;

descript

descript

2.6.6 参与人仿真

参与人仿真主要针对人工类节点在设计时,及时仿真获取参与人,提高实施人员的设计效率。已支持的功能节点有:【人工节点】、【知会节点】、【规则节点】、【动态节点】、【专人送转-人工节点】、【专人送转-规则节点】。

descript

参与人仿真时,如果依赖了相关参数:如发起者、上节点、表单字段等,需要设置相关变量,触发仿真操作。仿真结果按照设置的参与人分别按行逐条展示,并显示仿真的整体参与人信息。

其中,【规则节点】也支持规则条件后的参与人仿真,不支持条件仿真。

descript

2.6.7 流程扩展

1)流程级节点动作

流程属性介绍:流程设计器左上角的属性设置图标,支持单击进入设置流程属性

descript

属性说明:

流程动作 介绍
知会 支持配置流程级知会动作,在流程结束时,知会相关人。
更新表单数据 支持配置流程级更新表单数据,根据时机控制,更新相关实体数据。
自定义动作 流程属性里支持配置流程级自定义动作,根据时机控制,执行相关业务动作,满足业务自动化的需求。

2)事项级节点动作

人工节点、专人送转、路径表支持节点动作设置,在节点属性栏支持切换配置节点动作,动作说明如下:

节点动作 介绍
知会 支持配置节点级知会动作,在节点激活时,知会相关人。
更新表单数据 支持配置节点级更新表单数据,根据时机控制,更新相关实体数据。
自定义动作 支持配置节点级自定义动作,根据时机控制,执行相关业务动作,满足业务自动化的需求。

使用场景:采购应用中,使用较多监听BPM节点事件,即流程走到「招标确认」节点时,需要更新招标状态为「已完成」。

操作步骤:

前提:流程设计
img
step1:定标节点配置节点动作:①选择更新表单数据执行时机;
img
②设置更新字段,选择招标状态作为更新字段;③对字段进行赋值,状态为「已完成」;④设置错误提示;
img
step2:发起采购流程,执行到定标前招标状态为「待确认」;
img
step3:定标审批通过,招标状态变更为「已完成」;
img

2.7 发布使用

流程设计好后,进行发布使用。对当前设计版本进行发布,发布成功后,在已发布状态栏显示新发布版本,有仿真、灰度体验、正式使用三个操作,介绍如下:

操作 介绍
仿真 对流程模板进行上线前模拟测试,详见2.8流程仿真
灰度体验 1、 在新版本正式上线使用前,进行小规模的灰度体验测试,实现新版本平滑升级
2、 灰度体验也是线上真实使用,用户在线上发起流程时,会优先调用灰度体验版本,而非正式运行版本
3、 新版本正式使用后,灰度体验自动失效
4、 灰度体验非必需,可以直接跳过此步骤进行正式使用
正式使用 1、 对新版本进行正式上线使用,可以设置生效时间,在到达生效时间后,线上运行版本自动切换成当前版本
2、 在[流程授权]页签对流程模板进行正式使用授权
3、 正式使用版本修改并重新发布,自动上线,无需手动操作

2.8 流程仿真

2.8.1流程仿真

1)流程仿真介绍:是在流程制作后,在正式上线前对流程进行预先测试。输入测试数据后系统自动输出运行结果,可快速验证流程的分支走向是否正确,以便发现问题及时调整,确保流程上线后能正确运行。流程仿真支持以下两种测试类型:

测试类型 介绍
自动测试 测试流程,输入测试数据后系统自动跑完整个流程,展示流程运行情况
手动测试 测试表单和流程,每一步都需要手动提交,真实模拟线上各个节点查看和处理流程的情况,所见即所得,可验证流程上线后的真实运行效果
  1. 流程仿真步骤:

step1:发布应用,应用发布成功后即可进行仿真

descript

step2:选择应用下的具体模板进行流程仿真,点击进入测试用例页面

descript

step3:创建一个测试用例

descript

descript

step4:若选择自动测试:则进入流程参数填写页面,流程参数只展现影响流程分支流转的流程参数,点击“开始测试”按钮进入测试

descript

step5:测试执行后系统自动跑完整个流程,在右侧实时展现流程运行情况

descript

step6:点击流程图页签,可查看流程图运行情况

descript

step7:每次测试后可以将本次测试结果设为预期,那么下次测试的运行结果将会和该预期比较,若流程运行情况相同,则提示“符合预期”;若流程运行情况不同,则提示“不符合预期”

descript

descript

step8:若选择手动测试:则进入发起流程页面,填写表单内容点击发送,跳转到下一节点处理页面,右侧同时展示流程运行情况。下一节点可继续往下提交,直到所有节点提交完毕,流程结束,右侧展示流程完整运行结果。

descript

descript

2.8.2 参与人仿真

参与人仿真主要针对人工类节点在设计时,及时仿真获取参与人,提高实施人员的设计效率。已支持的功能节点有:【人工节点】、【知会节点】、【规则节点】、【动态节点】、【专人送转-人工节点】、【专人送转-规则节点】。

1719991712067

参与人仿真时,如果依赖了相关参数:如发起者、上节点、表单字段等,需要设置相关变量,触发仿真操作。仿真结果按照设置的参与人分别按行逐条展示,并显示仿真的整体参与人信息。

其中,【规则节点】也支持规则条件后的参与人仿真,不支持条件仿真。

1719991745551

2.9 数据管理

应用发布后,在[数据查询]页签可以进行数据查询列表配置,可以为每个流程按需配置流程和表单字段的数据列表。对于流程的业务负责部门,通过查看和分析列表中的关键业务数据,便于了解业务情况

列表配置 数据查询列表是基于某个实体数据源进行配置的,一个实体数据源可能对应多个流程模板,一个流程模板一定属于某个实体数据源,报表可配置内容如下:
1、 条件:用于过滤数据范围,如流程模板=某个模板
1719992799069

2、排序:数据的排序方式
1719992811433

3、显示:列表显示的字段,可选择流程通用字段和实体表单字段
1719992824851

4、搜索:列表支持的搜索条件,可配置流程通用字段和实体表单字段
1719992835826

5、 列表授权:授予前端用户列表查看权限
1719992845423
列表查看 在[流程中心/数据查询]可查看被授权的数据查询列表:
1、 支持列表数据查看和查询
2、 支持查看每条流程数据的详情页面
3、 支持导出分析
1719992858472

2.10 流程运维

2.10.1流程监控

流程监控为后台流程监控、调整、分析能力的主要入口。流程监控现有界面如下:

descript

流程监控里的流程数据支持按照在途流程、异常流程、办结流程分类。

在途流程支持使用标题、发起人、发起时间、流程状态、流程实例ID、流程期限、当前待办人作为查询条件,支持重置查询条件。

在途流程支持催办、移交、跳过、回退、终止、撤销、流程挂起操作。

异常流程支持使用问题状态、标题、流程实例ID、上报人、上报时间查询,支持重置查询条件。

异常流程支持终止、撤销、标记为已解决操作。

办结流程支持标题、发起人、发起时间、流程实例ID、流程期限、流程状态作为查询条件,支持重置查询条件。

3.【流程使用】关键步骤介绍

用户登录后进入首页

3.1 发起流程

当前角色:流程发起人

从【流程中心->发起流程】进入模板列表,点击模板发起流程

descript

descript

descript

3.2 处理流程

3.2.1 手动处理

当前角色:流程处理人

流程处理人收到待办时,会收到消息提醒,点击消息可跳转到详情页进行处理。也可进入【流程中心->待办流程】进行处理

descript

descript

descript

descript

3.2.2 自动处理

可设置某处理人在某流程或节点,当满足某个条件时,由系统自动审批。通常适用于帮助某些重要领导自动审批一些不重要或风险程度较低的流程或节点,减轻领导审批负担。

自动审批设置

descript

自动审批效果

descript

3.2.3 合并处理

在同一流程中,当某人之前已处理过,再次收到待办时,可由系统合并处理,省去处理人重复审批的操作。当合并处理与自动审批、超期自动跳过、自动发起等多种自动处理策略结合时,需要前端用户在前序节点中手动处理的前提下才进行合并处理,避免处理风险。

自动审批设置
img
自动审批效果
img

3.2.4 代理设置

类型 使用场景说明
代理 适用于事项的权责不发生改变,事项所属人仍是我,只是将处理权赋予给代理人,如领导设置秘书代理其流程。该模式下,被代理人和代理人都会收到事项,并且都可以处理
转授权 适用于事项的权责转移,事项所属人从我变更为授权人。该模式下,仅授权人收到和处理事项,我不再接收此类事项

3.3 流程督办

可为流程设置督办人,督办人可对流程超期或异常等情况进行督办干预操作,如催办、移交、跳过、编辑流程、异常处理等。流程督办包括督办设置和流程督办两个操作步骤。

当前角色:流程设计师

3.4.1 督办设置

流程设计师在【后台->流程管理中心->流程督办设置】进行督办设置。督办设置内容如下:

descript

督办设置内容 介绍
督办数据 1、 流程模板:选择的流程模板的流程数据2、处理人:选择的处理人处理(含预测将处理)的流程数据
督办人 即督办人
查看权限 即督办人对流程详情的查看权限

当前角色:流程督办人

3.4.2 流程督办

督办人在【首页->流程中心->流程督办】进行流程数据督办,页面包括"流程模板"和"督办对象"两个维度,介绍如下:

页面维度 介绍
流程模板
img

即以各流程模板为维度展示流程数据,分为以下状态:
1) 流转中:流转中的流程数据
2) 超期:流转中已超期的流程数据
3) 异常:流程中上报的异常数据,包括用户主动上报的问题和系统自动上报的异常 4) 已办结:已结束和已终止的流程数据
督办对象
1719993442447

即以各处理人为维度展示流程数据,分为以下状态:
1) 督办中:处理人待处理或预测将处理的流程数据
2) 未关注:督办人手动取消督办的关注中的数据,以及处理人已处理的流程数据

3.4 流程效率分析

当前角色:流程绩效管理员

在【首页->流程中心->流程绩效】可进行流程效率查看和分析,包括"流程效率"和"组织效率"两个维度,介绍如下:

页面维度 介绍
流程效率
1719993562964

以“流程模板”为查看视角,查看各个流程模板的流程效率指标。主要是流程负责人关心流程的运行情况,以便进行流程分析和优化
组织效率
1719993572004

以“组织机构”为查看视角,查看机构/部门/人员的流程效率指标。主要是组织管理者关心组织人员的流程处理情况,以便提升组织运营效率

流程分析师具体包括以下角色:

菜单\角色 流程绩效管理员 流程设计师 部门负责人/部门分管领导
流程效率
模板:全系统组织:全系统

模板:有权限的组织:全系统
×
组织效率
组织:全系统模板:全系统

组织:全系统模板:有权限的

组织:本部门的模板:全系统

3.6 流程预测

流程参与人在【查看流程】时,在【查看流程>流程图>流程预测】进入流程预测界面。

descript

预测信息里包含如下要素:

1.预测依据,hover显示;

2.流程级预测信息:流程耗时、流程完成时间;

3.节点级预测信息:审批人、审批完成时间、节点耗时;

4.如果流程无法完整预测:展示可以预测的部分流程信息,展示预测错误信息。

应用案例

销售合同单-流程设计篇.mp4

5 - 集成配置

intergration configuration

5.1 - 组织同步

通过可视化配置,实现V8平台与多个三方异构系统间的组织人员同步。

1、概述

通过可视化配置,实现V8平台与多个三方异构系统间的组织人员同步。

2、集成模式优缺点对比分析

1736492391769

3、集成方向&模式

5.1.1 - V8同步至三方系统

集成模式

5.1.1.1 - COP提供增量查询OpenAPI(推荐)

COP提供增量查询OpenAPI,由三方异构系统定时调用OpenAPI,完成组织同步模式。

1、概述

COP提供增量查询OpenAPI,由三方异构系统定时调用OpenAPI,完成组织同步模式。

2、优缺点

a. 优点

  • COP集成压力小;

b. 缺点

  • 三方系统需要有一定的研发能力,按照COP平台接口要求完成接口调用和字段映射;
  • 数据时效性差,依赖定时拉取时间间隔。

3、集成配置步骤

序号 步骤名称 责任方 使用场景
1 提供组织增量查询接口规范和文档 致远 必须,包含接口定义、签名规则、字段来源等信息
2 API启用 致远 必须,只有启用的API才可以正常进行授权访问
3 新建接入应用 致远 必须,负责分配AppKey和APPSecret、配置访问授权、访问白名单等配置页
4 启用接入应用 致远 必须,未启用的接入应用,访问时会提示接入应用未启用
5 分配APPKey和APPSecret 致远 必须,接口签名核心字段
6 API授权 致远 必须,只有添加权限的额API接口才可以正常访问
7 导出接口文档 致远 非必须,导出所有已经启用的API手册
8 配置访问限流 致远 非必须,根据服务器资源性能,可以配置指定时间段内调用上线
9 配置访问白名单 致远 非必须,开启后,访问白名单之后的API请求将会被拦截
10 调用测试 三方系统 必须,根据平台提供的接口文档和必须字段,使用postmen等工具直接调用,验证网络连通性和信息准确性

4、接口目录

API分类 API名称 接口描述
组织信息查询/维护 根据条件分页查询组织详情 组织(机构+部门)
组织信息同步(基于编码) 根据组织编码查询组织详情 组织详情(机构+部门)
岗位信息查询/维护 根据条件分页查询岗位 岗位
职务信息查询/维护 根据条件分页查询职务 职务
职级信息查询/维护 根据条件分页查询职级 职级
人员信息查询/维护 根据条件查询人员信息 人员详情
人员及任职信息同步(基于编码) 分页查询组织下人员 人员&任职

4.1、接口文档在线查看位置

1720490441002

4.2、接口签名

4.2.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.2.2、签名示例(sign)

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

5、接口清单

5.1、根据条件分页查询组织详情

请求地址

【接口请求地址前缀】/organization/base/unit/selectPageByConditions

请求方式

POST

请求参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
requestId TRUE string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp TRUE int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl TRUE string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
pageInfo TRUE PageInfo 分页
pageNumber pageInfo TRUE int32 当前页数
pageSize pageInfo TRUE int32 每页记录数
pages pageInfo TRUE int32 总页数
total pageInfo TRUE int32 总记录数
needTotal pageInfo TRUE boolean 是否需要查询总记录数
params TRUE map 条件
sort TRUE Sort 排序
orders sort TRUE array[Sort$Order] 排序
direction orders TRUE enum 顺序,可用值:ASC,DESC。
枚举项可选值列表:ASC(ASC),DESC(DESC),
property orders TRUE string 字段,可用值:DTO属性(请参照"响应参数"中content),
createTime,updateTime

请求参数示例

{
  "requestId": 1693208244841,
  "pageInfo": {
    "total": 0,
    "needTotal": "true",
    "pageNumber": 1,
    "pages": 0,
    "pageSize": 20
  },
  "notifyUrl": "",
  "sort": {
    "orders": [
      {
        "property": "createTime",
        "direction": "ASC"
      }
    ]
  },
  "params": { "institutionId": -8572075675821718340},
  "timestamp": 1705902274910
}

响应参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
data PageData 组织信息详情分页列表
pageInfo data PageInfo 分页参数对象
pageNumber pageInfo int32 当前页数
pageSize pageInfo int32 每页记录数
pages pageInfo int32 总页数
total pageInfo int32 总记录数
needTotal pageInfo boolean 是否需要查询总记录数
content data array[OrgUnitDto] 数据集对象
id content int64 组织ID,新建时不必填,修改时必填
institutionId content int64 组织所属机构id。
如果是部门,就是所属机构id;
如果是机构,就是自己id(不作为入参保存)
name content string 组织名称
mnemonic content string 助记符
fullName content string 组织的全路径名称
shortName content string 组织简称
logo content string 图标
code content string 组织编号
type content enum 组织类型。
枚举项可选值列表:
NONE(空),
INSTITUTION(机构),
DEPARTMENT(部门),
OUTSIDE_INSTITUTION(外部(编外)单位),
OUTSIDE_DEPARTMENT(外部(编外)部门),
typeName content string 组织类型名称
parentId content int64 上级组织id
parentName content string 上级组织名称
parentCode content string 上级组织编号
parentUnit content OrgUnitDto 上级组织
firstLevelDepartment content OrgUnitDto 一级部门
parentUnitIdCode content string 上级组织ID(参照使用)(编号)
firstLevelDepartmentIdCode content string 一级部门ID(参照使用)(编号)
effectiveTime content date 生效日期,毫秒时间戳
invalidTime content date 失效日期,毫秒时间戳
path content string 全路径
orgLevel content int32 机构层级
sortId content int32 排序号
isEnable content boolean 状态
description content string 备注
authUserIds content string 授权用户ID集合,
只保存有效人员的id,过滤掉不符合的id
authUserNames content string 授权用户名称集合
businessId content int64 多维组织
orgUnitMetadataDto content OrgUnitMetadataDto 扩展字段
orgId orgUnitMetadataDto int64 组织id
createTime orgUnitMetadataDto date 创建时间,毫秒时间戳
updateTime orgUnitMetadataDto date 更新时间,毫秒时间戳
id orgUnitMetadataDto int64 字段ID
businessId orgUnitMetadataDto int64 业务组织id
createTime content date 创建时间
updateTime content date 更新时间
address content string 地址
officeNumber content string 电话
tax content string 税号
bankAccount content string 银行账号
bank content string 开户银行
isLegalEntity content boolean 是否法人实体
socialCreditCode content string 统一社会信用代码
legalPersonName content string 法定代表人姓名
legalCertificateNumber content string 法定代表人身份证号码
legalPhoneNumber content string 法定代表人手机号号码
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": {
        "pageInfo": {
            "pageNumber": 1,
            "pageSize": 20,
            "pages": 1,
            "total": 1,
            "needTotal": true
        },
        "content": [
            {
                "validate": true,
                "id": "-8572075675821718340",
                "institutionId": "-8572075675821718340",
                "name": "集成演示",
                "mnemonic": "jichengyanshi",
                "fullName": null,
                "shortName": "集成演示",
                "logo": null,
                "code": "aa202401190001",
                "type": "INSTITUTION",
                "typeName": null,
                "parentId": "-1730833917365171641",
                "parentName": null,
                "parentCode": "group",
                "parentUnit": null,
                "firstLevelDepartment": null,
                "parentUnitId": null,
                "firstLevelDepartmentId": null,
                "effectiveTime": 1705593600000,
                "invalidTime": 253402271999000,
                "path": "-1730833917365171641.-8572075675821718340",
                "orgLevel": 2,
                "sortId": 50500,
                "isEnable": true,
                "description": null,
                "authUserIds": null,
                "authUserNames": null,
                "businessId": "-5038278851089511626",
                "orgUnitMetadataDto": {
                    "validate": true,
                    "orgId": "-8572075675821718340",
                    "createTime": 1705658364820,
                    "updateTime": 1705658364820,
                    "id": "-468981164249889576",
                    "businessId": "-5038278851089511626"
                },
                "createTime": 1705658364723,
                "updateTime": 1705658364723,
                "address": null,
                "officeNumber": null,
                "tax": null,
                "bankAccount": null,
                "bank": null,
                "isLegalEntity": false,
                "socialCreditCode": null,
                "legalPersonName": null,
                "legalCertificateNumber": null,
                "legalPhoneNumber": null,
                "upperName1": "集成演示",
                "upperName2": "集成演示",
                "upperName3": "集成演示",
                "upperName4": "集成演示",
                "upperName5": "集成演示",
                "upperName6": "集成演示",
                "upperName7": "集成演示"
            }
        ]
    }
}

5.2、根据组织编码查询组织详情

请求地址

【接口请求地址前缀】/organization/unit/code

请求方式

POST

请求参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
requestId TRUE string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp TRUE int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl TRUE string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
data TRUE SearchUnitConditionApiDto 请求参数数据
codes data TRUE array[string] 组织编码
includeDisable data TRUE boolean 是否包含失效组织,默认不包含
effectiveTime data TRUE string 查询某个时间点时生效的组织,缺省为系统当前时间,
includeDisable为true的时候该字段不生效

请求参数示例

{
  "data": {
    "codes": [
      "aa202401190001"
    ],
    "effectiveTime": "2021-12-30",
    "includeDisable": "true"
  },
  "requestId":1705902274910,
  "notifyUrl": "",
  "timestamp":1705902274910
}

响应参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
data ListData 组织详情
content data array[OrgUnitDataDto] 数据集对象
name content string 组织名称
shortName content string 组织简称
code content string 组织编号
type content enum 组织类型。
枚举项可选值列表:
NONE(空),
INSTITUTION(机构),
DEPARTMENT(部门),
OUTSIDE_INSTITUTION(外部(编外)单位),
OUTSIDE_DEPARTMENT(外部(编外)部门),
parentCode content string 父组织Code,根节点不填
effectiveTime content string 生效日期
invalidTime content string 失效日期
sortId content int32 排序号
isEnable content boolean 状态
description content string 备注
metadataList content array[OrgMetadataValueDataDto] 自定义扩展属性数据
k metadataList string 扩展字段的名称
v metadataList string 扩展字段的的值
address content string 地址
officeNumber content string 电话
tax content string 税号
bankAccount content string 银行账号
bank content string 开户银行
isLegalEntity content boolean 是否法人实体
socialCreditCode content string 统一社会信用代码
legalPersonName content string 法定代表人姓名
legalCertificateNumber content string 法定代表人身份证号码
legalPhoneNumber content string 法定代表人手机号号码
createTime content date 创建时间,毫秒时间戳
updateTime content date 更新时间,毫秒时间戳
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": {
        "content": [
            {
                "validate": true,
                "name": "集成演示",
                "shortName": "集成演示",
                "code": "aa202401190001",
                "type": "INSTITUTION",
                "parentCode": "group",
                "effectiveTime": "2024-01-19",
                "invalidTime": "9999-12-31",
                "sortId": 50500,
                "isEnable": true,
                "description": null,
                "businessId": "-5038278851089511626",
                "metadataList": [],
                "address": null,
                "officeNumber": null,
                "tax": null,
                "bankAccount": null,
                "bank": null,
                "isLegalEntity": false,
                "socialCreditCode": null,
                "legalPersonName": null,
                "legalCertificateNumber": null,
                "legalPhoneNumber": null,
                "createTime": 1705658364723,
                "updateTime": 1705658364723
            }
        ]
    }
}

5.3、根据条件分页查询岗位

请求地址

【接口请求地址前缀】/organization/base/post/selectPageByConditions

请求方式

POST

请求参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
requestId TRUE string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp TRUE int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl TRUE string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
pageInfo TRUE PageInfo 分页
pageNumber pageInfo TRUE int32 当前页数
pageSize pageInfo TRUE int32 每页记录数
pages pageInfo TRUE int32 总页数
total pageInfo TRUE int32 总记录数
needTotal pageInfo TRUE boolean 是否需要查询总记录数
params TRUE map 条件
sort TRUE Sort 排序
orders sort TRUE array[Sort$Order] 排序
direction orders TRUE enum 顺序,可用值:ASC,DESC。
枚举项可选值列表:ASC(ASC),DESC(DESC),
property orders TRUE string 字段,可用值:DTO属性(请参照"响应参数"中content),
createTime,updateTime

请求参数示例

{
  "requestId": 1705902275548,
  "pageInfo": {
    "total": 0,
    "needTotal": "false",
    "pageNumber": 1,
    "pages": 0,
    "pageSize": 20
  },
  "notifyUrl": "",
  "sort": {
    "orders": [
      {
        "property": "createTime",
        "direction": "ASC"
      }
    ]
  },
  "params": {"isEnable":"true"},
  "timestamp": 1705902275548
}

响应参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
data PageData 岗位详情分页列表
pageInfo data PageInfo 分页参数对象
pageNumber pageInfo int32 当前页数
pageSize pageInfo int32 每页记录数
pages pageInfo int32 总页数
total pageInfo int32 总记录数
needTotal pageInfo boolean 是否需要查询总记录数
content data array[OrgPostDto] 数据集对象
id content int64 岗位ID
name content string 岗位名称
code content string 编号
type content int64 岗位分类的枚举id值
typeName content string 岗位分类的枚举名称
orgId content int64 所属组织
orgName content string 所属组织对应名称
category content enum 岗位分类。
枚举项可选值列表:
NONE(空),
BENCH_MARK(基准岗),
SELF_BUILT(自用岗),
masterOrgId content int64 来源组织id
masterOrgName content string 来源名称
masterPostId content int64 来源岗位id
masterName content string 基准岗名称
issuedRule content enum 使用范围。
枚举项可选值列表:
NONE(没有范围),
INSTITUTION(本机构),
INSTITUTIONS(本机构及下级机构),
ONLY_CHILDREN(仅下级机构),
SPECIFY_INSTITUTION(指定机构),
SPECIFY_INSTITUTIONS(指定机构及下级机构),
businessId content int64 所属业务线id
sortId content int32 排序号
isEnable content boolean 启用状态
description content string 备注
createTime content date 创建时间,毫秒时间戳
updateTime content date 更新时间,毫秒时间戳
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": {
        "pageInfo": {
            "pageNumber": 1,
            "pageSize": 20,
            "pages": 0,
            "total": 0,
            "needTotal": false
        },
        "content": [
            {
                "validate": true,
                "id": "-5045874864559469310",
                "name": "岗位1",
                "code": "P202110280001",
                "type": "-4620025823759349735",
                "typeName": null,
                "orgId": "-1730833917365171641",
                "orgName": "致远互联",
                "category": "SELF_BUILT",
                "masterOrgId": "-1",
                "masterOrgName": "",
                "masterPostId": "-1",
                "masterName": "",
                "issuedRule": "NONE",
                "businessId": "158912402929426432",
                "sortId": 60,
                "isEnable": true,
                "description": "",
                "createTime": 1635385247000,
                "updateTime": 1635385247000
            },
            {
                "validate": true,
                "id": "7568497936381004239",
                "name": "dx岗位",
                "code": "xwAMtn29yK",
                "type": "6541964214010466245",
                "typeName": "技术类",
                "orgId": "-2740929138088457741",
                "orgName": "dx的机构1",
                "category": "BENCH_MARK",
                "masterOrgId": "-1730833917365171641",
                "masterOrgName": "",
                "masterPostId": "2693847020086313280",
                "masterName": "",
                "issuedRule": "NONE",
                "businessId": "158912402929426432",
                "sortId": 70,
                "isEnable": true,
                "description": "",
                "createTime": 1635386908000,
                "updateTime": 1703161499014
            }
        ]
    }
}

5.4、根据条件分页查询职务

请求地址

【接口请求地址前缀】/organization/base/job/selectPageByConditions

请求方式

POST

请求参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
requestId TRUE string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp TRUE int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl TRUE string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
pageInfo TRUE PageInfo 分页
pageNumber pageInfo TRUE int32 当前页数
pageSize pageInfo TRUE int32 每页记录数
pages pageInfo TRUE int32 总页数
total pageInfo TRUE int32 总记录数
needTotal pageInfo TRUE boolean 是否需要查询总记录数
params TRUE map 条件
sort TRUE Sort 排序
orders sort TRUE array[Sort$Order] 排序
direction orders TRUE enum 顺序,可用值:ASC,DESC。
枚举项可选值列表:ASC(ASC),DESC(DESC),
property orders TRUE string 字段,可用值:DTO属性(请参照"响应参数"中content),
createTime,updateTime

请求参数示例

{
  "requestId": "-3185185534174541324",
  "pageInfo": {
    "total": 0,
    "needTotal": "false",
    "pageNumber": 1,
    "pages": 0,
    "pageSize": 20
  },
  "notifyUrl": "",
  "sort": {
    "orders": [
      {
        "property": "createTime",
        "direction": "ASC"
      }
    ]
  },
   "params": {"isEnable":"true"},
  "timestamp": {{timestamp}}
}

响应参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
data PageData 职务详情分页列表
pageInfo data PageInfo 分页参数对象
pageNumber pageInfo int32 当前页数
pageSize pageInfo int32 每页记录数
pages pageInfo int32 总页数
total pageInfo int32 总记录数
needTotal pageInfo boolean 是否需要查询总记录数
content data array[OrgJobDto] 数据集对象
id content int64 职务主表id
name content string 职务名称
code content string 编号
orgId content int64 组织id
businessId content int64 所属业务线id
category content enum 职务类型。枚举项可选值列表:
NONE(空),
BENCH_MARK(基准岗),
SELF_BUILT(自用岗),
masterOrgId content int64 来源组织id
masterOrgName content string 来源名称
masterJobId content int64 来源职务id
masterName content string 基准职务名称
issuedRule content enum 使用范围。枚举项可选值列表:
NONE(没有范围),
INSTITUTION(本机构),
INSTITUTIONS(本机构及下级机构),
ONLY_CHILDREN(仅下级机构),
SPECIFY_INSTITUTION(指定机构),
SPECIFY_INSTITUTIONS(指定机构及下级机构),
orgName content string 组织id对应的名称(不作为入参保存)
sortId content int32 排序号
isEnable content boolean 启用状态
description content string 备注
createTime content date 创建时间,毫秒时间戳
updateTime content date 更新时间,毫秒时间戳
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": {
        "pageInfo": {
            "pageNumber": 1,
            "pageSize": 20,
            "pages": 0,
            "total": 0,
            "needTotal": false
        },
        "content": [
            {
                "validate": true,
                "id": "-1834341499691513847",
                "name": "PFJOB_1635933769253",
                "code": "PFJOB_1635933769253",
                "orgId": "-791902958315615749",
                "businessId": "158912402929426432",
                "category": "SELF_BUILT",
                "masterOrgId": "-1",
                "masterOrgName": "",
                "masterJobId": "-1",
                "masterName": "",
                "issuedRule": "NONE",
                "orgName": "",
                "sortId": 1,
                "isEnable": true,
                "description": "联系地址:北坞村路静芯园",
                "createTime": 1635933764000,
                "updateTime": 1635933770000
            },
            {
                "validate": true,
                "id": "-5262676242410946209",
                "name": "PFJOB_1635933767443",
                "code": "PFJOB_1635933767443",
                "orgId": "-8474839543092329115",
                "businessId": "158912402929426432",
                "category": "SELF_BUILT",
                "masterOrgId": "-1",
                "masterOrgName": "",
                "masterJobId": "-1",
                "masterName": "",
                "issuedRule": "NONE",
                "orgName": "",
                "sortId": 1,
                "isEnable": true,
                "description": "联系地址:北坞村路静芯园",
                "createTime": 1635933767000,
                "updateTime": 1635933767000
            }
        ]
    }
}

5.5、根据条件分页查询职级

请求地址

【接口请求地址前缀】/organization/base/level/selectPageByConditions

请求方式

POST

请求参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
requestId TRUE string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp TRUE int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl TRUE string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
pageInfo TRUE PageInfo 分页
pageNumber pageInfo TRUE int32 当前页数
pageSize pageInfo TRUE int32 每页记录数
pages pageInfo TRUE int32 总页数
total pageInfo TRUE int32 总记录数
needTotal pageInfo TRUE boolean 是否需要查询总记录数
params TRUE map 条件
sort TRUE Sort 排序
orders sort TRUE array[Sort$Order] 排序
direction orders TRUE enum 顺序,可用值:ASC,DESC。
枚举项可选值列表:
ASC(ASC),
DESC(DESC),
property orders TRUE string 字段,可用值:DTO属性(请参照"响应参数"中content),
createTime,updateTime

请求参数示例

{
  "requestId": "6230484731964183507",
  "pageInfo": {
    "total": 0,
    "needTotal": "false",
    "pageNumber": 1,
    "pages": 0,
    "pageSize": 20
  },
  "notifyUrl": "",
  "sort": {
    "orders": [
      {
        "property": "createTime",
        "direction": "ASC"
      }
    ]
  },
  "params": {"isEnable":"true"},
  "timestamp":1705902275451
}

响应参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
data PageData 职级详情分页列表
pageInfo data PageInfo 分页参数对象
pageNumber pageInfo int32 当前页数
pageSize pageInfo int32 每页记录数
pages pageInfo int32 总页数
total pageInfo int32 总记录数
needTotal pageInfo boolean 是否需要查询总记录数
content data array[OrgLevelDto] 数据集对象
id content int64 职级ID
name content string 职级名称
code content string 编号
businessId content int64 所属业务线id
orgId content int64 组织id
levelSort content int32 序号
isEnable content boolean 启用状态
description content string 备注
createTime content date 创建时间,毫秒时间戳
updateTime content date 更新时间,毫秒时间戳
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": {
        "pageInfo": {
            "pageNumber": 1,
            "pageSize": 20,
            "pages": 0,
            "total": 0,
            "needTotal": false
        },
        "content": [
            {
                "validate": true,
                "id": "9029437603602253763",
                "name": "测试职级",
                "code": "L202110270001",
                "businessId": "158912402929426432",
                "orgId": "-1730833917365171641",
                "levelSort": 10,
                "isEnable": true,
                "description": "",
                "createTime": 1635329898000,
                "updateTime": 1635329898000
            }
        ]
    }
}

5.6、根据条件查询人员信息

请求地址

【接口请求地址前缀】/organization/base/member/selectListByConditions

请求方式

POST

请求参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
requestId TRUE string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp TRUE int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl TRUE string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
params TRUE map 条件
sort TRUE Sort 排序
orders sort TRUE array[Sort$Order] 排序
direction orders TRUE enum 顺序,可用值:ASC,DESC。
枚举项可选值列表:
ASC(ASC),
DESC(DESC),
property orders TRUE string 字段,可用值:DTO属性(请参照"响应参数"中content),
createTime,updateTime

请求参数示例

{
  "requestId": "-6815387152900730785",
  "pageInfo": {
    "total": 0,
    "needTotal": "false",
    "pageNumber": 1,
    "pages": 0,
    "pageSize": 20
  },
  "notifyUrl": "",
  "sort": {
    "orders": [
      {
        "property": "createTime",
        "direction": "ASC"
      }
    ]
  },
  "params": {
    "code": "aa202401190001",
    "memberType": "MEMBER"
  },
  "timestamp": 1705902274312
}

响应参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
data ListData 人员详情列表
content data array[OrgMemberDto] 数据集对象
id content int64 人员id,新建时不必填,修改时必填
thirdId content string 第三方唯一标识
name content string 姓名
defaultName content string 默认语种姓名
mnemonic content string 助记符
code content string 编号
image content string 头像id
gender content enum 性别。枚举项可选值列表:
NONE(空),
MALE(男),
FEMALE(女),
UN_KNOW(未知),
birthday content date 出生日期
phoneNumber content string 手机号码
officeNumber content string 工作电话
email content string 邮箱
effectiveTime content date 生效日期,毫秒时间戳
invalidTime content date 失效日期,毫秒时间戳
sortId content int32 排序号
isEnable content boolean 状态
description content string 备注
orgMemberPostDtoList content array[OrgMemberPostDto] 人员所有任职信息
id orgMemberPostDtoList int64 任职信息id
businessId orgMemberPostDtoList int64 业务组织id(缺省行政组织)
businessName orgMemberPostDtoList string 业务组织名称(缺省行政组织)
memberIdCode orgMemberPostDtoList string 人员id(编号)
memberName orgMemberPostDtoList string 人员名称
memberCode orgMemberPostDtoList string 人员编号
main orgMemberPostDtoList boolean 是否主岗
orgIdCode orgMemberPostDtoList string 所属组织(编号)
orgName orgMemberPostDtoList string 所属组织名称
orgCode orgMemberPostDtoList string 所属组织编号
fullName orgMemberPostDtoList string 组织全路径名称
path orgMemberPostDtoList string path
institutionIdCode orgMemberPostDtoList string 组织所属机构(编号)
institutionName orgMemberPostDtoList string 组织所属机构名称
institutionCode orgMemberPostDtoList string 组织所属机构编号
postIdCode orgMemberPostDtoList string 岗位(编号)
postName orgMemberPostDtoList string 岗位名称
postCode orgMemberPostDtoList string 岗位编号
levelIdCode orgMemberPostDtoList string 职级(编号)
levelName orgMemberPostDtoList string 职级名称
levelCode orgMemberPostDtoList string 职级编号
jobId orgMemberPostDtoList int64 职务
jobName orgMemberPostDtoList string 职务名称
jobCode orgMemberPostDtoList string 职务编号
effectiveTime orgMemberPostDtoList date 生效日期,毫秒时间戳
invalidTime orgMemberPostDtoList date 失效日期,毫秒时间戳
sortId orgMemberPostDtoList int32 排序号
topSortId orgMemberPostDtoList int32 优先排序顺序
isEnable orgMemberPostDtoList boolean 状态
effective orgMemberPostDtoList boolean 生效状态
edit orgMemberPostDtoList boolean 是否可编辑
createTime orgMemberPostDtoList date 创建时间,毫秒时间戳
updateTime orgMemberPostDtoList date 更新时间,毫秒时间戳
type orgMemberPostDtoList enum 账号类型。枚举项可选值列表:
NONE(空),
MEMBER(内部人员),
EXTERNAL_MEMBER(外部联系人),
memberType orgMemberPostDtoList enum 人员类型。枚举项可选值列表:
NONE(空),
MEMBER(内部人员),
OUTSIDE_MEMBER(外部单位用户),
NATURAL_MEMBER(外部个人用户),
outsideInstitutionId orgMemberPostDtoList int64 人员所在外部单位
mainMemberPost content OrgMemberPostDto 人员主岗任职信息
id mainMemberPost int64 任职信息id
businessId mainMemberPost int64 业务组织id(缺省行政组织)
businessName mainMemberPost string 业务组织名称(缺省行政组织)
memberIdCode mainMemberPost string 人员id(编号)
memberName mainMemberPost string 人员名称
memberCode mainMemberPost string 人员编号
main mainMemberPost boolean 是否主岗
orgIdCode mainMemberPost string 所属组织(编号)
orgName mainMemberPost string 所属组织名称
orgCode mainMemberPost string 所属组织编号
fullName mainMemberPost string 组织全路径名称
path mainMemberPost string path
institutionIdCode mainMemberPost string 组织所属机构(编号)
institutionName mainMemberPost string 组织所属机构名称
institutionCode mainMemberPost string 组织所属机构编号
postIdCode mainMemberPost string 岗位(编号)
postName mainMemberPost string 岗位名称
postCode mainMemberPost string 岗位编号
levelIdCode mainMemberPost string 职级(编号)
levelName mainMemberPost string 职级名称
levelCode mainMemberPost string 职级编号
jobId mainMemberPost int64 职务
jobName mainMemberPost string 职务名称
jobCode mainMemberPost string 职务编号
effectiveTime mainMemberPost date 生效日期,毫秒时间戳
invalidTime mainMemberPost date 失效日期,毫秒时间戳
sortId mainMemberPost int32 排序号
topSortId mainMemberPost int32 优先排序顺序
isEnable mainMemberPost boolean 状态
effective mainMemberPost boolean 生效状态
edit mainMemberPost boolean 是否可编辑
createTime mainMemberPost date 创建时间,毫秒时间戳
updateTime mainMemberPost date 更新时间,毫秒时间戳
type mainMemberPost enum 账号类型。枚举项可选值列表:
NONE(空),
MEMBER(内部人员),
EXTERNAL_MEMBER(外部联系人),
memberType mainMemberPost enum 人员类型。枚举项可选值列表:
NONE(空),
MEMBER(内部人员),
OUTSIDE_MEMBER(外部单位用户),
NATURAL_MEMBER(外部个人用户),
outsideInstitutionId mainMemberPost int64 人员所在外部单位
mainMemberPostId content int64 人员主岗任职Id信息
orgMemberMetadataDto content OrgMemberMetadataDto 扩展字段
memberId orgMemberMetadataDto int64 人员id
createTime orgMemberMetadataDto date 创建时间,毫秒时间戳
updateTime orgMemberMetadataDto date 更新时间,毫秒时间戳
id orgMemberMetadataDto int64 字段ID
businessId orgMemberMetadataDto int64 业务组织id
loginName content string 用户名
createTime content date 创建时间,毫秒时间戳
updateTime content date 更新时间,毫秒时间戳
certificateType content int64 证件类型
certificateNumber content string 证件号码
entryDate content date 入职日期
bankAccount content string 银行账号
bank content string 开户银行
bankOutlets content string 开户网点
memberType content enum 人员类型。
枚举项可选值列表:
NONE(空),
MEMBER(内部人员),
OUTSIDE_MEMBER(外部单位用户),
NATURAL_MEMBER(外部个人用户),
pinyinShort content string 简拼
nickName content string 昵称
orgName content string 主部门名称
postName content string 主岗位名称
jobName content string 主职务名称
levelName content string 主职级名称
naturalMemberType content int64 外部个人用户类型
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": {
        "content": [
            {
                "validate": true,
                "id": "3428073205378313571",
                "thirdId": null,
                "name": "V5-韩聚江",
                "defaultName": "V5-韩聚江",
                "mnemonic": "V5-hanjujiang",
                "code": "17301103865",
                "image": null,
                "gender": "UN_KNOW",
                "birthday": null,
                "phoneNumber": "17301103865",
                "officeNumber": null,
                "email": "",
                "effectiveTime": 1703520000000,
                "invalidTime": 253402271999000,
                "sortId": 1,
                "isEnable": true,
                "description": null,
                "orgMemberPostDtoList": [
                    {
                        "validate": true,
                        "id": "5994200321357481820",
                        "businessId": "-5038278851089511626",
                        "businessName": null,
                        "memberName": null,
                        "memberCode": null,
                        "main": true,
                        "orgName": "集成演示",
                        "orgCode": "aa202401190001",
                        "fullName": "致远互联/集成演示",
                        "path": null,
                        "institutionName": null,
                        "institutionCode": null,
                        "postName": "集团基准岗位",
                        "postCode": "P202309080001",
                        "levelName": "经理级",
                        "levelCode": "M1",
                        "jobId": "-1",
                        "jobName": null,
                        "jobCode": null,
                        "effectiveTime": 1703520000000,
                        "invalidTime": 253402271999000,
                        "sortId": 1,
                        "topSortId": 0,
                        "isEnable": true,
                        "effective": null,
                        "edit": null,
                        "createTime": 1703557326026,
                        "updateTime": 1705658413047,
                        "type": "MEMBER",
                        "memberType": "MEMBER",
                        "outsideInstitutionId": "-1",
                        "memberIdCode": "17301103865",
                        "orgIdCode": "aa202401190001",
                        "institutionIdCode": "aa202401190001",
                        "postIdCode": "P202309080001",
                        "levelIdCode": "M1"
                    }
                ],
                "mainMemberPost": {
                    "validate": true,
                    "id": "5994200321357481820",
                    "businessId": "-5038278851089511626",
                    "businessName": null,
                    "memberName": null,
                    "memberCode": null,
                    "main": true,
                    "orgName": "集成演示",
                    "orgCode": "aa202401190001",
                    "fullName": "致远互联/集成演示",
                    "path": null,
                    "institutionName": null,
                    "institutionCode": null,
                    "postName": "集团基准岗位",
                    "postCode": "P202309080001",
                    "levelName": "经理级",
                    "levelCode": "M1",
                    "jobId": "-1",
                    "jobName": null,
                    "jobCode": null,
                    "effectiveTime": 1703520000000,
                    "invalidTime": 253402271999000,
                    "sortId": 1,
                    "topSortId": 0,
                    "isEnable": true,
                    "effective": null,
                    "edit": null,
                    "createTime": 1703557326026,
                    "updateTime": 1705658413047,
                    "type": "MEMBER",
                    "memberType": "MEMBER",
                    "outsideInstitutionId": "-1",
                    "memberIdCode": "17301103865",
                    "orgIdCode": "aa202401190001",
                    "institutionIdCode": "aa202401190001",
                    "postIdCode": "P202309080001",
                    "levelIdCode": "M1"
                },
                "mainMemberPostId": "5994200321357481820",
                "orgMemberMetadataDto": {
                    "validate": true,
                    "id": "8947821149131146285",
                    "businessId": null,
                    "extAttr1": "",
                    "extAttr2": null,
                    "extAttr3": "17301103865",
                    "extAttr4": null,
                    "extAttr5": "V5-韩聚江",
                    "extAttr6": "17301103865",
                    "extAttr7": null,
                    "extAttr8": null,
                    "extAttr9": null,
                    "extAttr10": null,
                    "memberId": "3428073205378313571",
                    "createTime": 1703557324415,
                    "updateTime": 1705658413129
                },
                "loginName": "17301103865",
                "createTime": 1703557324142,
                "updateTime": 1705658413004,
                "certificateType": null,
                "certificateNumber": null,
                "entryDate": null,
                "bankAccount": null,
                "bank": null,
                "bankOutlets": null,
                "memberType": "MEMBER",
                "pinyinShort": "V5-hjj",
                "nickName": null,
                "orgName": "集成演示",
                "postName": "集团基准岗位",
                "jobName": null,
                "levelName": "经理级",
                "naturalMemberType": null
            }
        ]
    }
}

5.7、分页查询组织下人员

请求地址

【接口请求地址前缀】/organization/unit/members

请求方式

POST

请求参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
requestId TRUE string 请求流水号。同一接入应用下的流水号不要重复;

最长32位,超过部分会被截断。
timestamp TRUE int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl TRUE string 异步回调URL。如果此参数非空,
表示使用异步方式调用开放API,执行结果将通过此URL异步通知调用者。
params TRUE SearchMemberApiDto 泛型参数对象
code params TRUE string 组织code
includeChild params TRUE boolean 是否包含下级
effectiveTime params TRUE string 人员生效时间,缺省系统当前时间,
配置了搜索开始/结束时间,该值不生效
startTime params TRUE string 搜索开始时间
endTime params TRUE string 搜索结束时间
includeDisable params TRUE boolean 是否包含失效人员,默认不包含
memberType params TRUE enum 人员类型。枚举项可选值列表:
NONE(空),
MEMBER(内部人员),
OUTSIDE_MEMBER(外部单位用户),
NATURAL_MEMBER(外部个人用户),
sort TRUE Sort 排序
orders sort TRUE array[Sort$Order] 排序
direction orders TRUE enum 顺序,可用值:ASC,DESC。
枚举项可选值列表:ASC(ASC),DESC(DESC),
property orders TRUE string 字段,可用值:DTO属性(请参照"响应参数"中content),
createTime,updateTime
pageInfo TRUE PageInfo 分页
pageNumber pageInfo TRUE int32 当前页数
pageSize pageInfo TRUE int32 每页记录数
pages pageInfo TRUE int32 总页数
total pageInfo TRUE int32 总记录数
needTotal pageInfo TRUE boolean 是否需要查询总记录数

请求参数示例

{
  "requestId": "-6815387152900730785",
  "pageInfo": {
    "total": 0,
    "needTotal": "false",
    "pageNumber": 1,
    "pages": 0,
    "pageSize": 20
  },
  "notifyUrl": "",
  "sort": {
    "orders": [
      {
        "property": "createTime",
        "direction": "ASC"
      }
    ]
  },
  "params": {
    "code": "aa202401190001",
    "memberType": "MEMBER"
  },
  "timestamp": 1705902274312
}

响应参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
data PageData 人员信息分页列表
pageInfo data PageInfo 分页参数对象
pageNumber pageInfo int32 当前页数
pageSize pageInfo int32 每页记录数
pages pageInfo int32 总页数
total pageInfo int32 总记录数
needTotal pageInfo boolean 是否需要查询总记录数
content data array[OrgMemberDataDto] 数据集对象
thirdId content string 第三方唯一标识
name content string 姓名
code content string 编号
username content string 用户名
gender content enum 性别。枚举项可选值列表:
NONE(空),
MALE(男),
FEMALE(女),
UN_KNOW(未知),
birthday content string 出生日期
phoneNumber content string 手机号码
officeNumber content string 工作电话
email content string 邮箱
effectiveTime content string 生效日期
invalidTime content string 失效日期
sortId content int32 排序号
isEnable content boolean 状态
description content string 备注
memberPosts content array[OrgMemberPostDataDto] 人员的任职信息
main memberPosts boolean 是否主岗
unitCode memberPosts string 组织编码
postCode memberPosts string 岗位编码(内部人员必填)
levelCode memberPosts string 职级编码
jobCode memberPosts string 职务编码
effectiveTime memberPosts string 生效日期
invalidTime memberPosts string 失效日期
sortId memberPosts int32 排序号
topSortId memberPosts int32 优先置顶排序
isEnable memberPosts boolean 状态
memberType memberPosts enum 人员类型。枚举项可选值列表:
NONE(空),
MEMBER(内部人员),
OUTSIDE_MEMBER(外部单位用户),
NATURAL_MEMBER(外部个人用户),
metadataList content array[OrgMetadataValueDataDto] 自定义扩展属性数据
k metadataList string 扩展字段的名称
v metadataList string 扩展字段的的值
certificateType content string 证件类型
certificateNumber content string 证件号码
entryDate content string 入职日期
bankAccount content string 银行账号
bank content string 开户银行
bankOutlets content string 开户网点
image content string 头像路径
memberType content enum 人员类型。枚举项可选值列表:
NONE(空),MEMBER(内部人员),
OUTSIDE_MEMBER(外部单位用户),
NATURAL_MEMBER(外部个人用户),
createTime content date 创建时间,毫秒时间戳
updateTime content date 更新时间,毫秒时间戳
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": {
        "pageInfo": {
            "pageNumber": 1,
            "pageSize": 20,
            "pages": 1,
            "total": 2,
            "needTotal": false
        },
        "content": [
            {
                "validate": true,
                "thirdId": null,
                "name": "V5-韩聚江",
                "code": "17301103865",
                "username": "17301103865",
                "gender": "UN_KNOW",
                "birthday": null,
                "phoneNumber": "17301103865",
                "officeNumber": null,
                "email": "",
                "effectiveTime": "2023-12-26",
                "invalidTime": "9999-12-31",
                "sortId": 1,
                "isEnable": true,
                "description": null,
                "memberPosts": [
                    {
                        "validate": true,
                        "main": true,
                        "businessId": "administrative",
                        "unitCode": "aa202401190001",
                        "postCode": "P202309080001",
                        "levelCode": "M1",
                        "jobCode": "",
                        "effectiveTime": "2023-12-26",
                        "invalidTime": "9999-12-31",
                        "sortId": 1,
                        "topSortId": 0,
                        "isEnable": true,
                        "memberType": "MEMBER"
                    }
                ],
                "metadataList": null,
                "certificateType": null,
                "certificateNumber": null,
                "entryDate": null,
                "bankAccount": null,
                "bank": null,
                "bankOutlets": null,
                "image": null,
                "memberType": "MEMBER",
                "createTime": 1703557324142,
                "updateTime": 1705658413004
            },
            {
                "validate": true,
                "thirdId": null,
                "name": "韩聚江",
                "code": "MD80002724",
                "username": "15131872776",
                "gender": "MALE",
                "birthday": null,
                "phoneNumber": "15131872776",
                "officeNumber": null,
                "email": null,
                "effectiveTime": "2024-01-19",
                "invalidTime": "9999-12-31",
                "sortId": 50430,
                "isEnable": true,
                "description": null,
                "memberPosts": [
                    {
                        "validate": true,
                        "main": true,
                        "businessId": "administrative",
                        "unitCode": "aa202401190001",
                        "postCode": "P202206150020",
                        "levelCode": "M1",
                        "jobCode": "",
                        "effectiveTime": "2024-01-19",
                        "invalidTime": "9999-12-31",
                        "sortId": 50430,
                        "topSortId": 0,
                        "isEnable": true,
                        "memberType": "MEMBER"
                    }
                ],
                "metadataList": null,
                "certificateType": "861893055660261888",
                "certificateNumber": null,
                "entryDate": null,
                "bankAccount": null,
                "bank": null,
                "bankOutlets": null,
                "image": null,
                "memberType": "MEMBER",
                "createTime": 1705642397823,
                "updateTime": 1705658448012
            }
        ]
    }
}

6、注意事项

为了三方系统更快集成,建议每个三方系统提供postmen调用示例,这样可以极大的节省集成联调周期。

5.1.1.2 - 三方系统提供写入OpenAPI

三方异构系统提供写入OpenAPI,由COP定时调用接口主动推送,完成组织同步模式。

1、概述

COP负责新建、编辑、启停等组织数据维护,三方异构系统提供写入OpenAPI,由COP定时调用接口主动推送,完成组织同步模式。

2、优缺点

a. 优点

i. 三方系统集成压力小;

ii. 通过事件订阅触发数据同步,数据时效性高;

b. 缺点

i. 实施团队需要了解三方系统接口字段要求和数据用途;

ii. 实施团队需要了解COP平台字段要求和用途;

iii. 实施团队需要配置字段映射;

iv. 每增加一个三方系统,就需要重新配置一遍一下步骤;

3、操作步骤

序号 步骤名称 责任方 使用场景
1 提供组织增量写入接口规范和文档 三方系统 必须,
2 注册并配置鉴权AppID和秘钥 三方系统 非必须,如果三方系统接口调用时涉及到安全鉴权,则需要提供
3 提供接口调用示例 三方系统 必须,为了集成效率,
强烈建议三方系统提供可直接使用的postman接口调用示例,
4 新建三方集成应用 致远 必须,三方集成应用负责封装三方系统接口和配置数据映射
5 发布启用三方集成应用 致远 必须,三方集成应用只有发布后才能正常使用
6 封装安全认证 致远 非必须,如果三方系统接口调用时涉及到安全鉴权,则需要配置安全认证
7 接口封装 致远 必须,三方系统提供的接口只有正常封装后才能供给COP使用
8 在线调试验证 致远 必须,三方系统接口封装完成后,需要在线调试,验证网络通信、
接口返回结果是否正确等
9 启用组织同步 致远 必须,主动推送场景中,字段映射、同步周期需要在基础集成中配置
10 配置同步内容 致远 必须,本场景下固定选择模式为:从三方系统获取
11 配置同步周期 致远 必须,根据数据量和服务器消费能力,合理配置同步周期
12 配置字段映射 致远 必须:三方系统接口文档中的字段名,字段释义与COP不一致,
需要配置参数映射、层级转换等
13 使用日志 致远 必须,配置完成并启用后,查看使用日志

4、 集成配置步骤

4.1、 新建三方集成应用

1720577772586

4.2、 发布启用三方集成应用

1720577778838

4.3、 封装安全认证

1720577785293

1720577791255

4.4、 枚举定义

1720577798040

4.5、 接口封装

1720577803045

1720577809284

1720577814794

1720577821105

1720577827141

1720577832287

1720577837929

4.6、 在线调试验证

1720577846536

1720577853174

4.7、 启用组织同步

1720577859417

4.8、 配置同步内容

1720577865174

1720577874631

1720577880163

4.9、 配置同步周期

1720577889066

4.10、 使用日志

1720577894429

5、 注意事项

5.1、 当三方系统需要的数据维度较COP更加丰富时,可以通过集成扩展-微流程编排实现;

5.1.1.3 - 事件订阅

COP开放事件,三方异构系统订阅事件,完成组织同步模式。

1、概述

COP开放事件,三方异构系统订阅事件,完成组织同步模式。

2、事件清单

事件名称 事件标识 返回数据类型 描述
更新职务 organization.job.update JSON 更新职务
更新组织 organization.unit.update JSON 更新组织
更新职级 organization.level.update JSON 更新职级
创建组织 organization.unit.create JSON 创建组织
创建人员 organization.member.create JSON 创建人员
创建岗位 organization.post.create JSON 创建岗位
更新岗位 organization.post.update JSON 更新岗位
创建职务 organization.job.create JSON 创建职务
更新人员 organization.member.update JSON 更新人员
创建职级 organization.level.create JSON 创建职级

3、订阅说明

收到事件通知请求后,需要返回200HTTP响应。其余响应码表示失败,开放平台会自动重发。重发的间隔越来越长,最多尝试10次。事件通知数据使用application/json格式发送。 事件通知的HTTP请求头中,包含回调令牌(需在接入应用的事件订阅中配置开启,默认不开启),用于接入应用验证事件来源。

若开启加密因子(需在接入应用的事件订阅中配置开启,默认不开启),将对事件通知的JSON内容进行加密,只有一个属性encrypt,需要进行解密处理。

4、解密示例

 @SuppressWarnings("rawtypes")
    @PostMapping("open-event-map")
    @ResponseBody
    public String openEventCallBack(HttpServletRequest request, @RequestBody Map map) {
      // 事件发生时间
      String createTime = request.getHeader("createTime");
      // 事件的流水号
      String eventId = request.getHeader("eventId");
      // 如果订阅事件时设置了回调token,可以获取token进行校验
      String eventToken = request.getHeader("eventToken");
      if (!OpenApiGlobalConfig.EVENT_CALL_BACK_TOKEN.equals(eventToken)) {
        System.err.println("token不匹配,这是非法的请求!");
        return "error";
      }
      // eventName:事件名称,解码处理
      try {
        String eventName = URLDecoder.decode(request.getHeader("eventName"), StandardCharsets.UTF_8.displayName());
        System.err.println("收到事件:" + eventName);
      } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
      }
      // 事件标识,可以用此字段区分是什么事件发生了
      String eventKey = request.getHeader("eventKey");
      if (!"".equals(OpenApiGlobalConfig.EVENT_CALL_BACK_KEY)) {
        // 如果设置了加密key,那么返回的数据是加密的,需要解密。加解密算法是AES算法。
        String encryptContent = (String) map.get("encrypt");
        String realContent = OpenApiClient.decrypt(encryptContent, OpenApiGlobalConfig.EVENT_CALL_BACK_KEY);
        System.err.println("原始的JSON数据是:" + realContent);
        // 拿到原始的json串以后,可以json串转map或者转对应的DTO,继续处理
        Map dataMap = OpenApiUtil.fromJson(realContent, Map.class);
        // 后续处理
        System.err.println("事件真实数据:" + dataMap);
      } else {
        // 如果没有配置加密,那么是明文传输的,收到的Map就是真实的数据
        Map dataMap = map;
        // 后续处理
        System.err.println("事件真实数据:" + dataMap);
      }
      return "OK";
    }

5、事件消息体

5.1、更新职务

参数名称 参数类型 参数描述
更新职务消息 OrgJobUpdateMessage
jobId int64 职务id
code string 职务编号
orgId int64 所属组织
isEnable boolean 状态
oldCode string 更新前职务编号
oldOrgId int64 更新前所属组织
oldIsEnable boolean 更新前状态
eventKey string 消息标识

5.2、更新组织

参数名称 参数类型 参数描述
更新组织消息体 OrgUnitUpdateMessage
type enum 组织类型。枚举项可选值列表:
NONE(空),
INSTITUTION(机构),
DEPARTMENT(部门),
OUTSIDE_INSTITUTION(外部(编外)单位),
OUTSIDE_DEPARTMENT(外部(编外)部门),
orgId int64 组织id
oldOrgName string 组织名称
orgName string 组织名称
oldParentId int64 原上级id
parentId int64 上级id
oldIsEnable boolean 原状态
isEnable boolean 状态
oldEffectiveTime date 原生效日期
effectiveTime date 生效日期
oldInvalidTime date 原失效日期
invalidTime date 失效日期
eventKey string 消息标识

5.3、更新职级

参数名称 参数类型 参数描述
更新职级消息 OrgLevelUpdateMessage
levelId int64 职级id
code string 职级编号
levelSort int32 职级序号
isEnable boolean 状态
oldCode string 职级编号
oldLevelSort int32 更新前职级序号
oldIsEnable boolean 更新前状态
eventKey string 消息标识

5.4、创建组织

参数名称 参数类型 参数描述
创建组织消息体 OrgUnitCreateMessage
orgId int64 组织id
orgName string 组织名称
parentId int64 上级id
type enum 组织类型。枚举项可选值列表:
NONE(空),
INSTITUTION(机构),
DEPARTMENT(部门),
OUTSIDE_INSTITUTION(外部(编外)单位),
OUTSIDE_DEPARTMENT(外部(编外)部门),
isEnable boolean 状态
effectiveTime date 生效日期
invalidTime date 失效日期
eventKey string 消息标识

5.5、创建人员

数名称 参数类型 参数描述
创建人员消息体 OrgMemberMessage
memberId int64 人员id
name string 姓名
phoneNumber string 手机号
email string 邮箱
type enum 人员类型。枚举项可选值列表:
NONE(空),
MEMBER(内部人员),
OUTSIDE_MEMBER(外部单位用户),
NATURAL_MEMBER(外部个人用户),
image string 头像
orgId int64 主岗组织id
orgName string 主岗组织名称
orgIds array[int64] 主岗所属机构id
isEnable boolean 启用状态
effectiveTime date 生效日期
invalidTime date 失效日期
eventKey string 消息标识
memberPostList array[OrgMemberPostBaseDto] 任职信息
id int64 任职id
main boolean 是否主岗
orgId int64 组织id
postId int64 岗位id
levelId int64 职级id
jobId int64 职务id
sortId int32 排序号
isEnable boolean 状态
effectiveTime date 生效日期,毫秒时间戳
invalidTime date 失效日期,毫秒时间戳

5.6、创建岗位

参数名称 参数类型 参数描述
创建岗位消息 OrgPostCreateMessage
postId int64 岗位id
code string 岗位编号
orgId int64 所属组织
isEnable boolean 状态
eventKey string 消息标识

5.7、更新岗位

参数名称 参数类型 参数描述
更新岗位消息 OrgPostUpdateMessage
postId int64 岗位id
code string 岗位编号
orgId int64 所属组织
isEnable boolean 状态
oldCode string 更新前岗位编号
oldOrgId int64 更新前所属组织
oldIsEnable boolean 更新前状态
eventKey string 消息标识

5.8、创建职务

参数名称 参数类型 参数描述
创建职务消息 OrgJobCreateMessage
jobId int64 职务id
code string 职务编号
orgId int64 所属组织
isEnable boolean 状态
eventKey string 消息标识

5.9、更新人员

参数名称 参数类型 参数描述
更新人员消息体 OrgUpdateMemberMessage
memberId int64 人员id
name string 姓名
phoneNumber string 手机号
email string 邮箱
type enum 人员类型。枚举项可选值列表:
NONE(空),
MEMBER(内部人员),
OUTSIDE_MEMBER(外部单位用户),
NATURAL_MEMBER(外部个人用户),
image string 头像
orgId int64 主岗组织id
orgName string 主岗组织名称
orgIds array[int64] 主岗所属机构id
isEnable boolean 启用状态
effectiveTime date 生效日期
invalidTime date 失效日期
eventKey string 消息标识
oldMemberPostList array[OrgMemberPostBaseDto] 更新前任职信息
id int64 任职id
main boolean 是否主岗
orgId int64 组织id
postId int64 岗位id
levelId int64 职级id
jobId int64 职务id
sortId int32 排序号
isEnable boolean 状态
effectiveTime date 生效日期,毫秒时间戳
invalidTime date 失效日期,毫秒时间戳
memberPostList array[OrgMemberPostBaseDto] 更新后任职信息
id int64 任职id
main boolean 是否主岗
orgId int64 组织id
postId int64 岗位id
levelId int64 职级id
jobId int64 职务id
sortId int32 排序号
isEnable boolean 状态
effectiveTime date 生效日期,毫秒时间戳
invalidTime date 失效日期,毫秒时间戳

5.10、创建职级

参数名称 参数类型 参数描述
创建职级消息 OrgLevelCreateMessage
levelId int64 职级id
code string 职级编号
levelSort int32 职级序号
isEnable boolean 状态
eventKey string 消息标识

5.1.2 - 三方系统同步至V8

集成模式

5.1.2.1 - COP平台开放写入OpenAPI

COP平台开放写入OpenAPI,由三方异构系统定时增量推送,完成组织同步模式。

1、概述

COP平台开放写入OpenAPI,由三方异构系统定时增量推送,完成组织同步模式。

2、优缺点分析

a. 优点:

COP集成压力小;

b. 缺点:

三方系统需要有一定的研发能力,完成接口调用和字段映射;

3、集成配置

序号 步骤名称 责任方 使用场景
1 提供组织增量查询接口规范和文档 致远 必须,包含接口定义、签名规则、字段来源等信息
2 API启用 致远 必须,只有启用的API才可以正常进行授权访问
3 新建接入应用 致远 必须,负责分配AppKey和APPSecret、配置访问授权、访问白名单等配置页
4 启用接入应用 致远 必须,未启用的接入应用,访问时会提示接入应用未启用
5 分配APPKey和APPSecret 致远 必须,接口签名核心字段
6 API授权 致远 必须,只有添加权限的额API接口才可以正常访问
7 导出接口文档 致远 非必须,导出所有已经启用的API手册
8 配置访问限流 致远 非必须,根据服务器资源性能,可以配置指定时间段内调用上线
9 配置访问白名单 致远 非必须,开启后,访问白名单之后的API请求将会被拦截
10 调用测试 三方系统 必须,根据平台提供的接口文档和必须字段,使用postmen等工具直接调用,验证网络连通性和信息准确性

4、接口目录

API分类 API名称 接口描述
组织信息同步(基于编码) 批量新建/更新组织 组织(机构+部门)
职务信息同步(基于编码) 批量新建/更新职务 职务
职级信息同步(基于编码) 批量新建/更新职级 职级
岗位信息同步(基于编码) 批量新建/更新岗位 岗位
人员及任职信息同步(基于编码) 批量新建/更新人员及任职 人员&任职

4.1、接口文档在线查看位置

1720490441002

4.2、接口签名

4.2.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.2.2、签名示例(sign)

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

5、接口清单

5.1、批量新建/更新组织

请求地址

【接口请求地址前缀】/organization/unit/batch

请求方式

POST

请求参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
requestId TRUE string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp TRUE int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl FALSE string 异步回调URL。如果此参数非空,
表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
data TRUE OrgBatchUnitDto 请求参数数据
units data TRUE array[OrgUnitDataDto] 组织数据
name units TRUE string 组织名称
shortName units FALSE string 组织简称 ,类型为机构时,简称必填,类型为部门时,简称非必填
code units TRUE string 组织编号
type units TRUE enum 组织类型。枚举项可选值列表:
NONE(空),
INSTITUTION(机构),
DEPARTMENT(部门),
OUTSIDE_INSTITUTION(外部(编外)单位),
OUTSIDE_DEPARTMENT(外部(编外)部门),
parentCode units TRUE string 父组织Code,根节点不填
effectiveTime units FALSE string 生效日期
invalidTime units FALSE string 失效日期
sortId units TRUE int32 排序号
isEnable units FALSE boolean 状态
description units FALSE string 备注
metadataList units FALSE array[OrgMetadataValueDataDto] 自定义扩展属性数据
k metadataList FALSE string 扩展字段的名称
v metadataList FALSE string 扩展字段的的值
address units FALSE string 地址
officeNumber units FALSE string 电话
tax units FALSE string 税号
bankAccount units FALSE string 银行账号
bank units FALSE string 开户银行
isLegalEntity units FALSE boolean 是否法人实体
socialCreditCode units FALSE string 统一社会信用代码
legalPersonName units FALSE string 法定代表人姓名
legalCertificateNumber units FALSE string 法定代表人身份证号码
legalPhoneNumber units FALSE string 法定代表人手机号号码
createTime units FALSE date 创建时间,毫秒时间戳
updateTime units FALSE date 更新时间,毫秒时间戳
syncChildMetadataValue data FALSE boolean 是否同步下级组织扩展字段值,默认是false

请求参数示例

{
  "data": {
    "syncChildMetadataValue": "false",
    "units": [
      {
        "bankAccount": "",
        "legalPhoneNumber": "",
        "code": "CoolAcademyImport1001",
        "address": "",
        "effectiveTime": "2023-09-01",
        "officeNumber": "",
        "description": "",
        "tax": "",
        "updateTime": {{timestamp}},
        "invalidTime": "2024-12-31",
        "type": "INSTITUTION",
        "socialCreditCode": "",
        "isEnable": "true",
        "legalPersonName": "",
        "bank": "",
        "legalCertificateNumber": "",
        "parentCode": "group",
        "createTime": {{timestamp}},
        "sortId": 10,
        "name": "集成演示Import1001",
        "isLegalEntity": "false",
        "shortName": "集成演示1001"
      }
    ]
  },
  "requestId":1705902274340,
  "notifyUrl": "",
  "timestamp":1705902274340
}

响应参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
data SingleData 批量处理结果
content data OrgSyncInfoDto 数据对象
type content enum 任务类型。枚举项可选值列表:
BATCH_UNITS(批量处理组织数据),
BATCH_POSTS(批量处理岗位数据),
BATCH_MEMBERS(批量处理人员数据),
BATCH_JOBS(批量处理职务数据),
BATCH_LEVELS(批量处理职级数据),
BATCH_MEMBER_POSTS(批量处理任职数据),
BATCH_UNIT_METADATA(批量处理组织扩展字段数据),
BATCH_MEMBER_METADATA(批量处理人员扩展字段数据),
BATCH_NATURAL_MEMBERS(批量处理外部个人用户数据),
status content enum 状态。枚举项可选值列表:COMPLETE(完成),
startTime content date 开始时间
endTime content date 结束时间
totalNum content int32 总条数
successNum content int32 任务当前执行成功的条数
failNum content int32 任务当前执行失败的条数
details content array[OrgMessageDto] 详情
line details int32 行号
id details int64 id
name details string 名称
code details string 编号
status details enum 状态。枚举项可选值列表:
SUCCESS(成功),
FAILED(失败),
SKIP(跳过),
messageCode details string 错误码
message details string 信息
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": {
        "content": {
            "validate": true,
            "type": "BATCH_UNITS",
            "status": "COMPLETE",
            "startTime": 1705913688259,
            "endTime": 1705913688492,
            "totalNum": 1,
            "successNum": 1,
            "failNum": 0,
            "details": [
                {
                    "validate": true,
                    "line": 1,
                    "id": "1659577340788737399",
                    "name": "集成演示Import1001",
                    "code": "CoolAcademyImport1001",
                    "status": "SUCCESS",
                    "messageCode": null,
                    "message": "成功"
                }
            ]
        }
    }
}

5.2、批量新建/更新职务

请求地址

【接口请求地址前缀】/organization/job/batch

请求方式

POST

请求参数(Body)

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

请求参数示例

{
  "data": {
    "jobs": [
      {
        "code": "JobWorkor",
        "sortId": 10,
        "unitCode": "CoolAcademyImport1001",
        "name": "干事",
        "description": "",
        "category": "SELF_BUILT",
        "isEnable": "true"
      }
    ]
  },
  "requestId": 1705913739277,
  "notifyUrl": "",
  "timestamp": 1705913739277
}

响应参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
data SingleData 批量处理结果
content data OrgSyncInfoDto 数据对象
type content enum 任务类型。枚举项可选值列表:
BATCH_UNITS(批量处理组织数据),
BATCH_POSTS(批量处理岗位数据),
BATCH_MEMBERS(批量处理人员数据),
BATCH_JOBS(批量处理职务数据),
BATCH_LEVELS(批量处理职级数据),
BATCH_MEMBER_POSTS(批量处理任职数据),
BATCH_UNIT_METADATA(批量处理组织扩展字段数据),
BATCH_MEMBER_METADATA(批量处理人员扩展字段数据),
BATCH_NATURAL_MEMBERS(批量处理外部个人用户数据),
status content enum 状态。枚举项可选值列表:COMPLETE(完成),
startTime content date 开始时间
endTime content date 结束时间
totalNum content int32 总条数
successNum content int32 任务当前执行成功的条数
failNum content int32 任务当前执行失败的条数
details content array[OrgMessageDto] 详情
line details int32 行号
id details int64 id
name details string 名称
code details string 编号
status details enum 状态。枚举项可选值列表:
SUCCESS(成功),
FAILED(失败),
SKIP(跳过),
messageCode details string 错误码
message details string 信息
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": {
        "content": {
            "validate": true,
            "type": "BATCH_JOBS",
            "status": "COMPLETE",
            "startTime": 1705913739212,
            "endTime": 1705913739234,
            "totalNum": 1,
            "successNum": 1,
            "failNum": 0,
            "details": [
                {
                    "validate": true,
                    "line": 1,
                    "id": "1660303025123624311",
                    "name": "{\"zh_CN\":\"干事\"}",
                    "code": "JobWorkor",
                    "status": "SUCCESS",
                    "messageCode": "成功",
                    "message": null
                }
            ]
        }
    }
}

5.3、批量新建/更新职级

请求地址

【接口请求地址前缀】/organization/level/batch

请求方式

POST

请求参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
requestId TRUE string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp TRUE int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl false string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
data TRUE OrgBatchLevelDto 请求参数数据
levels data TRUE array[OrgLevelDataDto] 职级数据
name levels TRUE string 职级名称(必填)
code levels TRUE string 编号(必填)
levelSort levels TRUE int32 序号
isEnable levels TRUE boolean 启用状态
description levels TRUE string 备注

请求参数示例

{
  "data": {
    "levels": [
      {
        "code": "M22",
        "levelSort": 1,
        "name": "M22",
        "description": "M22,酷学院",
        "isEnable": "true"
      }
    ]
  },
  "requestId":1705913759647,
  "notifyUrl": "",
  "timestamp": 1705913759647
}

响应参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
data SingleData 批量处理结果
content data OrgSyncInfoDto 数据对象
type content enum 任务类型。枚举项可选值列表:
BATCH_UNITS(批量处理组织数据),
BATCH_POSTS(批量处理岗位数据),
BATCH_MEMBERS(批量处理人员数据),
BATCH_JOBS(批量处理职务数据),
BATCH_LEVELS(批量处理职级数据),
BATCH_MEMBER_POSTS(批量处理任职数据),
BATCH_UNIT_METADATA(批量处理组织扩展字段数据),
BATCH_MEMBER_METADATA(批量处理人员扩展字段数据),
BATCH_NATURAL_MEMBERS(批量处理外部个人用户数据),
status content enum 状态。枚举项可选值列表:COMPLETE(完成),
startTime content date 开始时间
endTime content date 结束时间
totalNum content int32 总条数
successNum content int32 任务当前执行成功的条数
failNum content int32 任务当前执行失败的条数
details content array[OrgMessageDto] 详情
line details int32 行号
id details int64 id
name details string 名称
code details string 编号
status details enum 状态。枚举项可选值列表:
SUCCESS(成功),
FAILED(失败),
SKIP(跳过),
messageCode details string 错误码
message details string 信息
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": {
        "content": {
            "validate": true,
            "type": "BATCH_JOBS",
            "status": "COMPLETE",
            "startTime": 1705913759662,
            "endTime": 1705913759700,
            "totalNum": 1,
            "successNum": 1,
            "failNum": 0,
            "details": [
                {
                    "validate": true,
                    "line": 1,
                    "id": "1660303424790463863",
                    "name": "{\"zh_CN\":\"M22\"}",
                    "code": "M22",
                    "status": "SUCCESS",
                    "messageCode": "成功",
                    "message": null
                }
            ]
        }
    }
}

5.4、批量新建/更新岗位

请求地址

【接口请求地址前缀】/organization/post/batch

请求方式

POST

请求参数(Body)

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

请求参数示例

{
  "data": {
    "posts": [
      {
        "code": "salesEngineer",
        "sortId": 10,
        "unitCode": "CoolAcademyImport1001",
        "name": "销售工程师",
        "description": "",
        "type": "Management",
        "category": "SELF_BUILT",
        "isEnable": "true"
      }
    ]
  },
  "requestId": 1705913779906,
  "notifyUrl": "",
  "timestamp": 1705913779906
}

响应参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
data SingleData 批量处理结果
content data OrgSyncInfoDto 数据对象
type content enum 任务类型。枚举项可选值列表:
BATCH_UNITS(批量处理组织数据),
BATCH_POSTS(批量处理岗位数据),
BATCH_MEMBERS(批量处理人员数据),
BATCH_JOBS(批量处理职务数据),
BATCH_LEVELS(批量处理职级数据),
BATCH_MEMBER_POSTS(批量处理任职数据),
BATCH_UNIT_METADATA(批量处理组织扩展字段数据),
BATCH_MEMBER_METADATA(批量处理人员扩展字段数据),
BATCH_NATURAL_MEMBERS(批量处理外部个人用户数据),
status content enum 状态。枚举项可选值列表:COMPLETE(完成),
startTime content date 开始时间
endTime content date 结束时间
totalNum content int32 总条数
successNum content int32 任务当前执行成功的条数
failNum content int32 任务当前执行失败的条数
details content array[OrgMessageDto] 详情
line details int32 行号
id details int64 id
name details string 名称
code details string 编号
status details enum 状态。枚举项可选值列表:
SUCCESS(成功),
FAILED(失败),
SKIP(跳过),
messageCode details string 错误码
message details string 信息
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": {
        "content": {
            "validate": true,
            "type": "BATCH_POSTS",
            "status": "COMPLETE",
            "startTime": 1705913779967,
            "endTime": 1705913780058,
            "totalNum": 1,
            "successNum": 0,
            "failNum": 1,
            "details": [
                {
                    "validate": true,
                    "line": 1,
                    "id": "1660309690828981623",
                    "name": "{\"zh_CN\":\"销售工程师\"}",
                    "code": "salesEngineer",
                    "status": "FAILED",
                    "messageCode": "ORG_0102",
                    "message": "岗位分类枚举值不存在!"
                }
            ]
        }
    }
}

5.5、批量新建/更新人员及任职

请求地址

【接口请求地址前缀】/organization/member/batch

请求方式

POST

请求参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
requestId TRUE string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp TRUE int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl false string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
data TRUE OrgBatchMemberDto 请求参数数据
members data TRUE array[OrgMemberDataDto] 人员数据
thirdId members TRUE string 第三方唯一标识
name members TRUE string 姓名
code members TRUE string 编号
username members TRUE string 用户名
gender members TRUE enum 性别。枚举项可选值列表:
NONE(空),
MALE(男),
FEMALE(女),
UN_KNOW(未知),
birthday members TRUE string 出生日期
phoneNumber members TRUE string 手机号码
officeNumber members TRUE string 工作电话
email members TRUE string 邮箱
effectiveTime members TRUE string 生效日期
invalidTime members TRUE string 失效日期
sortId members TRUE int32 排序号
isEnable members TRUE boolean 状态
description members TRUE string 备注
memberPosts members TRUE array[OrgMemberPostDataDto] 人员的任职信息
main memberPosts TRUE boolean 是否主岗
unitCode memberPosts TRUE string 组织编码
postCode memberPosts TRUE string 岗位编码(内部人员必填)
levelCode memberPosts TRUE string 职级编码
jobCode memberPosts TRUE string 职务编码
effectiveTime memberPosts TRUE string 生效日期
invalidTime memberPosts TRUE string 失效日期
sortId memberPosts TRUE int32 排序号
topSortId memberPosts TRUE int32 优先置顶排序
isEnable memberPosts TRUE boolean 状态
memberType memberPosts TRUE enum 人员类型。枚举项可选值列表:
NONE(空),
MEMBER(内部人员),
OUTSIDE_MEMBER(外部单位用户),
NATURAL_MEMBER(外部个人用户),
metadataList members TRUE array[OrgMetadataValueDataDto] 自定义扩展属性数据
k metadataList TRUE string 扩展字段的名称
v metadataList TRUE string 扩展字段的的值
certificateType members TRUE string 证件类型
certificateNumber members TRUE string 证件号码
entryDate members TRUE string 入职日期
bankAccount members TRUE string 银行账号
bank members TRUE string 开户银行
bankOutlets members TRUE string 开户网点
image members TRUE string 头像路径
memberType members TRUE enum 人员类型。枚举项可选值列表:
NONE(空),
MEMBER(内部人员),
OUTSIDE_MEMBER(外部单位用户),
NATURAL_MEMBER(外部个人用户),
createTime members TRUE date 创建时间,毫秒时间戳
updateTime members TRUE date 更新时间,毫秒时间戳

请求参数示例

{
  "data": [
      {
        "birthday": "",
        "code": "KXY1081001",
        "gender": "MALE",
        "bankOutlets": "",
        "effectiveTime": "2023-09-01",
        "officeNumber": "",
        "description": "",
        "invalidTime": "2024-12-31",
        "isEnable": "true",
        "bank": "",
        "sortId": 10,
        "email": "",
        "bankAccount": "",
        "image": "",
        "thirdId": "KXY1081001",
        "entryDate": "2023-09-01",
        "updateTime": 1705913802791,
        "memberPosts": [
          {
            "levelCode": "M22",
            "effectiveTime": "2023-09-01",
            "sortId": 10,
            "unitCode": "InformationCenter",
            "jobCode": "JobWorkor",
            "main": "true",
            "postCode": "salesEngineer",
            "invalidTime": "2024-12-31",
            "memberType": "MEMBER",
            "isEnable": "true"
          }
        ],
        "phoneNumber": "18701021001",
        "certificateNumber": "",
        "createTime": 1705913802791,
        "name": "集成演示-张三",
        "memberType": "MEMBER",
        "username": "18701021001",
        "certificateType": "idCard"
      }
    ]
  ,
  "requestId": 1705913802791,
  "notifyUrl": "",
  "timestamp": 1705913802791
}

响应参数(Body)

参数名称 父节点 是否必填 参数类型 参数描述
data SingleData 批量处理结果
content data OrgSyncInfoDto 数据对象
type content enum 任务类型。枚举项可选值列表:
BATCH_UNITS(批量处理组织数据),
BATCH_POSTS(批量处理岗位数据),
BATCH_MEMBERS(批量处理人员数据),
BATCH_JOBS(批量处理职务数据),
BATCH_LEVELS(批量处理职级数据),
BATCH_MEMBER_POSTS(批量处理任职数据),
BATCH_UNIT_METADATA(批量处理组织扩展字段数据),
BATCH_MEMBER_METADATA(批量处理人员扩展字段数据),
BATCH_NATURAL_MEMBERS(批量处理外部个人用户数据),
status content enum 状态。枚举项可选值列表:COMPLETE(完成),
startTime content date 开始时间
endTime content date 结束时间
totalNum content int32 总条数
successNum content int32 任务当前执行成功的条数
failNum content int32 任务当前执行失败的条数
details content array[OrgMessageDto] 详情
line details int32 行号
id details int64 id
name details string 名称
code details string 编号
status details enum 状态。枚举项可选值列表:
SUCCESS(成功),
FAILED(失败),
SKIP(跳过),
messageCode details string 错误码
message details string 信息
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
  "code": "200",
  "data": {
    "content": {
      "failNum": 1,
      "totalNum": 100,
      "successNum": 99,
      "startTime": "",
      "details": [
        {
          "code": "",
          "line": 10,
          "name": "",
          "messageCode": "",
          "id": "10828711522402302",
          "message": "SUCCESS",
          "status": ""
        }
      ],
      "endTime": "",
      "type": "BATCH_MEMBERS",
      "status": "READY"
    }
  },
  "message": "成功",
  "status": "FRONT"
}

5、注意事项

接口授权和分配AppKey、AppSecret请参考【数据开放】操作步骤

5.1.2.2 - 数据库中间表(推荐)

针对三方异构系统与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写入数据,调用【全部同步完毕】接口后,手工点击执行同步,否则数据不会再日志表中执行同步。


5.1.2.3 - 第三方同步到V8常见问题

常见问题记录。

1、拉取方式

适合全量 从上到下依次进行。第一遍,要单个逐次手动同步。组织同步标识都是作为v8的code进行同步的。 拉取有一定的制约性,比如人员接口入参是机构id,如果前面机构同步,用code做标识,那么后面循环拉取就获取不到人员信息。

1.1、常见问题

1、任职→查询底表是否已经有该人员→调用组织模型接口 任职数据,需先同步人员基本信息,如果手动系统录入人员,目前任职无法通过连接器进入系统。 2、如果组织的扩展字段是人员,那么还需同步第二遍。 3、拉取接口变化成分页,因为业务路径会变化,所有配置项需要重新选一遍。 4、内部根节点,外部根节点如果选错同步后,因为组织模型目前不支持跨单位调整部门,所以需要手动进行维护,或者找组织模型部门人员,清空数据库重新同步。 5、如果是导入的连接器,要核实一下所有页签的业务路径和参数。 6、偶尔有表达式感觉不生效的情况,重新清空保存然后再选一遍重试。 7、如果日志中,接口中有日志,但是组织同步页签没有日志,那么应该后台报错了,需要取服务器日志(cip-connector)进一步分析。 搜索关键字为:执行组织同步任务项。 常见的一种情况是机构授权数不够,无法新建机构,这个找商务进行license授权 8、组织同步日志表,如果量大也可以手动清理。 cip-connector库: select * from cip_p_sync_his where plugin_id=(select id from cip_p_plugin_info where connector_id={连接器id}) and data_type in(0,1,2,3,4,5,6,7); 其中:data_type: 0=组织(单位+部门)基本信息,1=组织(单位+部门)扩展信息,2=岗位信息,3=职务信息,4=职级信息,5=人员基本信息,6=人员扩展信息,7=人员任职信息

img1

2、第三方推送

2.1、事件订阅和消息队列

事件订阅:监听第三方回调事件 消息队列:监听mq 因为组织模型的关联性和异步性,可以作为中间的一种技术手段,不建议作为直接交付使用。

2.2、中间表

支持全量/增量。支持重试。暂不支持自动创建用户映射。一般需第三方开发或者结合微流程开发使用。 可以直接将数据直插数据库表,也可以通过openapi进行插入。 全量模式: 1、如果第三方只给最新的启用的组织,停用数据不给,那么会比较v8数据,自动进行停用。 2、需要同步完全部数据后,再给予一个同步完成标识。 增量模式: 按照[第三方数据最新时间]比对出最新数据,定时同步。每次同步为一个批次。 【写入02】任职变化时,写入用户的全部任职,与【写入01】只能二选一,这个意思是人员增量,但是对应的任职必须是该人全部的。如果人员第一次同步任职有两条任职,第二次同步有一条新增任职,目前因为没有组织模型没有记录任职唯一标识,无法判断第二次任职是新增还是更新已有的某个岗位。

5.2 - 事项同步

通过可视化配置,实现V8平台与多个三方异构系统间的事项同步。

1、概述

通过可视化配置,实现V8平台与多个三方异构系统间的事项同步。

2、集成模式优缺点对比分析

1736492922109

3、集成方向&模式

5.2.1 - V8同步至三方

集成模式

5.2.1.1 - 三方系统提供写入OpenAPI(推荐)

三方异构系统提供写入OpenAPI,由COP定时调用接口主动推送,完成事项同步。

1、概述

三方异构系统提供写入OpenAPI,由COP定时调用接口主动推送,完成事项同步。

三方系统提供事项写入OpenAPI,COP平台封装接口,定时主动推送待办事项,配置字段映射,完成事项同步。

2、优缺点

* 优点

a. 三方系统工作量少,三方无需关注字段映射、同步日志等集成步骤,针对有标准接口的saas产品集成效率更高;

b. 整个集成步骤都是在图形化操作界面中完成,可以大量节约集成工期和研发投入;

c. 主动写入,数据时效性高;

* 缺点

a. 三方系统数据库结构字段要求高,必须满足COP系统事项呈现要求,否则会造成部分功能缺失;

b. 致远实施工作量大,需要了解三方系统数据库字段要求;

3、操作步骤

序号 步骤名称 责任方 使用场景
1 提供单点登录接口规范和文档 三方系统 非必须,如果COP和三方系统未接入统一身份认证系统,则需要通过单点登录方式免登陆打开事项详情页
2 提供事项写入接口规范和文档 三方系统 必须,
3 注册并配置鉴权AppID和秘钥 三方系统 非必须,如果三方系统接口调用时涉及到安全鉴权,则需要提供
4 提供接口调用示例 三方系统 必须,为了集成效率,强烈建议三方系统提供可直接使用的postman接口调用示例,
5 新建三方集成应用 致远 必须,集成应用负责封装三方系统接口和配置单点登录
6 发布三方集成应用 致远 必须,集成应用只有发布后才能正常使用
7 封装安全认证 致远 非必须,如果三方系统接口调用时涉及到安全鉴权,则需要配置安全认证
8 封装签名 致远 非必须,如果三方系统接口调用时涉及到签名参数,则需要配置签名
9 接口封装 致远 必须,三方系统提供的接口只有正常封装后才能供给COP使用
10 在线调试验证 致远 必须,三方系统接口封装完成后,需要在线调试,验证网络通信、接口返回结果是否正确等
11 单点登录 三方系统 必须,参照【三方系统单点登录打开COP】单点登录模式配置
12 新建事项同步 致远 必须,
13 选择同步模式 致远 必须,
14 配置同步周期 致远 必须,根据数据量和服务器消费能力,合理配置同步周期
15 配置字段映射 致远 必须:三方系统接口文档中的字段名,字段释义与COP不一致,需要配置参数映射、层级转换等

4、集成配置说明

4.1. 新建三方集成应用

1720691961884

4.2. 封装安全认证

1720691967564

1720691971398

4.3. 枚举定义

1720691975935

4.4. 接口封装

1720691980574

1720691985385

1720691990437

1720691995488

1720692000295

1720692005088

1720692009777

4.5.在线调试验证

1720692014093

1720692018917

4.6. 新建事项同步【致远】

1720692024071

4.7. 选择同步模式【致远】

1720692028029

4.8. 配置字段映射【致远】

1720692032177

1720692037026

4.9. 发布三方集成应用

1720691344319

5、注意事项

5.2.2 - 三方同步至V8

集成模式

5.2.2.1 - COP平台开放写入OpenAPI(推荐)

COP平台开放写入OpenAPI,由三方异构系统定时增量推送,完成事项同步模式。

1、概述

COP平台开放写入OpenAPI,由三方异构系统定时增量推送,完成事项同步模式。

2、核心字段定义

术语 定义 来源 测试数据
appKey V8统一认证中心分配给每个接入应用的唯一标识Id,别名应用Id 致远COP 3e4a140e2509477396fa04ddcd70c3d2
AppSecret V8统一认证中心分配给每个接入应用的加密解密秘钥,别名应用秘钥 致远COP 5bad0b6618934c62bffefe4cc0d8c03d
url前缀 文档中所有接口的请求前缀 致远COP http://openapi-bpm.CC.com.cn
capabilityId 同步能力编码,针对事项同步场景:新增待办、新增我的已发、已发更新为已办 致远COP 1531486151775358223
capabilityId 同步能力编码,针对消息同步场景 致远COP 1457957992996539915

3. 集成导图

1720436285007

4、接口签名

4.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.2、签名示例(sign)

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

5、集成配置

目的:生成APPKey、APPSecret和同步能力编码三个核心参数

5.1. 新建集成应用

1720436493245

5.2. 配置单点登录

1720436521388

5.3、新建事项同步,获取事项同步能力编码

1720436714310

1720486821713

1720436724312

1720436731687

5.4、发布应用

1720436814018

5.5、启用API

1720436845375

5.6、新建接入应用

1720436859248

5.7、启用接入应用

1720436868273

5.8、分配APPKey和AppSecret

1720436877815

5.9、应用级别API授权

1720436884647

5.10、按需开启IP白名单

1720437010235

5.11、按需开启限流控制

1720436916930

5.12、API调用日志

1720436930684

6、接口清单

请求地址

【url前缀】/cip-manager/plugin-affair/create-update

1720437136324

1720437274015

请求参数

参数名称 父节点 是否必填 参数类型 参数描述
requestId true string 请求流水号。同一接入应用下的流水号不要重复
timestamp true int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl false string 异步回调URL。
如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
data true PluginAffairBatchDto 请求参数数据
capabilityId data true int64 待办同步能力编号
affairAction data true enum[START:START;
OTHER:OTHER; ]
产生事项变更的动作
idType data true enum[OUTER_ID;
V8_ID;
V8_CODE; 
V8_LOGIN_NAME;
V8_PHONE;]
发起人/处理人标识类型,
不传递默认OUTER_ID(三方系统ID)。
枚举项可选值列表:OUTER_ID(三方系统ID),
V8_ID(V8内部ID),
V8_CODE(V8系统编号),
V8_LOGIN_NAME(V8登录名),
V8_PHONE(V8手机号)
affairList data true array[PluginAffairDetailDto] 待办详情列表
externalAffairId affairList true string 事项标识
startMemberId affairList true string 发起人标识
startTime affairList true string 发起时间。毫秒时间戳或者yyyy-MM-dd HH:mm:ss格式
ownerId affairList true string 处理人标识
title affairList true string 待办标题
importance affairList true int32 重要程度,0=普通,1=重要
receiveTime affairList true string 接收时间。毫秒时间戳或者yyyy-MM-dd HH:mm:ss格式
todoWebUrl affairList true string PC端查看地址
todoMobileUrl affairList true string 移动端查看地址
objectId affairList true string 组ID,比如流程id
dealTime affairList true string 处理时间。毫秒时间戳或者yyyy-MM-dd HH:mm:ss格式
newStatus affairList true string 目标状态,仅更新时使用enum[
NONE:默认值:空;
READY:待发;
SENT:已发;
PENDING:待办;
DONE:已办;
REVOKE:撤销; ]
subStatus affairList true string 目标子状态,仅更新时使用
pending=正常待办
ready=草稿待发
sent=正常已发
done=正常已办
temporary=暂存
backed=被退回
retrieve=取回s
top=终止
terminated=被终止
transfer=移交
return=退回
specifyFallback=指定退回
revoke=撤销
revoked=被撤销
beCompetitive=被竞争
abandoned=废弃
sender=回退到开始节点子状态
pause=挂起状态
objectState affairList true int32 -1=空
0=运行中
1=终止
2=完成
4=挂起
5=撤销
6=草稿
7=删除
compareKey affairList true string 数据更新标识。传递时间戳即可
openType affairList false string 详情打开方式:WORKSPACE(工作区),
NEWWINDOW(新窗口,默认值)

请求示例

{
  "data": {
    "affairList": [
      {
        "newStatus": "DONE",/*枚举值*/
        "externalAffairId": "123321128",/*业务系统事项Id,唯一*/
        "importance": 1,/*枚举值*/
        "startMemberId": "MB202305060001",/*根据idType定义,示例中idType=V8_CODE时,传值致远V8用户Code*/
        "ownerId": "MB202305060001",/*根据idType定义,示例中idType=V8_CODE时,传值致远V8用户Code*/
        "title": "待办同步测试123",/*待办事项标题*/
        "todoWebUrl": "PC详情url",/*待办事项PC端待处理页URL地址*/
        "subStatus": "pengding",/*枚举值*/
        "receiveTime": "2023-04-24 19:25:30",/*接受时间*/
        "compareKey": "1688033651186",/*数据更新标识。传递时间戳*/
        "dealTime": "2023-04-24 19:25:30",/*处理时间*/
        "startTime": "2023-04-24 19:25:30",/*发起时间*/
        "todoMobileUrl": "移动端详情url123",/*待办事项移动端待处理页URL地址*/
        "openType":"NEWWINDOW",/*枚举值,详情页打开方式*/
        "objectId": "1008"/*流程Id,与待办objectId参数一致*/
      }
    ],
    "capabilityId": "1531486151775358223",/*固定值,事项同步能力编码*/
    "affairAction": "OTHER",/*固定值*/
    "idType":"V8_CODE"/*枚举值*/
  },
  "requestId": "1395151404498159078",/*请求流水号,每次请求唯一*/
  "timestamp": 1688033651186/*请求时间戳,毫秒级*/
}

返回参数

参数名称 父节点 参数类型 参数描述
data SingleData 返回值数据
content data void 数据对象
details content array
externalAffairId details string 事项ID
result details string 操作结果,ADD=新增,MODIFY=更新
status int32 状态
code string 错误码
message string 返回信息

返回示例

{
    "status": 0,/*成功标识*/
    "code": "BOOT_0000",/*错误码*/
    "message": "SUCCESS",/*返回信息*/
    "data": {
        "content": {
            "details": [
                {
                    "externalAffairId": "1693299012298",
                    "result": "ADD"
                }
            ]
        }
    }
}

7、注意事项

7.1、待办批量更新为已办接口和批量新增待办接口请求地址一致,入参有差异,核心差异字段为请求示例中标记了【差异】的参数newStatus、subStatus、compareKey;

7.2、返回结果中code=BOOT_0000,且externalAffairId不为空时,才表示同步成功。

7.3、当前模式下,不会同步生成消息。

7.4、新增待办时:newStatus=PENDING&subStatus=pending;待办更新已办时:newStatus=DONE&subStatus=done,且事项ID一致、

5.2.2.2 - 消息队列

COP平台将组织数据写入MQ,三方异构系统消费MQ,实现事项同步模式。

1、概述

COP平台将组织数据写入MQ,三方异构系统消费MQ,实现事项同步模式。

三方系统将事项数据写入MQ,COP监听MQ获取事项数据,实现事项同步。

COP平台还提供同步补偿。

2、优缺点

a. 优点

i. 三方系统集成压力小;

ii. 数据时效性高;

b. 缺点

i. 实施团队需要熟悉三方系统接口规范、定义;

ii. 实施团队需要熟悉COP平台事项维度和数据定义;

3、操作步骤

序号 步骤名称 责任方 使用场景
1 提供事项新增、变更增量更新MQ消息体定义 三方系统 必须
2 提供MQ连接信息 三方系统 必须,
3 新建MQ数据源 致远 必须,封装MQ数据连接
4 新建三方集成应用 致远 必须,三方集成应用负责封装三方系统接口和配置数据映射
5 发布启用三方集成应用 致远 必须,三方集成应用只有发布后才能正常使用
6 新建消息队列 致远 非必须,根据三方系统提供的消息体定义
7 启用事项同步 致远 必须,字段映射、同步周期需要在事项同步中配置
8 选择同步模式 致远 必须,本场景下固定选择模式为:从三方系统获取
9 配置字段映射 致远 必须:三方系统接口文档中的字段名,字段释义与COP不一致,需要配置参数映射、层级转换等
10 使用日志 致远 必须,配置完成并启用后,查看使用日志

4、集成配置说明

4.1. 新建数据源

1720691555475

4.2. 新建三方集成应用

1720691559991

4.3. 队列封装

1720691566931

4.4. 配置单点登录

1720691574339

4.5. 新建事项同步

1720691579735

4.6. 选择同步模式

1720691585727

4.7. 配置字段映射

1720691590800

1720691595856

4.8. 发布三方集成应用

1720691344319

4.9. 三方系统创建事项【三方系统】

配置完成后,三方系统创建事项。

4.10. 等待拉取间隔时间

等待同步周期间隔时间后,登录门户查看已经同步后的待办事项。

4.11. 门户待办栏目查看数据【致远】

1720691600410

4.12. 点击待办数据并处理【致远】

1720691604628

4.13. 等待拉取间隔时间

等待同步周期间隔时间后,登录门户查看已经同步后的已办事项。

待办处理之后变为已办,数据展示在已办栏目。

4.14. 刷新门户首页查看待办、已办数据【致远】

1720691610349

5、 注意事项

5.2.2.3 - 第三方同步到V8常见问题

常见问题记录。

1、拉取

一般作为初始化使用,运行中不推荐使用,量大而且实时性差。

2、事件订阅、消息队列

异步的,第三方调用后,会甩出mq,然后订阅执行。第三方不能感知是否最后形成事项,需人工检查。

3、关联开放openapi

第三方数据→cip-connector底表(用于判断更新/新增)→调用affair接口。

img1

1、如何通过第三方id查到对应的事项: cip-connector:select id from cip_p_sync_affair where outer_id=’{第三方id}’ ctp-affair:select * from affair where sub_object_id={cip_p_sync_affair的id}

2、capabilityId获取方式:

img2

3、数据内容一个节点多个人,需要节点id+人的id作为第三方的标识。

4、如果相关人员是第三方信息,那么需要提前建立好用户映射

5、待办更新时,目前需要报文中含有所有字段。如果更新时只给id和状态,那么还需要第三方建立底表存储新建时的报文信息。

6、接口成功都会返回第三方标识。接口错误的一种标志如下

img3

5.3 - 消息同步

通过可视化配置,实现V8平台与多个三方异构系统间的消息同步。

1、概述

通过可视化配置,实现V8平台与多个三方异构系统间的消息同步。

2、集成模式优缺点对比分析

1736493185454

3、集成方向&模式

5.3.1 - V8同步至三方

集成模式

5.3.1.1 - 三方系统提供写入OpenAPI

三方异构系统提供写入OpenAPI,由COP定时调用接口主动推送,完成消息同步。

1、概述

三方异构系统提供写入OpenAPI,由COP定时调用接口主动推送,完成消息同步。

2、优缺点

a. 优点

i. 三方系统工作量少,三方无需关注字段映射、同步日志等集成步骤,针对有标准接口的saas产品集成效率更高;

ii. 整个集成步骤都是在图形化操作界面中完成,可以大量节约集成工期和研发投入;

iii. 主动写入,数据时效性高;

b. 缺点

i. 三方系统数据库结构字段要求高,必须满足COP系统事项呈现要求,否则会造成部分功能缺失;

ii. 致远实施工作量大,需要了解三方系统数据库字段要求;

3、操作步骤

序号 步骤名称 责任方 使用场景
1 提供单点登录接口规范和文档 三方系统 非必须,如果COP和三方系统未接入统一身份认证系统,则需要通过单点登录方式免登陆打开事项详情页
2 提供消息写入接口规范和文档 三方系统 必须,
3 注册并配置鉴权AppID和秘钥 三方系统 非必须,如果三方系统接口调用时涉及到安全鉴权,则需要提供
4 提供接口调用示例 三方系统 必须,为了集成效率,强烈建议三方系统提供可直接使用的postman接口调用示例,
5 新建三方集成应用 致远 必须,集成应用负责封装三方系统接口和配置单点登录
6 发布三方集成应用 致远 必须,集成应用只有发布后才能正常使用
7 封装安全认证 致远 非必须,如果三方系统接口调用时涉及到安全鉴权,则需要配置安全认证
8 封装签名 致远 非必须,如果三方系统接口调用时涉及到签名参数,则需要配置签名
9 接口封装 致远 必须,三方系统提供的接口只有正常封装后才能供给COP使用
10 在线调试验证 致远 必须,三方系统接口封装完成后,需要在线调试,验证网络通信、接口返回结果是否正确等
11 单点登录 三方系统 必须,参照【三方系统单点登录打开COP】单点登录模式配置
12 新建消息同步 致远 必须,
13 选择同步模式 致远 必须,
14 配置同步周期 致远 必须,根据数据量和服务器消费能力,合理配置同步周期
15 配置字段映射 致远 必须:三方系统接口文档中的字段名,字段释义与COP不一致,需要配置参数映射、层级转换等

4、集成配置说明

4.1. 新建三方集成应用

1720696192495

4.2. 封装安全认证

1720696198223

1720696202245

4.3. 枚举定义

1720696206213

4.4. 接口封装

1720696209869

1720696222550

1720696226485

1720696230809

1720696234456

1720696238228

1720696242669

4.5. 在线调试验证

1720696247789

1720696252321

4.6. 新建消息同步【致远】

1720696256971

4.7. 选择同步模式【致远】

1720696261083

4.8. 配置字段映射【致远】

1720696265004

1720696269828

4.9. 发布三方集成应用

1720695503483

5、注意事项

5.3.2 - 三方同步至V8

集成模式

5.3.2.1 - COP平台开放写入OpenAPI(推荐)

COP平台开放写入OpenAPI,由三方异构系统定时增量推送,完成消息同步模式。

1、概述

COP平台开放写入OpenAPI,由三方异构系统定时增量推送,完成消息同步模式。

2、核心字段定义

术语 定义 来源 测试数据
appKey V8统一认证中心分配给每个接入应用的唯一标识Id,别名应用Id 致远COP 3e4a140e2509477396fa04ddcd70c3d2
AppSecret V8统一认证中心分配给每个接入应用的加密解密秘钥,别名应用秘钥 致远COP 5bad0b6618934c62bffefe4cc0d8c03d
url前缀 文档中所有接口的请求前缀 致远COP http://openapi-bpm.CC.com.cn
capabilityId 同步能力编码,针对消息同步场景 致远COP 1457957992996539915

3、应用场景

由业务系统定义消息触发条件,并调用【批量同步消息】接口发送消息,数据呈现在【消息中心】栏目;

4、接口签名

4.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.2、签名示例(sign)

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

5、集成配置

5.1. 新建集成应用

1720436493245

5.2. 配置单点登录

1720436521388

5.3、新建消息同步,获取消息同步能力编码

1720694867639

1720694898512

1720694936546

1720694958325

5.4、发布应用

1720436814018

5.5、启用API

1720695059883

5.6、新建接入应用

1720436859248

5.7、启用接入应用

1720436868273

5.8、分配APPKey和AppSecret

1720436877815

5.9、应用级别API授权

1720695115541

5.10、按需开启IP白名单

1720437010235

5.11、按需开启限流控制

1720436916930

5.12、API调用日志

1720436930684

6、接口清单

6.1. 【批量】 批量同步消息

6.1.1. 请求地址

【url前缀】/cip-manager/plugin-affair/create-update

6.1.2. 请求参数

参数名称 父节点 是否必填 参数类型 参数描述
requestId true string 请求流水号。同一接入应用下的流水号不要重复;
最长32位,超过部分会被截断。
timestamp true int64 请求时间戳。请求时间和服务器时间不能相差过大,
默认5分钟以内。
notifyUrl false string 异步回调URL。如果此参数非空,表示使用异步方式调用开放API,
执行结果将通过此URL异步通知调用者。
data true PluginMessageBatchDto 请求参数数据
capabilityId data true int64 事项所属基础插件能力。复用插件的用户映射,单点登录等配置。
idType data false enum 发起人/处理人标识类型,
不传递默认OUTER_ID(三方系统ID)。
枚举项可选值列表:
OUTER_ID(三方系统ID),
V8_ID(V8内部ID),
V8_CODE(V8系统编号),
V8_LOGIN_NAME(V8登录名),
V8_PHONE(V8手机号)
messageList data true array[PluginMessageDetailDto] 消息列表
senderId messageList false string 消息发起人标识
externalMessageId messageList true string 消息外部编号
messageSourceCode messageList false string 消息来源
title messageList true string 消息标题
createTimeStamp messageList false int64 消息创建时间戳
openType messageList false string 详情打开方式:
WORKSPACE(工作区),
NEWWINDOW(新窗口,默认值)
todoWebUrl messageList false string 消息WEB端详情地址
todoMobileUrl messageList false string 消息移动端详情地址
receiverDto messageList true MessageReceiverDto 消息接收人对象
userIdList receiverDto false array[string] 消息接收者标识列表(按人员发送消息)。
和unitCodeList至少填一个
unitCodeList receiverDto false array[string] 接收者V8组织编号列表(按组织发送消息)。
和userIdList至少填一个
extendSign receiverDto false boolean 组织是单位时是否包含下级单位(组织是部门时,
固定包含下级部门)

6.1.3. 请求示例

{
  "data": {
    "messageList": [
      {
        "senderId": "MB202306070002",/*致远OA用户Code*/
        "externalMessageId": "11000102",/*业务系统消息Id,唯一*/
        "createTimeStamp": 1688033651186,/*请求时间戳,毫秒级*/
        "todoMobileUrl": "https://www.baidu.com",/*待办事项移动端详情页URL地址*/
        "title": "测试消息头2023年4月19日14:17:06",/*消息标题*/
        "receiverDto": {
          "userIdList": ["MB202306070002"]/*致远OA用户Code*/
        },
        "todoWebUrl": "https://www.baidu.com",/*消息PC端待处理页URL地址*/
         "openType":"NEWWINDOW"/*枚举值,打开方式*/
      }
    ],
    "capabilityId": "1498469601665614061",/*固定值*/
    "idType":"V8_CODE"/*枚举值*/
  },
  "requestId": "1395143136501500012",/*请求流水号,每次请求唯一*/
  "timestamp":1688033651186/*请求时间戳,毫秒级*/
  }

6.1.4. 返回参数

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

6.1.5. 返回示例

{
    "status": 0,/*成功标识*/
    "code": "BOOT_0000",/*错误码*/
    "message": "SUCCESS",/*返回信息*/
    "data": null
}

5.3.2.2 - 第三方同步到V8常见问题

常见问题记录。

1、概述

第三方数据→openapi→调用消息接口,和待办不同的是,消息没有底表。 第三方id最大长度限制是43位。

img

5.4 - 身份认证

支持COP平台单点登录进入三方异构系统,同时支持三方异构系统免登进入COP平台

集成模式

5.4.1 - 单点登录

COP平台单点登录进入三方异构系统。

1、概述

提供标准的单点登录认证模式,有致远V8颁发临时授权码ticket,三方根据ticket获取当前登录用户信息,完成单点登录。

2、标准单点登录模式

2.1、V8标准单点登录认证(协同认证-V8)

a、说明

V8登录成功后,点击三方系统菜单前,会根据当前登录用户信息,生成临时授权码,在三方原始菜单地址后拼接参数ticket,
三方系统拦截ticket参数,根据【根据ticket获取用户信息】接口获取用户信息,模拟登陆,实现免登进入三方系统。

b、根据ticket获取用户信息接口说明

请求地址

[http://]【COP平台域名】/service/ctp-user/auth/restore

1720432222549

请求方式

POST

请求参数(Body)

参数名称 是否必填 参数类型 参数描述
ticket true string 用户登录后,由用户中心拼接在重定向地址最后的临时授权ticket

请求示例

{
    "ticket": "ngkhgkgd16fdg96dg1d6fg498dfg615"
}

返回参数

参数名称 上级节点 参数类型 参数描述
status int 状态码
code string 响应码
message string 响应信息
data object
content data object
code content string 编号
orgName content string 所属组织
tenantCode content string 租户编码
type content string 账号类型。枚举项可选值列表:NONE(空),MEMBER(内部人员),EXTERNAL_MEMBER(外部联系人)
socialCreditCode content string 统一社会信用代码
orgId content string 所属组织ID
phoneNumber content string 手机号码
outsideOrgName content string 外部单位名称
outsideOrgCode content string 外部单位编码
orgCode content string 所属组织编码
loginName content string 用户名/登录名
name content string 姓名
outsideOrgId content string 外部单位ID
allTenantUserInfo content array 所有租户任职信息
code allTenantUserInfo string 编号
orgName allTenantUserInfo string 所属组织名称
tenantCode allTenantUserInfo string 租户编码
type allTenantUserInfo string 账号类型。枚举项可选值列表:NONE(空),MEMBER(内部人员),EXTERNAL_MEMBER(外部联系人)
socialCreditCode allTenantUserInfo string 统一社会信用代码
orgId allTenantUserInfo string 所属组织ID
phoneNumber allTenantUserInfo string 手机号码
outsideOrgName allTenantUserInfo string 外部单位名称
outsideOrgCode allTenantUserInfo string 外部单位编码
orgCode allTenantUserInfo string 所属组织编码
loginName allTenantUserInfo string 用户名/登录名
name allTenantUserInfo string 姓名
outsideOrgId allTenantUserInfo string 外部单位ID

返回示例

{
  "status": 0,
  "code": "BOOT_0000",
  "message": "SUCCESS",
  "data": {
    "content": {
      "code": "1557587001015575870039",
      "orgName": "致远互联",
      "tenantCode": "cop",
      "type": "INTERNAL",
      "socialCreditCode": null,
      "orgId": "1958919590712968571",
      "phoneNumber": "15575870010",
      "outsideOrgName": null,
      "allTenantUserInfo": [
        {
          "code": "1557587001015575870039",
          "orgName": "致远互联",
          "tenantCode": "cop",
          "type": "INTERNAL",
          "socialCreditCode": null,
          "orgId": "1958919590712968571",
          "phoneNumber": "15575870010",
          "outsideOrgName": null,
          "outsideOrgCode": null,
          "orgCode": "group",
          "loginName": "org-admin",
          "name": "管理员",
          "outsideOrgId": null
        }
      ],
      "outsideOrgCode": null,
      "orgCode": "group",
      "loginName": "org-admin",
      "name": "管理员",
      "outsideOrgId": null
    }
  }
}

2.2、三方提供临时登录授权码模式(标准认证-两次请求)

a、说明

V8登录成功后,点击三方菜单前,携带当前用户身份信息,按照三方系统要求调用三方系统接口,获取临时授权,拼接在URL后,三方拦截参数并解析后,
免登进入三方系统。

3、经典模式

说明:针对高频集成场景,平台默认提供预制的集成方式,实施人员联系三方提供必要的授权参数即可实现V8单点登录三方系统。

3.1、用友认证-YonBIP

说明:V8单点登录用友YonBIP时使用

3.2、关爱通认证

说明:V8单点登录关爱通时使用

3.3、263邮箱认证

说明:V8单点登录263邮箱时使用

3.4、阿里认证-DingTalk

说明:V8单点登录DingTalk时使用

3.5、用友认证-NC65

说明:V8单点登录NC65时使用

3.6、薪事力认证

说明:V8单点登录薪事力时使用

3.7、金蝶认证-我家云

说明:V8单点登录金蝶云时使用

3.8、协同认证-V5

说明:V8单点登录V5时使用

4、注意事项

5.4.2 - 免登

三方异构系统免登进入V8

版本要求: ctp-user >= 3.2.x

1、概述

平台提供标准的免登认证机制,三方异构系统根据分配的秘钥调用接口获取免登授权码,并按要求拼接免登地址后,即可免登进入COP平台。

2、集成导图

1721380688616

3、集成步骤

3.1、申请APPKey和AppSecret

访问路径:管理后台—>集成平台–>开放平台–>接入应用

1720675794903

1720675856079

1720675898664

3.2、接口调用,获取免登授权码

调用接口【获取免登授权码】接口,接口参数规则说明:

3.3、拼接免登地址

【COP平台访问域名】:COP平台前台访问域名,例如https://saas.seeyonv8.com

【Web端待跳转地址】:免登成功后需要跳转的COP平台地址,例如首页地址:“/main/portal”

【移动端端待跳转地址】:免登成功后需要跳转的COP平台地址,例如首页地址:“/main-mobile/portal”

urlencode:编码函数,为了防止出现参数冲突,【Web端待跳转地址】和【移动端端待跳转地址】需要采用url编码后再拼接到免登地址中

【appKey】:第二步COP平台为每个应用分配的AppKey

【免登授权码】上一步接口获取的免登授权码

免登地址:【COP平台访问域名】/oauth/avoid?web=urlencode(【Web端待跳转地址】)&mobile=urlencode(【移动端端待跳转地址】)&sytype=sytoken&syid=【appKey】&sytoken=【免登授权码】

例如:

https://saas.seeyonv8.com/oauth/avoid?web=%2Fmain%2Fportal&mobile=&sytype=sytoken&syid=cd13f41d30f44d438b05b6588411178f&sytoken=SY-otokx4kfq0wtiwxm

按照以上步骤操作后,URL地址直接写入浏览器URL即可免登进入COP平台首页

3.4、验证免登授权码

注意:联调阶段或者问题定位阶段,使用【验证免登授权码】接口,验证免登授权码是否正常有效;

4、接口清单

4.1、获取免登授权码

请求地址

【COP平台访问域名】/service/ctp-user/auth/avoid/sytoken

请求方式

POST

请求参数(Body) 参数生成示例见 5.2 java 调用示例

参数名称 是否必填 参数类型 参数描述
responseType TRUE string 请求类型,
固定值:create
clientId TRUE string 应用ID,操作步骤中的接入应用-AppKey
例如:cd13f41d30f44d438b05b6588411178f
dataType TRUE string 用户标识键,双方约定的用户标识字段,标识用于生成签名的用户标识键等于COP平台的对应字段
枚举值:
loginName=用户名;
mobile=手机号码;
code=用户编号;
email=邮箱;
userid=用户ID;
dataValue TRUE string AES用户信息加密;当dataType=mobile时,用户手机号码为17300001234,则明文为17300001234
加密配置信息:
      明文:17300001234
      模式:CBC固定模式不可变
      填充:Pkcs7或Pkcs5固定类型不可变
      偏移量:apaasseeyonv8com 固定值不可变
      密文编码:HEX类型不可变
      秘钥:接入应用分配的AppSecret,例如:93ec877511d24dda8cf86a9d7870f681
加密后结果集示例:6d52cb81d4f8ee6359b0559f3aa0bcba
AES在线加密参考网站:http://tool.lvtao.net/aes
signature TRUE string 签名函数,以下四个参数经过自然排序后,拼接成一个字符串,使用SHA256加密
加密前四个参数:
AppKey(接入应用分类的AppKey);
AppSecret(接入应用分配的AppSecret);
data(加密后的用户信息dataValue);
时间戳:请求参数中的timestamp;
如对 “abcd” 进行签名后的结果为 “88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589”
SHA256在线加密参考网站:https://crypot.51strive.com/sha256.html
timestamp TRUE string 毫秒级时间戳,参与生成签名;
例如:“1720669311740”

请求参数示例

{
        "responseType": "create",
        "clientId": "1242bc19f9f6493c9599ba007b9774c9",
        "dataType": "mobile",
        "dataValue": "6d52cb81d4f8ee6359b0559f3aa0bcba", // 对 17300001234 进行加密后的密文
        "signature": "07bf5c43a0297599ea78ca72e85fea72680eb550f4a3dae4ddb4e8575950a148",
        "timestamp": "1720669311740"
    }

响应参数(Body)

参数名称 父节点 参数类型 参数描述
data SingleData 返回值数据
content data void 数据对象
expireSeconds content string 授权码有效时长,默认-1,仅可使用一次
sytoken content string 免登授权码
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": {
        "content": {
            "expireSeconds": "-1",
            "sytoken": "SY-5fdin8jp0jmj8i4p"
        }
    }
}

4.2、验证免登授权码

请求地址

【COP平台访问域名】/service/ctp-user/auth/avoid/sycheck

请求方式

GET

请求参数(Query)

参数名称 是否必填 参数类型 参数描述
sytoken TRUE string 免登授权码
例如:SY-o5vtq1z3bnvecwta
syid TRUE string 应用ID,操作步骤中的接入应用-AppKey
例如:cd13f41d30f44d438b05b6588411178f

请求参数示例

【COP平台访问域名】/service/ctp-user/auth/avoid/sycheck?sytoken=SY-o5vtq1z3bnvecwta&syid=cd13f41d30f44d438b05b6588411178f

响应参数(Body)

参数名称 父节点 参数类型 参数描述
data SingleData 返回值数据
content data void 数据对象
sytokenValid content string 授权码是否有效
syidValid content string syid/AppKey/ClientId是否有效
validity content string 授权码剩余可使用次数
status int32 状态
code string 错误码
message string 返回信息

响应参数示例

{
    "status": 0,
    "code": "BOOT_0000",
    "message": "SUCCESS",
    "data": {
        "content": {
            "sytokenValid": true,
            "syidValid": true,
            "validity": "once"
        }
    }
}

5、调用示例

5.1、ApiFox

注意:将一下内容导出文件名为V8开放平台.apifox.json后,使用APIFox导入即可;

{"apifoxProject":"1.0.0","$schema":{"app":"apifox","type":"project","version":"1.2.0"},"info":{"name":"V8开放平台","description":"","mockRule":{"rules":[],"enableSystemRule":true}},"apiCollection":[{"name":"根目录","id":12310375,"auth":{},"parentId":0,"serverId":"","description":"","identityPattern":{"httpApi":{"type":"methodAndPath","bodyType":"","fields":[]}},"preProcessors":[{"id":"inheritProcessors","type":"inheritProcessors","data":{}}],"postProcessors":[{"id":"inheritProcessors","type":"inheritProcessors","data":{}}],"inheritPostProcessors":{},"inheritPreProcessors":{},"items":[{"name":"OAuth免登","id":34341447,"auth":{},"parentId":0,"serverId":"","description":"","identityPattern":{"httpApi":{"type":"inherit","bodyType":""}},"preProcessors":[{"type":"customScript","data":"const appkey = pm.environment.get(\"app-key\");\r\nconst appsecret = pm.environment.get(\"app-secret\");\r\nconst signStr = pm.environment.get(\"signStr\");\r\nvar timestamp = new Date().getTime();\r\nconsole.log('timestamp='+timestamp);\r\nvar moment = require('moment');\r\nvar dUTC = new Date();\r\nvar formatDateTime = moment(dUTC).format('YYYY-MM-DD hh:mm:ss');\r\n\r\nvar body = pm.request.body.raw.toString();\r\nconsole.log('body='+body);\r\n\r\n//AES手机号码加密-开始\r\nvar cryptoJs = require(\"crypto-js\");\r\nconst mobile= \"17301103865\"\r\nconst key = CryptoJS.enc.Utf8.parse(appsecret);\r\nconst iv1 = cryptoJs.enc.Utf8.parse('www.seeyonv8.com');\r\nconst encrypted = cryptoJs.AES.encrypt(mobile, key, {\r\n   iv:  iv1,\r\n   mode: cryptoJs.mode.CBC,\r\n   padding: cryptoJs.pad.Pkcs7\r\n}).ciphertext.toString();\r\nconsole.log('encrypted='+encrypted);\r\n//AES手机号码加密-结束\r\n\r\n\r\n//签名计算-开始\r\nvar srcDataArr = [];\r\nsrcDataArr=[appkey, appsecret, encrypted, timestamp];\r\nconsole.log('srcDataArr='+srcDataArr);\r\nsrcDataArr.sort();\r\nconsole.log('srcDataArr='+srcDataArr);\r\nvar srcSign = srcDataArr.join(\"\");\r\nconsole.log('srcSign='+srcSign);\r\nvar signature=CryptoJS.SHA256(srcSign).toString();\r\nconsole.log('signature='+signature);\r\nvar newBody= body.replace('{{clientId}}', appkey)\r\n        .replace('{{timestamp}}', timestamp)\r\n        .replace('{{dataValue}}', encrypted)\r\n        .replace('{{signature}}', signature);\r\n        console.log('newBody='+srcSign);\r\npm.request.body.raw=newBody;\r\n//签名计算-结束\r\n\r\n","defaultEnable":true,"enable":true,"id":"VGKlxRoDhjQqm1tEhZ2V8","executionTiming":"prerequest"},{"id":"inheritProcessors","type":"inheritProcessors","data":{}}],"postProcessors":[{"id":"inheritProcessors","type":"inheritProcessors","data":{}}],"inheritPostProcessors":{},"inheritPreProcessors":{},"items":[{"name":"获取Token","api":{"id":"175366254","method":"post","path":"/service/ctp-user/auth/avoid/sytoken","parameters":{"path":[],"header":[]},"auth":{},"commonParameters":{"query":[],"body":[],"cookie":[],"header":[]},"responses":[{"id":"453493410","name":"成功","code":200,"contentType":"eventStream","jsonSchema":{"type":"object","properties":{}}}],"responseExamples":[],"requestBody":{"type":"application/json","parameters":[{"required":false,"description":"","type":"string","id":"OpdZpqBeRe","example":"韩","enable":true,"name":"query"}],"jsonSchema":{"type":"object","properties":{}},"example":"{\r\n    \"responseType\": \"create\",\r\n    \"clientId\": \"1242bc19f9f6493c9599ba007b9774c9\",\r\n    \"dataType\": \"mobile\",\r\n    \"dataValue\": {{dataValue}},\r\n    \"signature\": {{signature}},\r\n    \"timestamp\": {{timestamp}}\r\n}"},"description":"","tags":[],"status":"developing","serverId":"","operationId":"","sourceUrl":"","ordering":50,"cases":[],"mocks":[],"customApiFields":"{}","advancedSettings":{"disabledSystemHeaders":{}},"mockScript":{},"codeSamples":[],"commonResponseStatus":{},"responseChildren":["BLANK.453493410"],"preProcessors":[],"postProcessors":[],"inheritPostProcessors":{},"inheritPreProcessors":{}}},{"name":"验证Token","api":{"id":"175898146","method":"post","path":"/service/ctp-user/auth/avoid/sycheck","parameters":{"query":[{"id":"B0Hw9tnMOB","name":"sytoken","example":"SY-wjls766qqv8zru67","required":false,"description":"","enable":true,"type":"string"},{"id":"ROZGpZw2Aj","name":"syid","example":"1242bc19f9f6493c9599ba007b9774c9","required":false,"description":"","enable":true,"type":"string"}]},"auth":{},"commonParameters":{"query":[],"body":[],"cookie":[],"header":[]},"responses":[{"id":"454439745","name":"成功","code":200,"contentType":"json","jsonSchema":{"type":"object","properties":{}}}],"responseExamples":[],"requestBody":{"type":"none","parameters":[],"jsonSchema":{"type":"object","properties":{}},"example":""},"description":"","tags":[],"status":"developing","serverId":"","operationId":"","sourceUrl":"","ordering":60,"cases":[],"mocks":[],"customApiFields":"{}","advancedSettings":{"disabledSystemHeaders":{}},"mockScript":{},"codeSamples":[],"commonResponseStatus":{},"responseChildren":["BLANK.454439745"],"preProcessors":[],"postProcessors":[],"inheritPostProcessors":{},"inheritPreProcessors":{}}}]}]}],"socketCollection":[],"docCollection":[],"responseCollection":[{"_databaseId":2268233,"name":"Root","type":"root","children":[],"parentId":0,"id":2268233,"items":[]}],"schemaCollection":[],"requestCollection":[{"name":"根目录","children":[],"items":[{"id":1521000,"name":"百度翻译","method":"post","path":"https://fanyi.baidu.com/langdetect","requestBody":{"type":"multipart/form-data","parameters":[{"type":"string","name":"query","sampleValue":"周","value":"周","enable":true}]},"parameters":{},"commonParameters":{"query":[],"body":[],"header":[],"cookie":[]},"preProcessors":[],"postProcessors":[],"auth":{},"advancedSettings":{},"folderId":0}]}],"environments":[],"commonScripts":[],"globalVariables":[{"id":"2272068","variables":[{"name":"url","value":"https://71d0daa2-2ac9-4a23-bc72-17c90b15a409.mock.pstmn.io","description":"","isBindInitial":true,"initialValue":"https://71d0daa2-2ac9-4a23-bc72-17c90b15a409.mock.pstmn.io","isSync":true}]}],"commonParameters":null,"projectSetting":{"id":"1776703","auth":{},"servers":[{"name":"Pre地址前缀","id":"default"}],"gateway":[],"language":"zh-CN","apiStatuses":["developing","testing","released","deprecated"],"mockSettings":{},"preProcessors":[],"postProcessors":[],"advancedSettings":{},"initialDisabledMockIds":[],"cloudMock":{"security":"free","enable":true,"tokenKey":"apifoxToken"}},"customFunctions":[],"projectAssociations":[]}

5.2、Java

package com.nowhere.demo;

import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
import cn.hutool.crypto.symmetric.AES;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.concurrent.ConcurrentHashMap;

public class CipAvoidUtils {

    private static final Logger log = LoggerFactory.getLogger(CipAvoidUtils.class);
    private static final String AES_IV = "apaasseeyonv8com"; // 确保这是一个合适的IV字符串

    private static final ConcurrentHashMap<String, AES> AESCache = new ConcurrentHashMap<>();

    public static void main(String[] args) {
        String clientId = "1242bc19f9f6493c9599ba007b9774c9";
        String appSecret = "93ec877511d24dda8cf86a9d7870f681";
        String data = "17300001234";
        String timestamp = "1720669311740";

        // 加密业务参数
        // encryptData = 6d52cb81d4f8ee6359b0559f3aa0bcba
        String encryptData = CipAvoidUtils.encrypt(data, appSecret);
        System.out.println("encryptData = " + encryptData);
        // 数据自然排序
        // sortData = 1242bc19f9f6493c9599ba007b9774c917206693117406d52cb81d4f8ee6359b0559f3aa0bcba93ec877511d24dda8cf86a9d7870f681
        String sortData = CipAvoidUtils.sort(clientId, appSecret, encryptData, timestamp);
        System.out.println("sortData = " + sortData);
        // sha256签名
        // sign = 07bf5c43a0297599ea78ca72e85fea72680eb550f4a3dae4ddb4e8575950a148
        String signature = CipAvoidUtils.sha256(sortData);
        System.out.println("signature = " + signature);
    }

    public static String sha256(String srcData) {
        try {
            MessageDigest digest = MessageDigest.getInstance("SHA-256");
            byte[] hash = digest.digest(srcData.getBytes(StandardCharsets.UTF_8));
            StringBuilder hexString = new StringBuilder();
            for (byte b : hash) {
                String hex = Integer.toHexString(0xff & b);
                if (hex.length() == 1) hexString.append('0');
                hexString.append(hex);
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("SHA-256 algorithm not found", e);
        }
    }

    /**
     * 将入参进行自然排序
     *
     * @param clientId      客户端ID,对应应用的AppKey, 不能为null或空
     * @param clientSecret  客户端密钥,不能为null或空
     * @param data          加密后的数据,不能为null或空
     * @param timestampPara 时间戳参数,不能为null或空
     * @return 排序后的字符串拼接结果
     */
    public static String sort(String clientId, String clientSecret, String data, String timestampPara) {
        // 检查输入参数的有效性
        if (StringUtils.isAnyBlank(clientId, clientSecret, data, timestampPara)) {
            throw new IllegalArgumentException("All parameters must not be null or empty.");
        }

        String[] srcDataArr = new String[]{clientId, clientSecret, data, timestampPara};
        Arrays.sort(srcDataArr);
        return String.join("", srcDataArr);
    }

    /**
     * 使用指定密钥加密字符串数据
     *
     * @param data 待加密的数据,不能为null或空
     * @param key  加密密钥,接入应用分配的 AppSecret 的值
     * @return 加密后的字符串
     */
    public static String encrypt(String data, String key) {
        // 检查输入数据和密钥是否有效
        if (StringUtils.isAnyBlank(data, key)) {
            throw new IllegalArgumentException("Data and key must not be null or empty.");
        }

        try {
            // 根据密钥获取AES加密器实例
            AES aes = getAes(key);
            // 使用AES加密器加密数据并以十六进制字符串形式返回
            return aes.encryptHex(data);
        } catch (Exception e) {
            // 记录加密失败的错误信息
            log.error("Encryption failed: {}", e.getMessage(), e);
            // 将加密过程中捕获的异常包装成RuntimeException重新抛出
            throw new RuntimeException("Encryption failed", e);
        }
    }

    /**
     * 解密字符串
     * 使用提供的密钥对加密数据进行解密
     *
     * @param encryptedData 加密后的数据,不能为空
     * @param key           加密密钥,接入应用分配的 AppSecret 的值
     * @return 解密后的字符串
     */
    public static String decrypt(String encryptedData, String key) {
        // 检查输入参数的有效性
        if (StringUtils.isAnyBlank(encryptedData, key)) {
            throw new IllegalArgumentException("Encrypted data and key must not be null or empty.");
        }

        try {
            // 根据密钥获取AES实例
            AES aes = getAes(key);
            // 解密数据
            return aes.decryptStr(encryptedData);
        } catch (Exception e) {
            // 记录解密失败的错误信息
            log.error("Decryption failed: {}", e.getMessage(), e);
            // 将解密过程中发生的异常包装成运行时异常重新抛出
            throw new RuntimeException("Decryption failed", e);
        }
    }

    private static AES getAes(String key) {
        return AESCache.computeIfAbsent(key, k -> {
            try {
                return new AES(Mode.CBC, Padding.PKCS5Padding, k.getBytes(StandardCharsets.UTF_8), AES_IV.getBytes(StandardCharsets.UTF_8));
            } catch (Exception e) {
                log.error("Failed to create AES object for key: {}", k, e);
                throw new RuntimeException("Failed to create AES object", e);
            }
        });
    }
}

6、注意事项

5.4.3 - 三方统一身份认证

针对市场上热门的三方统一身份认证系统,平台提供了开箱即用的接入机制。

1、概述

针对市场上热门的三方统一身份认证系统,平台提供了开箱即用的接入机制。

2、预制统一身份认证清单

2.1、信安

2.2、腾讯玉符

2.3、派拉

2.4、CAS

2.5、SAML2

3、集成配置步骤

3.1、使用系统管理员账号登录管理后台

1720680502608

3.2、进入认证服务

1720680522109

3.3、按需选择预制三方统一身份认证系统

1720680536421

3.4、按需选择客户端类型

1720680626988

3.5、联系三方统一身份认证系统获取授权信息

1720680698008

3.6、重启微服务ctp-user

3.7、前台验证

注意,在未登录情况下,浏览器地址中输入【COP平台访问域名】/main/portal时,系统系统跳转到三方统一身份认证页,属于对方账号密码后可以正常进入COP首页,标识配置正确并生效。

5.5 - OpenAPI集成

支持COP平台内,预制应用、低代码定制应用、BPM表单应用、三方集成应用通过自注册机制开放OpenAPI和事件。

1、概述

支持COP平台内,预制应用、低代码定制应用、BPM表单应用、三方集成应用通过自注册机制开放OpenAPI和事件。

2、集成场景

5.5.1 - 开放OpenAPI

基于标准的OpenAPI管理平台,提供丰富的数据开放能力。

1、概述

提供一套标准的OpenAPI管理平台,允许平台内原始应用、UDC自建应用和三方集成应用接入并分享OpenAPI,且支持相同的签名和调用规范,用以促进COP平台与三方系统数据间的快速集成。

2、集成步骤

序号 步骤名称 描述
1 API查看 非必须,查看可用的API清单
2 API扩展-UDC发布实体API 非必须,UDC-实体-开放OpenAPI,可以配置开放OpenAPI,在应用成功发布后,
OpenAPI可以发布到开放平台,遵循开放平台授权管理规范
3 UDC发布自定义API 非必须,UDC-规则-自定义服务,可以配置开放OpenAPI,在应用成功发布后,
OpenAPI可以发布到开放平台,遵循开放平台授权管理规范
4 三方集成应用开放API 非必须,三方集成应用可以封装三方接口后,启用能力开放,应用发布并启用后,
三方接口会发布至开放平台,遵循开放平台授权管理规范
5 刷新API 非必须,API接口更新后,COP会异步将更新后的API发布至开放平台,如果需要立即查看,
可以在API管理页面点击刷新API按钮刷新API清单
6 启用API 必须,API一级授权,只有启用API,接入应用才可以选择到对应的API。
7 新建接入应用 必须,承载API二级授权配置和IP白名单、使用日志等信息
8 启用接入应用 必须,未启用时,调用接口会提示API未启用
9 分配APPKey和AppSecret 必须,新建接入应用时,会自动生成APPKey和AppSecret,三方系统调用接口时,
需要根据以上两个参数生成签名
10 应用级别API授权 必须,API二级授权,针对当前Appkey添加可访问API
11 导出接口文档 非必须,导出当前接入应用已授权API接口文档
12 IP白名单 非必须,支持IP白名单配置,不配置时所有IP均可访问
13 限流控制 非必须,支持某个时间段内访问频率限制
14 API调用日志 必须,用户根据API调用日志,定位错误

3、集成步骤配置说明

3.1. 进入管理后台

1720573923636

3.2. API查看

1720573928621

注意事项:

各个微服务中会有starter中暴露出来的公共OpenApi,例如:,默认不是所有应用都开启,需要使用系统管理员账号system-admin登录手动开启,见下图。

openapi3

开启公共api的应用效果如下:

openapi

未开启公共api的效果如下:

openapi2

问题排查:

api列表中未显示,可先查询元数据,看元数据中是否存在该openapi,https://域名或ip端口//service/cip-manager/metadata/open-api?appName=应用名称
示例地址:https://pre.seeyonv8.com/service/cip-manager/metadata/open-api?appName=ctp-affair

openapi4

3.3. API扩展-UDC/BPM发布实体API

1720573933269
1720573937953

1720573946287

1720573951664

3.4. UDC/BPM发布自定义API

1720573956829

1720573964641

1720573972433

1720573981143

1720573986436

3.5. 三方集成应用开放API

1720573991399

1720573996087

1720574001857

3.6. 刷新API

1720574007516

3.7. 启用API

1720574012269

3.8. 新建接入应用

1720574017657

3.9. 启用接入应用

1720574022557

3.10. 分配APPKey和AppSecret

1720574028822

3.11. 应用级别API授权

1720574034095

3.12. 导出接口文档

1720574039183

3.13. IP白名单

1720574044253

3.14. 限流控制

1720574049065

3.15. API调用日志

1720574053883

4、API签名规则介绍

4.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.2、签名示例(sign)

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

5、错误码

错误码 错误码说明
OPEN_GATEWAY_1000 调用开放api异常
OPEN_GATEWAY_1002 token无效或者已过期
OPEN_GATEWAY_1004 请求参数不是合法的json
OPEN_GATEWAY_2004 应用访问API次数过多,目前暂无可用次数
OPEN_GATEWAY_3000 无权访问该接口
OPEN_GATEWAY_3001 访问路径不对
OPEN_GATEWAY_4000 缺少签名参数
OPEN_GATEWAY_4001 缺少appKey
OPEN_GATEWAY_4002 缺少requestId
OPEN_GATEWAY_5000 无效的签名
OPEN_GATEWAY_5001 无效的appKey
OPEN_GATEWAY_5002 非法时间戳
OPEN_GATEWAY_5006 无效的IP
OPEN_GATEWAY_5008 无权访问指定数据
OPEN_GATEWAY_6000 应用未上线
OPEN_GATEWAY_6001 请求URL非法
OPEN_GATEWAY_6002 API尚未启用
OPEN_GATEWAY_6003 不允许跨租户访问数据
BPM_2136 通过根实体{0}找到多个流程模板
UDC_DEDUCTION_RULE_0001 来源实体已绑定关系图:{0}
UDC_DEDUCTION_RULE_0002 来源实体版型不是单据
UDC_DEDUCTION_RULE_0003 目标实体版型是单据
UDC_DEDUCTION_RULE_0004 关系图形定义json格式化错误
UDC_DEDUCTION_RULE_0005 关系图形下存在扣减规则
UDC_DEDUCTION_RULE_0006 来源实体id为空
UDC_DEDUCTION_RULE_0007 规则编码重复
UDC_DEDUCTION_RULE_0008 关系图形定义连线中存在首尾为同一个实体的连线,重复实体为:{0}
UDC_DEDUCTION_RULE_0009 参与算法的目标字段不是目标末级实体字段
UDC_DEDUCTION_RULE_0010 非法字段:{0}
UDC_DEDUCTION_RULE_0011 不是数值类型字段
UDC_DEDUCTION_RULE_0012 规则中实体体系不合法
UDC_DEDUCTION_RULE_0013 单据状态:{0},未绑定算法
UDC_DEDUCTION_RULE_0014 检查规则中目标实体只能是末级实体
UDC_DEDUCTION_RULE_0015 固定值属性为空
UDC_DEDUCTION_RULE_0016 常量对应的数据类型:{0}与属性值:{1}不一致
UDC_DEDUCTION_RULE_0017 不支持的数据类型:{0}
UDC_DEDUCTION_RULE_0018 目标字段:{0},数据类型:{1},与来源字段:{2},数据类型:{3}不匹配
UDC_DEDUCTION_RULE_0019 扣减规则{0}已正式发布,无法删除!
UDC_DEDUCTION_RULE_0020 目标字段:[{0}]常量查找方式,来源为空!
SCHEDULE_0000 不支持在当月其他日期指定“l”和“lw”。
SCHEDULE_0001 不支持在一周中的其他日期指定“l”
SCHEDULE_0002 不支持指定多个“n”天。
SCHEDULE_0003 表达式意外结束。
SCHEDULE_0004 不支持同时指定星期几和月日参数。
SCHEDULE_0005 cron表达式格式非法
SCHEDULE_0006 月值无效
SCHEDULE_0007 无效的星期日值
SCHEDULE_0008 介于1和5之间的数值必须跟在“%23”选项后面
SCHEDULE_0009 此位置的非法字符
SCHEDULE_0010 “?”后的字符非法
SCHEDULE_0011 ‘?‘只能为月日或周日指定。
SCHEDULE_0012 ‘?‘只能为月日或周日指定。
SCHEDULE_0013 “/”后面必须跟一个整数。
SCHEDULE_0014 字符串意外结束。
SCHEDULE_0015 与最后一天的偏移量必须<=30
SCHEDULE_0015 与最后一天的偏移量必须<=30
SCHEDULE_0015 与最后一天的偏移量必须<=30
SCHEDULE_0017 递增
SCHEDULE_0018 星期几值必须介于1和7之间星期几值必须介于1和7之间
SCHEDULE_0019 ‘L’选项在此处无效
SCHEDULE_0020 ‘W’选项在此处无效
SCHEDULE_0021 如果值大于31(一个月内的最大天数),“w”选项没有意义
SCHEDULE_0022 ‘#‘选项在此无效
SCHEDULE_0023 介于1和5之间的数值必须跟在“%23”选项后面
SCHEDULE_0024 ‘/‘后面必须跟一个整数。
SCHEDULE_0025 意外字符
SCHEDULE_0026 之后
SCHEDULE_0027 分钟和秒值必须介于0和59之间
SCHEDULE_0028 小时值必须介于0和23之间
SCHEDULE_0029 日值必须介于1和31之间
SCHEDULE_0030 月份值必须介于1和12之间
SCHEDULE_0031 星期几值必须介于1和7之间
SCHEDULE_0032 开始年份必须小于停止年份
SCHEDULE_0033 遇到意外类型
UDC_DATAFLOW_CONVERT_0002 类型转换需要配置来源和目标数据类型
UDC_DATAFLOW_CONVERT_0001 不支持的数据类型转换!
UDC_DATAFLOW_1001 当前选择的生单规则下包含映射规则定义,不能删除!
UDC_DATAFLOW_1002 definition属性的数据格式不是有效的json格式!
UDC_DATAFLOW_1003 生单规则图中{0}实体已经不存在,请清理之后再执行此操作
UDC_DATAFLOW_1004 生单规则{0}已正式发布,无法删除!
UDC_DATAFLOW_0003 {0}不能为null!
UDC_DATAFLOW_0004 您设置的从{0}字段【{1}】拷贝到{2}字段【{3}】不正确,字段类型不一致!
UDC_DATAFLOW_0007 【{0}】实体所在区域来源实体字段不属于同一个体系!
UDC_DATAFLOW_0008 【{0}】实体所在区域目标实体数据查找条件设置有误,请检查并修正!
UDC_DATAFLOW_0009 事件订阅类型映射规则需要选择事件!
UDC_DATAFLOW_0010 映射规则中目标实体不能重复选择!
UDC_DATAFLOW_0011 目标实体关键字段必须包含主实体字段!
UDC_DATAFLOW_0012 目标实体关键字段必须参与映射!
UDC_DATAFLOW_0013 当前应用下映射规则编码不能重复!
UDC_DATAFLOW_0014 回写规则设置的来源实体【{0}】没有参与映射规则设置!
UDC_DATAFLOW_0015 回写规则设置的映射到来源字段【{0}】的字段
或者表达式不是映射规则中当前实体映射到的实体字段
UDC_DATAFLOW_0016 【{0}】实体映射区域目标实体数据查找条件的来源字段
或目标字段所属实体不在同一个体系!
UDC_DATAFLOW_0017 保存之后会存在循环映射,路径:{0},请检查并修改!
UDC_DATAFLOW_0018 【{0}】实体回写区域目标实体字段不是同一个体系!
UDC_DATAFLOW_0019 【{0}】实体所在区域目标实体字段【{1}】存在重复!
UDC_DATAFLOW_0020 【{0}】字段不支持参与映射,请修改!
UDC_DATAFLOW_0021 【{0}】字段不支持参与条件,请修改!
UDC_DATAFLOW_0022 映射规则中回写规则来源实体不能重复!
UDC_DATAFLOW_0023 回写规则【{0}】实体所在区域来源实体字段【{1}】存在重复!
UDC_DATAFLOW_0024 【{0}】实体映射区域目标实体数据查找条件的目标字段
需要是当前区域实体和聚合根实体之间的实体字段
UDC_DATAFLOW_0025 映射规则中存在有目标实体到聚合根实体之间没有参与映射的实体
UDC_DATAFLOW_0026 您设置的从{0}字段【{1}】拷贝到{2}字段【{3}】不正确,绑定的{4}不一致
UDC_DATAFLOW_0027 您设置的从{0}字段【{1}】拷贝到{2}字段【{3}】不正确,绑定的实体不一致
UDC_DATAFLOW_0028 【{0}】字段映射方式错误
UDC_DATAFLOW_0029 {0}不支持当前映射方式
UDC_DATAFLOW_0030 【{0}】字段不支持当前映射方式
UDC_DATAFLOW_0031 只有新建类型映射规则的回写时机才可以选择目标新增时
UDC_DATAFLOW_0034 拆单字段必需是拆行实体下的字段
UDC_DATAFLOW_0035 数据类型为数字的才能设置拆单字段
UDC_DATAFLOW_0039 【{0}】版型实体不支持参与生单规则
UDC_DATAFLOW_0041 拆行实体只能是来源实体的主和子实体
UDC_DATAFLOW_0042 拆单字段必需参与映射
UDC_DATAFLOW_0043 {0}已不存在,请检查并修改后再执行此操作
UDC_DATAFLOW_0044 映射规则的目标实体必须是当前应用
UDC_DATAFLOW_0045 普通应用只能建立应用内的映射规则
UDC_DATAFLOW_0046 表单应用只能建立当前应用和依赖应用的映射规则
UDC_DATAFLOW_0047 【{0}】实体元数据有缺失,请修改一下实体内任意信息,
以便重新更新下元数据中心数据
UDC_DATAFLOW_0048 映射规则表达式中的实体信息有误,请检查并重新设置
UDC_DATAFLOW_0049 映射规则表达式中的字段信息有误,请检查并重新设置
UDC_DATAFLOW_0050 目标实体关键字映射方式为计算公式时,表达式中不能包含目标实体字段
UDC_DATAFLOW_0051 字段【{0}】为多选实体字段不能映射到单选实体字段
UDC_DATAFLOW_0052 字段【{0}】为多选{1}字段不能映射到单选{2}字段
UDC_DATAFLOW_0053 事件订阅类型映射规则来源实体查找条件不能为空
UDC_DATAFLOW_0054 事件订阅类型映射规则来源实体查找条件中实体信息有误
UDC_DATAFLOW_0055 事件订阅类型映射规则来源实体查找条件中字段信息有误
UDC_DATAFLOW_0056 字段【{0}】为多选附件字段不能映射到单选附件字段
UDC_DATAFLOW_0057 回写时机单选目标更新时,才可以设置旧值参与表达式
UDC_DATAFLOW_0058 【{0}】字段固定值设置有误
UDC_DATAFLOW_0059 【{0}】实体映射区域来源实体设置了拆行实体子孙实体参与映射
UDC_DATAFLOW_0060 手工触发映射规则来源实体列表方案参数有误
UDC_DATAFLOW_0061 列表方案条件字段不在选择实体中
UDC_DATAFLOW_0062 列表方案条件字段数据类型不正确
UDC_DATAFLOW_0063 列表方案显示列必需包含拆单字段
UDC_DATAFLOW_0064 列表方案可选实体为参与映射规则的所有实体,
及其与根实体之间的所有实体(包含根实体)
UDC_DATAFLOW_0065 来源实体列表方案显示字段不存在
UDC_DATAFLOW_0066 来源实体列表方案选择实体不是一个体系
UDC_DATAFLOW_0067 来源实体列表方案选择实体不连续
UDC_DATAFLOW_0068 来源实体列表方案排序字段不存在
UDC_DATAFLOW_0069 来源实体列表方案排序字段不是主表字段
UDC_DATAFLOW_0070 来源实体列表方案条件字段不存在
UDC_DATAFLOW_0071 新建数据、新建或更新数据类型生单规则,需要选择PC端目标详情页面。
UDC_DATAFLOW_0073 新建数据、新建或更新数据类型生单规则,需要选择移动端目标详情页面。
UDC_DATAFLOW_0074 {0}实体的必填字段:{1}必需参与映射
UDC_DATAFLOW_0075 【{0}】映射区域中参与映射条件的来源实体必需是当前映射区域来源实体范围内
UDC_DATAFLOW_0076 列表方案显示字段不是选择实体下的字段
UDC_DATAFLOW_0077 列表方案选择的实体不存在
UDC_DATAFLOW_0078 来源实体列表方案搜索字段不存在
UDC_DATAFLOW_0079 列表方案搜索字段不是选择实体下的字段
BOOT_3006 License无此功能授权
UDC_MICROFLOW_RUNTIME_0001 {0}
UDC_MICROFLOW_RUNTIME_0002 连接器节点执行失败!status:{0},code:{1},message:{2}
UDC_MICROFLOW_RUNTIME_0003 [{0}]是必填的
UDC_MICROFLOW_RUNTIME_0004 映射值类型转换失败,微流程执行中止!
UDC_MICROFLOW_RUNTIME_0005 未实现的自定义微流程
CIP_CUSTOM_2001 集成应用名称已存在
CIP_CUSTOM_2002 重试操作失败
SERIALNUMBER_1000 流水号Key值不能为空
SERIALNUMBER_1001 新设置的当前值应大于等于原有的当前值
SERIALNUMBER_1002 编码规则编码或者名称不能为空
SERIALNUMBER_1003 流水段不允许删除
SERIALNUMBER_1004 当前值长度不能超过流水号长度
SERIALNUMBER_1005 编码规则创建失败
SERIALNUMBER_1006 补位符号设置有误
SERIALNUMBER_1007 当前值不能为空
SERIALNUMBER_1008 流水段有且只能有一段
SERIALNUMBER_1009 无流水依据时,设置的当前值不能小于1,不能大于99999
SERIALNUMBER_1010 设置的当前值不能小于1,不能大于99999
SERIALNUMBER_1011 设置的当前值不能小于已流水的值
SERIALNUMBER_1012 有流水依据的不可以用此接口生成空号
SERIALNUMBER_1013 规则编码不允许重复
SERIALNUMBER_1014 分段值不允许为空
SERIALNUMBER_1015 分段值超长
SERIALNUMBER_1016 流水段长度必须大于0
SERIALNUMBER_1017 流水段个数介于1和6之间
SERIALNUMBER_1018 预制流水号不允许删除
SERIALNUMBER_2001 规则ID不能为空
SERIALNUMBER_2002 请输入非负的整数进行查询
SERIALNUMBER_2003 开始值不能小于结束值
SERIALNUMBER_2004 开始值或结束值要介于1和100000之间
SERIALNUMBER_2005 和预留号(段)[{0}]重复,请修改
SERIALNUMBER_3001 编码规则[{0}]已停用
SERIALNUMBER_3002 编码规则[{0}]生成流水号,缺少必要段{1}的值
SERIALNUMBER_3003 编码规则[{0}]流水号溢出,请重新设置流水段长度
SERIALNUMBER_3004 流水生成失败:流水依据字段【{0}】不能为空.
BASIC_0001 数据不存在
BASIC_0002 必填项【{0}】为空
BASIC_0003 单次查询最大限制【{0}】条
CIP_MOBILE_0001 未启用微协同
CIP_MOBILE_0002 部门用户没权限开启
CIP_MOBILE_0003 三方配置不存在
CIP_MOBILE_0004 重复的接入应用名称
CIP_MOBILE_0005 重复的同步机构数据
CIP_MOBILE_0006 配置不正确或者未开启必要权限
CIP_MOBILE_0007 应用发布失败
CIP_MOBILE_0008 重复的AgentID配置
CIP_MOBILE_0009 重复的AppKey配置
CIP_MOBILE_0010 重复的AppID配置
CIP_MOBILE_0011 重复的同步方案名称
CIP_MOBILE_0012 重复的模板配置
CIP_MOBILE_1001 部门未创建
CIP_MOBILE_1002 请填写正确的corpId
CIP_MOBILE_1003 所选组织无数据
CIP_MOBILE_1004 正在导出中
CIP_MOBILE_2001 重复的小程序版本号
CIP_MOBILE_2002 授权结果查询失败
CIP_MOBILE_2003 已存在未通过审核的版本
PLUGIN_0001 同名插件已经存在,请更换名称
PLUGIN_0002 连接器不存在
PLUGIN_0003 不允许修改连接器
PLUGIN_0004 内部用户/外部用户已经配置
PLUGIN_0005 待办不存在或者调用待办中心接口出错
PLUGIN_0006 执行连接器动作出错!原始错误:{0}
PLUGIN_0007 获取外部组织树失败
PLUGIN_0008 参数【{0}】不合法
PLUGIN_0009 名称已存在
PLUGIN_0010 超过用户映射列数量上限,自定义列最多6
PLUGIN_0011 默认岗位和职务必须属于同一组织
PLUGIN_0012 插件外部值不允许重复
PLUGIN_0013 插件已经存在同名的能力
PLUGIN_0014 用户不存在
PLUGIN_0015 插件不存在
PLUGIN_0016 插件导入失败
PLUGIN_0017 ldap执行失败
PLUGIN_0018 连接器事件只能绑定一次,该连接器事件已经被绑定。
PLUGIN_0019 NC数据解析异常。
PLUGIN_0020 查询元数据失败
PLUGIN_0021 查询用户映射信息失败,原始错误:{0}
PLUGIN_0022 插件当前已被禁用,操作无法继续
PLUGIN_0023 用户映射信息不完整
PLUGIN_0024 用户映射导入正在进行,请稍后再试
PLUGIN_0025 检索结果过多,请优化检索条件
ENTITY_EXPR_0001 表达式运行态实体上下文组装,参数为空
ENTITY_EXPR_0002 未获取到聚合根实体
UDC_FORM_0001 获取元数据{0}失败
UDC_FORM_0002 方法调用失败:{0}
UDC_FORM_0003 上传前端资源失败:{0}
UDC_FORM_0004 菜单资源加载失败
VOUCHER_0001 获取外部系统访问token失败
VOUCHER_0002 无法连接三方凭证系统
VOUCHER_0003 调用三方凭证系统失败。原始错误码:{0},错误描述:{1}
VOUCHER_0004 每个组织/部门只能映射一个会计主体
VOUCHER_0005 该流程已经配置凭证映射
VOUCHER_0006 凭证当前状态不支持此操作
VOUCHER_0007 科目已经映射成其它外部科目
VOUCHER_0008 获取凭证的实体数据失败
VOUCHER_0009 名称或者编号已经被占用
VOUCHER_0010 数据同步不能并发执行
VOUCHER_0011 NC服务异常
VOUCHER_0012 该模板编号的凭证设置已有记录,不可重复录入
VOUCHER_0013 科目不可重复
VOUCHER_0014 制单人没有做人员映射
VOUCHER_0015 每条单据都必须是保存态才能进行合并
VOUCHER_0016 每条单据所绑定的凭证插件必须相同
VOUCHER_0017 每条单据的账簿和凭证类型都应相同
VOUCHER_0018 凭证插件ID是查询必需条件
VOUCHER_0019 获取流程实体数据失败
VOUCHER_0020 凭证合并必须最少两条数据
VOUCHER_0021 调用NC凭证接口异常:{0}
VOUCHER_0022 参与合并的凭证有的已生凭
VOUCHER_0023 没有找到此流程的凭证设置
VOUCHER_0024 调用BPM获取流程详情失败
VOUCHER_0025 暂不支持该辅助核算项同步
VOUCHER_0026 科目映射不支持特殊符号
VOUCHER_0027 凭证初始化数据错误
VOUCHER_0028 访问地址不在白名单中
UDC_COMMON_0003 {0}
BOOT_0000 成功
BOOT_1000 业务异常
BOOT_2000 IO错误
BOOT_3000 系统错误
BOOT_4000 数据库错误
BOOT_5000 未知异常
BOOT_1001 参数错误
BOOT_1002 请求重复
BOOT_1003 未认证
BOOT_1004 对不起,你没有资源访问权限!
BOOT_1005 不支持该操作
BOOT_1006 Token无效
BOOT_1007 幂等参数不合法
BOOT_1008 序列号溢出
BOOT_1009 枚举不允许变更
BOOT_1010 配置错误
BOOT_1011 已过期
BOOT_1012 Token过期
BOOT_1013 CSRF认证失败
BOOT_1014 租户不正确
BOOT_1015 请求参数的长度不能超过{0}
BOOT_2001 网络通信异常
BOOT_3001 系统限流
BOOT_3002 JSON反序列化错误
BOOT_3003 系统降级
BOOT_3004 License不合法
BOOT_3005 License限制
BOOT_3006 License无此功能授权
BOOT_3006 License无此功能授权
BOOT_4001 事务异常
BOOT_4002 数据不存在或无权限查看
BOOT_4003 数据不唯一
BOOT_4004 约束异常: {0}
BOOT_4005 乐观锁校验异常
BOOT_4006 数据库字段类型错误
BOOT_4007 对象被使用
BOOT_4008 PageSize设置超长
BOOT_4013 文件大小不能超过{0}
BOOT_5001 RPC调用异常
BOOT_6001 第三方HTTP调用异常
BOOT_7001 跨环境迁移导出异常
BOOT_7002 跨环境迁移导入异常
BOOT_7003 跨环境迁移获取聚合根为空
BOOT_8000 应用加载中,请稍后重试!
UDC_DATATYPE_0001 长度不能小于0。
UDC_DATATYPE_0002 长度设置错误。
UDC_DATATYPE_0004 最大值不能小于最小值。
UDC_DATATYPE_0005 最小值取值太小,允许的最小值为{0}。
UDC_DATATYPE_0006 最大值取值太大,允许的最大值为{0}。
UDC_DATATYPE_0007 默认值超出设定精度
UDC_DATATYPE_0008 默认值超出设定长度
UDC_DATATYPE_0009 精度超出设定长度
UDC_DATATYPE_0010 默认值格式不正确:{0}
UDC_DATATYPE_0011 默认值超出取值范围。{0}
UDC_DATATYPE_0012 “{0}“字段最大/最小值超出范围
UDC_DATATYPE_0013 {0}关联属性设置错误
UDC_DATATYPE_0014 {0}关联实体或者枚举不存在
UDC_DATATYPE_0015 {0}关联枚举不存在
UDC_DATATYPE_0016 {0}关联选项集不存在
UDC_DATATYPE_0017 {0}关联实体不存在
UDC_DATATYPE_0018 {0}关联流水号不存在
EXPRESSION_0001 函数未定义:{0}
EXPRESSION_0002 函数参数不匹配:{0}
ENTITY_0001 修改传入ID不能为空!
ENTITY_0002 删除传入ID不能为空!
ENTITY_0003 非修改状态的不应传入!
ENTITY_0010 {0}
ENTITY_0021 {0}不可为空
ENTITY_0022 【{0}】长度需要在{1}和{2}之间。
ENTITY_0023 【{0}】不能大于{1}
ENTITY_0024 【{0}】不能小于{1}
ENTITY_0025 {0}小数位数不能超过{1}
ENTITY_0026 {0}无效的日期或时间格式
ENTITY_0027 {0}最多选择{1}个,当前已选{2}个,请修改
ENTITY_0028 {0}不是标准的多选实体格式:{1}
ENTITY_0029 {0}是单选附件,不能上传多个文件。
ENTITY_0030 [{0}]格式错误: {1}
PROCESS_0001 发起流程失败: {0}
PROCESS_0002 处理流程失败: {0}
FORMULA_6001 操作符: {0} ,不合法
FORMULA_6002 操作符: {0} ,右侧不合法
FORMULA_6003 不支持的返回值类型: {0}
FORMULA_6004 表达式不合法
FORMULA_6005 schema:{0}中,存在属性没有 ’name’
FORMULA_6006 schema:{0}中,存在属性没有 ‘description’
FORMULA_6007 schema:{0}中,存在属性没有 ’type’
FORMULA_6008 schema:{0}中,存在节点没有 ‘properties’ 属性
FORMULA_6009 schema:{0}中, ‘properties’的类型必须为array
FORMULA_6010 schema:{0}中, ‘properties’ 没有子元素
FORMULA_6011 schema:{0}中, array类型的节点必须含有items
FORMULA_6012 schema:{0}中, items必须含有属性’type’
FORMULA_6013 schema:{0}中, items type为’object’时,需要’peroperties’属性
FORMULA_6014 schema:{1}中不支持的节点type:{0},及支持tring,integer…等基础类型
FORMULA_6015 schema:{1}中不支持的不支持的attribute type: {0}
FORMULA_6016 枚举属性必须得有controlType ‘ENUM’
FORMULA_6017 枚举属性必须得有controlId
FORMULA_6018 schema错误
FORMULA_6019 operator中变量{0} 不是schema中的key
FORMULA_6020 表达式包含用户变量,但是schema为空
FORMULA_6021 获取对象属性失败
FORMULA_6022 mock数据异常
FORMULA_6023 语法校验失败:{0}
FORMULA_6024 表达式校验失败, {0}
FORMULA_6025 表达式预执行失败: {0}
FORMULA_6026 当前操作符无法匹配到系统变量
FORMULA_6027 当前参数类型不支持
FORMULA_6028 rootName不能为空
FORMULA_6029 未集成参数配置组件
FORMULA_6030 配置参数上下文获取,参数id和appId不能为同时为空
FORMULA_6032 上下文属性: {0}缺少 properties
FORMULA_6033 上下文属性: {0}不支持的数据类型: {1}
FORMULA_6034 节点{0} items不能为空
FORMULA_6035 节点{0}枚举属性信息定义不正确,请检查
FORMULA_6036 明细函数配置不正确,请检查: {0}
FORMULA_6037 页面字段参与表达式执行错误: {0} , {1}
FORMULA_6038 聚合字段作为函数参数不支持嵌套表达式
FORMULA_6039 聚合属性必须为数字
FORMULA_6040 明细表或一对多子表字段只能作为聚合类型函数的参数!
FORMULA_6041 明细表函数条件不能直接使用明细表对象,请选择明细表字段!
FORMULA_6042 明细表函数条件设置错误,请选择明细表字段!
FORMULA_6043 明细表函数条件内只能选择同一个明细表下的字段
FORMULA_6044 明细表函数无法嵌套明细表函数!
FORMULA_6045 函数:{0}之后键入的符号不正确,仅能键入操作符!
FORMULA_6046 操作符: ) ,右侧不能为变量或函数或系统变量
FORMULA_6047 操作符: {0}之后拼接不合法,只能拼接函数、变量和常量
FORMULA_6048 变量: {0}后只能拼接操作符
FORMULA_6049 函数: {0} ,参数个数不匹配 , 请检查参数设置!
FORMULA_6050 取整函数,参数必须为数字类型!
FORMULA_6051 数字: {0} ,超过整数最大界限!
FORMULA_6052 函数【获取系统参数值】只能处理系统参数!
FORMULA_6053 系统参数【{0}】未定义
FORMULA_6054 函数【获取指定下标文本】下标超过文本数组下标
FORMULA_6055 函数【获取指定下标文本】参数类型只能为文本数组或集合
FORMULA_6056 明细表函数【{0}】 ,条件设置错误: {1}
FORMULA_6057 括号匹配失败请检查
FORMULA_6058 变量:{0}在上下文中不存在,请确认!
FORMULA_6059 上下文属性: {0} ,名称重复
FORMULA_6060 取商函数,被除数必须为数字类型
FORMULA_6061 取商函数,除数必须为数字类型
FORMULA_6062 计算结果超过取值范围
FORMULA_6063 枚举属性为空!
FORMULA_6064 函数: {0}第 {1} 个参数类型不匹配, 期望类型 STRING
FORMULA_6065 函数:【千分位显示】 参数类型错误,只能为数字
FORMULA_6066 变量: {0}命名不规范, 不能以数字开头
FORMULA_6067 计算结果不是选项集选项,请检查!
FORMULA_6068 选项集赋值,必须传递选项集fullName
FORMULA_6069 选项集赋值类型不匹配,请检查!
FORMULA_6070 操作符:{0} ,输入错误!
FORMULA_6101 加号左侧类型不正确,必须为数字类型
FORMULA_6102 加号右侧类型不正确,必须为数字类型
FORMULA_6103 减号左侧类型不正确,必须为数字类型
FORMULA_6104 减号右侧类型不正确,必须为数字类型
FORMULA_6105 乘号左侧类型不正确,必须为数字类型
FORMULA_6106 乘号右侧类型不正确,必须为数字类型
FORMULA_6107 除号左侧类型不正确,必须为数字类型
FORMULA_6108 除号右侧类型不正确,必须为数字类型
FORMULA_6109 大于号左侧类型为非数字类型
FORMULA_6110 大于号右侧类型为非数字类型
FORMULA_6111 小于号左侧类型为非数字类型
FORMULA_6112 小于号右侧类型为非数字类型
FORMULA_6113 大于等于号左侧为非数字类型
FORMULA_6114 大于等于号右侧为非数字类型
FORMULA_6115 小于等于号左侧为非数字类型
FORMULA_6116 小于等于号右侧为非数字类型
FORMULA_6117 等于符号两侧不能为空值
FORMULA_6119 等于符号两侧数据类型不一致
FORMULA_6120 大于符号左侧类型不是日期类型
FORMULA_6121 大于符号右侧类型不是日期类型
FORMULA_6122 大于等于符号左侧类型不是日期类型
FORMULA_6123 大于等于符号右侧类型不是日期类型
FORMULA_6124 小于符号左侧类型不是日期类型
FORMULA_6125 小于符号右侧类型不是日期类型
FORMULA_6126 小于等于符号左侧类型不是日期类型
FORMULA_6127 小于等于符号右侧类型不是日期类型
FORMULA_6128 加号左侧不能为空
FORMULA_6129 加号右侧不能为空
FORMULA_6130 减号左侧不能为空
FORMULA_6131 减号右侧不能为空
FORMULA_6132 乘号左侧不能为空
FORMULA_6133 乘号右侧不能为空
FORMULA_6134 除号左侧不能为空
FORMULA_6135 除号右侧不能为空
FORMULA_6136 and符号左侧数据为空
FORMULA_6137 and符号右侧数据为空
FORMULA_6138 and符号左侧数据类型不正确,必须为布尔类型
FORMULA_6139 and符号右侧数据类型不正确,必须为布尔类型
FORMULA_6140 or符号左侧数据为空
FORMULA_6141 or符号右侧数据为空
FORMULA_6142 or符号左侧数据类型不正确,必须为布尔类型
FORMULA_6143 or符号右侧数据类型不正确,必须为布尔类型
FORMULA_6144 not符号只能用于布尔类型
FORMULA_6145 除数不能为0
FORMULA_6146 小于符号左侧不能为空
FORMULA_6147 小于符号右侧不能为空
FORMULA_6148 大于符号左侧不能为空
FORMULA_6149 大于符号右侧不能为空
FORMULA_6150 大于等于符号左侧不能为空
FORMULA_6151 大于等于符号右侧不能为空
FORMULA_6152 小于等于符号左侧不能为空
FORMULA_6153 小于等于符号右侧不能为空
FORMULA_6154 取余符号左侧不能为空
FORMULA_6155 取余符号右侧不能为空
FORMULA_6156 取余符号左侧类型必须为整数
FORMULA_6157 取余符号右侧类型必须为整数
FORMULA_6158 函数:【{0}】 第 {1} 个参数类型不匹配 , 期望类型:{2} , 实际类型: {3}
FORMULA_6159 不支持的函数参数类型:{0}
FORMULA_6160 函数:【{0}】 参数个数不匹配,期望: {1} 个
FORMULA_6161 操作符类型不匹配, {0} {1} {2}
FORMULA_6162 符号不匹配,期望为: {0}
FORMULA_6163 日期不合法: {0}
FORMULA_6164 明细表计数函数只能选择明细表或集合对象作为参数!
FORMULA_6165 条件返回函数返回值数据类型不一致!
OPENAPI_1001 必须传入应用编号参数
OPENAPI_1002 没有找到应用信息,请确认其是否存在
OPENAPI_1003 同名的应用已经存在,请更换名称
OPENAPI_1004 没有找到指定的开放API
OPENAPI_1005 找不到参数的定义
OPENAPI_1006 URL必须以http://或者https://开头
OPENAPI_1007 创建虚拟用户失败
OPENAPI_1008 开放API正在刷新,不能重复调度
OPENAPI_1009 调用用户中心接口失败。错误码:{0},错误描述:{1}
OPENAPI_1010 事件通知正在运行,请稍后手动执行
OPENAPI_1011 手动执行事件通知失败!原始错误信息:{0}
OPENAPI_1012 参数转义规则不允许重复配置!
OPENAPI_1013 地址已存在
OPENAPI_1014 无权访问此接入应用
OPENAPI_1015 回调URL验证失败,请确保服务能正常访问!
OPENAPI_1016 外部参数名称不能重复
ENTITY_0001 修改传入ID不能为空!
ENTITY_0002 删除传入ID不能为空!
ENTITY_0003 非修改状态的不应传入!
ENTITY_0004 必填项不能为空!
ENTITY_0005 构建默值失败!
ENTITY_0006 只读属性不能修改!
ENTITY_0007 没有传递树形父实体
ENTITY_0010 {0}
ENTITY_0011 不支持的方法调用,实体:{0},方法:{1}
PROCESS_0001 发起流程失败: {0}
PROCESS_0002 处理流程失败: {0}
TEMPLATE_1000 未获取到模板文件!
CATEGORY_1000 当前实体已存在!
BPM_PROCESS_0001 发送bpm流程,单据数据不能为空!
BPM_PROCESS_0002 获取旧单据数据单据状态枚举值失败!
BPM_PROCESS_0003 获取新单据数据单据状态枚举值失败!
BPM_PROCESS_0004 {0}
BPM_PROCESS_0005 处理流程失败: {0}
BPM_PROCESS_0006 撤销流程失败: {0}
BPM_PROCESS_0007 获取templateId失败
BPM_PROCESS_0008 获取bpm流程参数失败 : {0}
BPM_PROCESS_0009 设置单据状态失败
BPM_PROCESS_0010 更新字段:{0}失败!
BPM_PROCESS_0011 获取字段:{0}失败!
BPM_PROCESS_0012 终止流程失败
EXCEL-0001 模板格式异常
EXCEL-0002 无效的MD5信息
EXCEL-0003 不存在的导入模板
EXCEL-0004 Excel无数据
EXCEL-0005 生成下载地址为空
EXCEL-0006 模版中表头信息不能为空
EXCEL-0007 模版中表头信息设置有误
EXCEL-CHECK-0001 数据类型校验不通过
EXCEL-CHECK-0002 枚举值校验不通过
EXCEL-CHECK-0003 必填字段的值不能为空
EXCEL-CHECK-0005 没有找到对应的参照
EXCEL-CHECK-0004 单选字段数据校验不通过
EXCEL-CHECK-0006 违法唯一性约束
EXCEL-CHECK-0007 日期和日期时间格式错误,请设置为:yyyy/MM/dd
或 yyyy/MM/dd HH:mm:ss格式.
EXCEL-CHECK-0008 没有找到对应数据
EXCEL-CHECK-0009 与第{}行数据重复
EXCEL-EXPORT-0001 无导出数据
EXCEL-IMPORT-0001 导入处理异常
EXCEL-IMPORT-CHECK-0001 校验处理异常
EXCEL-LISTENER-CHECK-0001 事件监听导入校验处理异常
EXCEL-LISTENER-IMPORT-0001 事件监听导入处理异常
EXCEL-LISTENER-IMPORT-0002 事件监听导入封装数据异常
EXCEL-LISTENER-IMPORT-0003 事件监听导入封装数据返回为空
EXCEL-LISTENER-IMPORT-0004 事件监听导入反射调用各应用处理异常
EXCEL-LISTENER-IMPORT-0005 事件监听导入反射调用各应用返回数据为空
EXCEL-LISTENER-EXPORT-0001 事件监听导出处理异常
EXCEL-LISTENER-METAINFO-0001 事件监听封装元数据处理异常
EXCEL-LISTENER-METAINFO-0002 事件监听封装元数据返回数据为空
ENUM_3000 同一分类下枚举名称重复
ENUM_3001 枚举编码重复
ENUM_3002 枚举名称超长
ENUM_3003 枚举编码超长
ENUM_3004 枚举不能修改是否图片
ENUM_3005 级联枚举层级名称重复
ENUM_3006 级联枚举层级编码重复
ENUM_3007 名称或层级名称在表单应用中已存在
ENUM_3008 编码或层级编码在表单应用中已存在
ENUM_3009 枚举分类名称重复
ENUM_3010 表单应用中已存在名称为{0}的枚举分类
ENUM_3011 同一级下枚举项名称重复
ENUM_3012 同一枚举下枚举项值重复
ENUM_3013 平级枚举只能增加一级
ENUM_3014 级联枚举项的层级不能超过枚举的层级
ENUM_3015 表单应用中已存在名称为{0}的枚举项
ENUM_3016 表单应用中已存在编码为{0}的枚举项
ENUM_3017 该枚举不允许删除
ENUM_3018 该枚举不允许更新
ENUM_3019 该枚举分类不允许删除
ENUM_3020 该枚举项不允许删除
ENUM_3021 图片枚举不允许导入导出
MIGRATION_0001 不允许向本环境推送数据
UK_AN 参数编码重复

6、注意事项

6.1、OpenAPI请求报错400

openapi端口要和nginx配置一致

1728727221057

正确的效果应该是以下这种

1728727279715

6.2、Open请求地址前缀配置

环境安装时,需要为OpenAPI分配独立的域名或者端口,保证和管理后台访问地址域名端口不一样,Nacos配置位置如下,切记需要重启

1731647560982

5.5.2 - 开放事件

基于企业级事件开放平台,提供标准的事件开放能力。

1、概述

基于企业级事件开放平台,提供标准的事件开放能力。

2、集成步骤

序号 步骤名称 责任方 描述
1 事件查看 致远 非必须,查看可用的事件清单
2 UDC发布自定义事件 致远 非必须,UDC-规则-自定义服务,可以配置开放事件,
在应用成功发布后,事件可以发布到开放平台,遵循开放平台授权管理规范
3 启用事件 致远 必须,API一级授权,只有启用API,接入应用才可以选择到对应的API。
4 新建接入应用 致远 必须,承载事件配置
5 启用接入应用 致远 必须,未启用时,事件无法正常回调
6 开启加密因子 致远 非必须,开启后事件内容会加密传输
7 开启回调令牌 致远 非必须,开启后,事件回调会携带配置的eventToken,
用于接入应用验证事件来源。
8 请求网址验证 致远 事件直接回调请求网址模式模式:必须实现回调接口模式:非必须
9 添加事件 致远 必须,事件二级授权
10 配置数据范围 致远 非必须,需要对事件内容进行筛选过滤时配置
11 提供回调接口定义和规范 三方系统 事件直接回调请求网址模式模式:非必须实现回调接口模式:必须
12 新建三方集成应用 致远 事件直接回调请求网址模式模式:非必须实现回调接口模式:必须
13 接口封装 致远 事件直接回调请求网址模式模式:非必须实现回调接口模式:必须
14 发布三方集成应用 致远 事件直接回调请求网址模式模式:非必须实现回调接口模式:必须
15 设置回调方式 致远 事件直接回调请求网址模式模式:非必须实现回调接口模式:必须
,需要选择三方集成应用、接口,并配置字段映射和成功标识

3、集成步骤配置说明

3.1. 进入管理后台

1729731400013

3.2. 事件查看

1729731437933

3.3. UDC发布自定义事件

1729731458117

1729731462482

3.4. 启用事件

1729731468221

3.5. 新建接入应用

1729731471806

3.6. 启用接入应用

1729731475731

3.7. 开启加密因子

1729731484386

3.8. 开启回调令牌

1729731488908

3.9. 请求网址验证

1729731493899

3.10. 添加事件

1729731498018
1729731503621

3.11. 配置数据范围

1729731508099
1729731511661

3.12. 提供回调接口定义和规范

注意:由三方系统线下提供

3.13. 新建三方集成应用

1729731523262

3.14. 接口封装,发布应用

1729731526881

3.15. 设置回调方式

1729731533340

1729731539505

1729731544183

4、事件订阅说明

收到事件通知请求后,需要返回200HTTP响应。其余响应码表示失败,开放平台会自动重发。重发的间隔越来越长,最多尝试10次。事件通知数据使用application/json格式发送。

事件通知的HTTP请求头中,包含回调令牌(需在接入应用的事件订阅中配置开启,默认不开启),用于接入应用验证事件来源。

若开启加密因子(需在接入应用的事件订阅中配置开启,默认不开启),将对事件通知的JSON内容进行加密,只有一个属性encrypt,需要进行解密处理。

4.1、解密示例(Java)

@SuppressWarnings("rawtypes")
    @PostMapping("open-event-map")
    @ResponseBody
    public String openEventCallBack(HttpServletRequest request, @RequestBody Map map) {
      // 事件发生时间
      String createTime = request.getHeader("createTime");
      // 事件的流水号
      String eventId = request.getHeader("eventId");
      // 如果订阅事件时设置了回调token,可以获取token进行校验
      String eventToken = request.getHeader("eventToken");
      if (!OpenApiGlobalConfig.EVENT_CALL_BACK_TOKEN.equals(eventToken)) {
        System.err.println("token不匹配,这是非法的请求!");
        return "error";
      }
      // eventName:事件名称,解码处理
      try {
        String eventName = URLDecoder.decode(request.getHeader("eventName"), StandardCharsets.UTF_8.displayName());
        System.err.println("收到事件:" + eventName);
      } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
      }
      // 事件标识,可以用此字段区分是什么事件发生了
      String eventKey = request.getHeader("eventKey");
      if (!"".equals(OpenApiGlobalConfig.EVENT_CALL_BACK_KEY)) {
        // 如果设置了加密key,那么返回的数据是加密的,需要解密。加解密算法是AES算法。
        String encryptContent = (String) map.get("encrypt");
        String realContent = OpenApiClient.decrypt(encryptContent, OpenApiGlobalConfig.EVENT_CALL_BACK_KEY);
        System.err.println("原始的JSON数据是:" + realContent);
        // 拿到原始的json串以后,可以json串转map或者转对应的DTO,继续处理
        Map dataMap = OpenApiUtil.fromJson(realContent, Map.class);
        // 后续处理
        System.err.println("事件真实数据:" + dataMap);
      } else {
        // 如果没有配置加密,那么是明文传输的,收到的Map就是真实的数据
        Map dataMap = map;
        // 后续处理
        System.err.println("事件真实数据:" + dataMap);
      }
      return "OK";
    }

5.6 - 移动微协同

支持COP平台应用可视化挂载到移动APP上,实现应用注册、组织同步、事项同步、消息同步,同步监控等。

1、概述

支持COP平台应用可视化挂载到移动APP上,实现应用注册、组织同步、事项同步、消息同步,同步监控等。

2、能力区隔表

能力分类 能力描述 钉钉 企业
微信
飞书
插件管理 一个租户下多个同类插件
插件管理 一个租户下多个不同类插件
插件管理 一个插件配置对应多个应用
组织映射 自动生成部门映射
组织映射 自动生成用户映射
组织同步 COP同步至移动app
组织同步 移动app同步至COP
免登 移动app免登进入COP应用
统一身份认证 移动app和COP同时接入同一身份认证,
且用户登录态互信
应用发布 COP任一应用发布至移动app工作台
应用发布 三方异构应用发布至COP平台
再由COP发布至移动app工作台
事项同步 COP事项中心挂载到移动app工作台
事项同步 COP事项推送至移动app原生待办中心 × ×
事项同步 事项内容按需过滤
事项同步 移动app免登录打开COP事项详情页
消息同步 COP消息推送至移动app会话消息中
日程同步 COP日程同步至移动app日程中心 × ×
扫码签到 移动app扫码签到会议 × ×
主动唤醒IM COP一键唤醒移动app,并进入会话 × ×

3、集成场景

5.6.1 - 企业微信

1、概述

平台提供可挂载到企业微信上的移动办公应用(微协同),可实现待办事项查看处理、已办事项查看、事项详情页展示、个人工作台、通讯录、自助绑定/解绑、免登进入UDC定制应用等功能。

2、场景支持

场景 场景说明
应用上架/发布 支持COP平台以”微协同“应用挂载到企微上,包含事项中心、通讯录、个人工作台、个人信息等部分,
其中个人工作台可以免登进入COP平台子应用中。支持UDC定制应用单独挂载到企微应用中心。
免登 应用发布成功后,支持企微客户端免登陆进入COP应用移动首页中。COP与企微手机号码不一致时,
用户需要自助绑定/解绑后才能实现免登。
组织同步 支持COP组织人员数据同步至企微通讯录中
事项同步 “微协同”发布至企微后,用户可以在企微查看、处理待办事项
消息同步 COP消息中心的消息将会同步展示在企微应用消息中

3、操作步骤

序号 步骤名称 责任方 描述
1 提供企业ID和企业名称 企微管理员 必须,企业唯一标识信息
2 企微新建应用 企微管理员 必须,承载COP应用
3 获取AgentId 企微管理员 必须,企微应用唯一标识
4 获取应用Secret 企微管理员 必须,
5 配置Nacos 致远 非必须,企微分为自建模式和待开发模式,本场景主要针对自建模式。
如果三方系统企微认证域名和企业工商认证一致则为自建模式。否则为待开发模式
6 移动插件-启用全局配置 致远 必须,启用微协同,配置租户服务器地址信息
7 移动插件-新建插件 致远 必须,承载COP与企微的关联关系
8 配置组织同步 致远 非必须,配置后COP组织人员数据会直接覆盖企微部门人员数据,请谨慎操作
9 后台配置用户映射 致远 非必须,如果COP与企微手机号一致,或者用户自助绑定解绑,则无需配置。
否则需要配置,建立COP与企微人员映射
10 获取待发布地址 致远 必须,COP生成企微应用首页
11 企微配置首页访问地址 致远 必须,企微应用首页为COP提供
12 企微配置信任域名 企微管理员 必须,企微安全要求
13 可信IP配置 企微管理员 必须,企微安全要求
14 申请域名校验 企微管理员 必须,企微安全要求
15 手机端企微工作台查看应用 用户 应用发布成功后,员工可以在在企微客户端-个人工作台查看COP应用
16 移动端自助绑定账号 用户 当COP手机号码与企微手机号码不一致时,需要用户自助绑定COP账号
17 事项接受 用户 进入微协同待办菜单,可以查看COP当前用户的所有待办事项
18 消息接受 用户 COP消息将以应用消息的形式推送给用户
19 移动端自助解绑 用户 用户更换账号时,需要手动解绑,重新绑定COP账号

4、集成配置步骤

4.1、获取企业ID

入口:企微后台管理页面-我的企业

1720575268811

4.2、企微新建应用

注意:新建应用后,需要获取一下三个字段:CorpID、AgentID、AgentSecret;

选择自建应用模式时执行此步骤

1720575275091

4.3、获取AgentId

1720575285218

4.4、获取应用Secret

注意:点击查看后,需要应用管理员登录企业微信,在通知消息中查看

1720575290593

4.5、配置Nacos

capability:
  workWx:
    accessMode: SELF_BUILT

4.6、移动插件-启用全局配置

入口:后台管理-移动管理-移动插件

1731647687272

移动插件默认“不启用”,通过开启【启用微协同】开关,可启用微协同。

协同服务器地址为当前租户环境的协同服务器地址。

开启接收通知、开启连接,并勾选许可协议、风险提示。

4.7、移动插件-新建插件

注意:致远COP平台与企业微信集成中,分为自建模式和待开发模式,本次解决方案采用自建模式

1720575475346

4.8、配置组织同步(可选)

注意:此模式下,企业微信部门、账号数据有V8OA门户自动同步,当V8OA门户部门、账号数据变更时,企业微信部门、账号数据同步变更;

1720575502820

4.9、后台配置用户映射(非必须)

注意:当V8OA门户和企业微信中的组织数据不是来源于同一个组织主数据系统,且相互间没有数据同步时,需要V8机构管理员在移动插件-企业微信-用户映射标签中选择映射类型(手机号码、个人邮箱、企业邮箱、用户名、用户Id、用户编码);

系统会根据所选映射类型与企业微信账号之间建立联系;

针对无法通过映射类型建立账号关系的特殊账号,平台支持手工配置映射;

1720575537725

4.10、获取待发布地址

1720575628695

4.11、企微配置首页访问地址

1720575358638

4.12、企微配置信任域名

1720575364769

4.13、可信IP配置【重重重】

1720575369762

4.14、 申请域名校验

1720575374310

1720575380255

4.15、手机端企微工作台查看应用

1720575386165

4.16、移动端自助绑定账号

注意:除上一步骤中需要后台配置映射关系场景外,平台支持用户在登录企业微信-微协同时,自助登录绑定映射关系;

1720575392977

4.17、事项接受

注意:登录微协同查看待办列表,点击任一列表可免登陆打开待办详情页;

1720575399055

4.18、消息接受

注意:借用企业微信应用消息通知模式,接受统一消息通知;

1720575405151

4.19、移动端自助解绑

1720575411866

5、注意事项

5.1、免登

如果COP手机号码与企微手机号码一致,则无需配置用户映射即可实现企微用户免登打开COP应用。

5.2、集成收费:

企微端要求按照服务商收取接口调用年费,大概没人每年3元;

5.3、IP受限:

需要在企微管理后台-应用管理,增加企业可信IP,且所有出口IP,都需要加上

1720575419151

5.4、消息接受域名配置

1720575426068

5.5、微协同可以登录,但是无法收到消息

大概率是2.12企微配置信任域名未配置,或者2.13可信IP配置未配置所有IP段

5.6、企微备案

由于企微升级,需要提供客户名称、企业ID(CorpID)、脱敏合同,申请备案,否则企微会不定期拒绝微协同访问;

5.7、兼容企微私有化

由于企微支持私有化部署,部署后服务地址信息回变更为本地地址,需要修改Nacos配置,

cip-connector微服务下Nacos配置,其中privatization为企微私有化标识,https://qyapi.weixin.qq.com为企微服务接口地址

seeyon.mobile.qywxFlag=privatization
seeyon.mobile.qywxUrl=https://qyapi.weixin.qq.com

5.6.2 - 钉钉

1、概述

平台提供可挂载到钉钉的移动办公应用(微协同),可实现待办事项查看处理、已办事项查看、事项详情页展示、个人工作台、通讯录、自助绑定/解绑、免登进入UDC定制应用等功能。

2、场景支持

场景 场景说明
应用上架/发布 支持COP平台以”微协同“应用挂载到钉钉上,包含事项中心、通讯录、个人工作台、个人信息等部分,
其中个人工作台可以免登进入COP平台子应用中。支持UDC定制应用单独挂载到钉钉应用中心。
免登 应用发布成功后,支持钉钉客户端免登陆进入COP应用移动首页中。COP平台与钉钉用户手机号码必须一致
组织同步 支持COP组织人员数据同步至钉钉通讯录中
事项同步 “微协同”发布至钉钉后,用户可以在钉钉查看、处理待办事项
消息同步 COP消息中心的消息将会同步展示在钉钉应用消息中

3、操作步骤

序号 步骤名称 责任方 描述
1 查看企业名称 钉钉管理员 必须,进入管理后台首页,获取企业名称
2 查看CorpId 钉钉管理员 必须,进入钉钉开放平台,查看CorpId
3 新建应用 钉钉管理员 必须,钉钉要新建应用,承载COP应用H5页面
4 获取应用APPKey、AppSecret、agentId 钉钉管理员 必须,COP与钉钉应用依靠这几个参数建立联系
5 接口授权 钉钉管理员 必须,未授权时,无法完成组织同步、免登、消息推送
6 新建移动插件 致远 必须,承载COP与钉钉的关联关系及场景配置
7 启用配置 致远 必须,启用后微协同才可以正常使用
8 新建钉钉移动插件 致远 必须,承载COP与钉钉的关联关系及场景配置
9 组织同步 致远 非必须,COP与钉钉间组织同步
10 用户映射 致远 非必须,钉钉需要接受COP消息时启用
11 应用发布/上架 致远 必须,发布后生成H5URL地址,才可以挂载到钉钉上
12 钉钉应用发布 钉钉管理员 必须,钉钉需要发布后,应用才可以正常使用
13 钉钉客户端进入应用 用户 必须,
14 消息查看 用户 非必须,

4、集成配置步骤

4.1、查看企业名称

1720576065362

4.2、查看CorpId

1720576071122

4.3、新建应用

1720576075665

1720576082841

1720576088842

1720576095554

4.4、获取应用APPKey、AppSecret、agentId

1720576100879

4.5、接口授权

1720576105690

1721272343553

4.6、新建移动插件

1720576109923

4.7、启用配置

1720576114387

4.8、新建钉钉移动插件

1720576119241

4.9、组织同步

1720576123385

1720576128857

1720576140121

1720576147413

1720576156603

4.10、用户映射

1720576161704

4.11、 应用发布/上架

1720576166316

1720576171456

1720576176243

1720576181119

4.12、钉钉应用发布

1720576186276

4.13、钉钉客户端进入应用

1720576191347

4.14、钉钉客户端接受消息

1720576196903

5、注意事项

钉钉开放平台:[https://open-dev.dingtalk.com/#/]()

钉钉管理后台:[https://oa.dingtalk.com/index.htm#/welcome]()

应用首页地址必须是相对地址:

1720576055497

5.6.3 - 飞书

1、概述

平台提供可挂载到飞书的移动办公应用(微协同),可实现待办事项查看处理、已办事项查看、事项详情页展示、个人工作台、通讯录、自助绑定/解绑、免登进入UDC定制应用等功能。

2、场景支持

场景 场景说明
应用上架/发布 支持COP平台以”微协同“应用挂载到飞书上,包含事项中心、通讯录、个人工作台、个人信息等部分,
其中个人工作台可以免登进入COP平台子应用中。支持UDC定制应用单独挂载到飞书应用中心。
免登 应用发布成功后,支持飞书客户端免登陆进入COP应用移动首页中。COP平台与飞书用户手机号码必须一致
组织同步 支持COP组织人员数据同步至飞书通讯录中
事项同步 “微协同”发布至飞书后,用户可以在飞书查看、处理待办事项
消息同步 COP消息中心的消息将会同步展示在飞书应用消息中

3、操作步骤

序号 步骤名称 责任方 描述
1 查看企业名称 飞书管理员 必须,进入管理后台首页,获取企业名称
2 查看企业编号 飞书管理员 必须,进入飞书开放平台,查看企业编号
3 新建应用 飞书管理员 必须,飞书要新建应用,承载COP应用H5页面
4 获取应用APPKey、AppSecret 飞书管理员 必须,COP与飞书应用依靠这几个参数建立联系
5 接口授权 飞书管理员 必须,未授权时,无法完成组织同步、免登、消息推送
6 新建移动插件 致远 必须,承载COP与飞书的关联关系及场景配置
7 启用配置 致远 必须,启用后微协同才可以正常使用
8 新建飞书移动插件 致远 必须,承载COP与飞书的关联关系及场景配置
9 组织同步 致远 非必须,COP与飞书间组织同步
10 用户映射 致远 非必须,飞书需要接受COP消息时启用
11 应用发布/上架 致远 必须,发布后生成H5URL地址,才可以挂载到飞书上
12 飞书应用发布 飞书管理员 必须,飞书需要发布后,应用才可以正常使用
13 飞书客户端进入应用 用户 必须,
14 消息查看 用户 非必须,

4、集成配置步骤

4.1、查看企业名称

1720576492399

4.2、查看企业编码

1720576497799

4.3、 新建应用

1720576502797

1720576508078

1720576513429

4.4、获取应用APPKey、AppSecret

1720576518034

4.5、接口授权

1720576522439

1720576527420

1720576532078

1720576537470

1720576542888

4.6、新建移动插件

1720576548027

4.7、启用配置

1720576552667

4.8、新建飞书移动插件

1720576557649

4.9、组织同步( 慎用,如果不需要千万不要配置

1720576562897

1720576570263

1720576602232

1720576606133

1720576611643

4.10、用户映射

1720576616605

1720576622275

4.11、应用发布/上架

1720576626940

1720576632150

1720576636799

1720576641723

1720576647035

1720576654257

4.12、飞书应用发布

1720576659427

1720576664611

1720576669113

1720576674184

4.13、飞书客户端进入应用

1720576678541

4.14、飞书客户端接受消息

1720576683316

5、注意事项

5.7 - 三方能力接入

提供开箱即用的、丰富的三方基础能力接入管理能力。

1、能力清单

序号 能力名称 能力描述 预置厂商 扩展厂商
1 短信 提供单条、批量发送短信能力,支持配置短信签名、短信模板,
满足短信消息、短信登录验证、下发验证码等使用场景
提供短信签名、模板、枚举项的管理维护接口,
属于发送短信的基础数据,可使用本组接口维护。
阿里云(SaaS)
腾讯云(SaaS)
华为云(SaaS)
2 邮件服务 基础邮件服务,提供邮件消息、邮箱登录、自定义邮件模板等能力 客户自建SMTP
3 在线文档 提供文档在线预览、在线编辑、在线转版、套红、
文字/图片水印等文档能力
金山中台(私有云)
永中(私有云)
ASPOSE
腾讯文档(SaaS)
联想文档(SaaS)
4 版式文档 提供针对OFD版式文件的预览能力 点聚(私有云)
金山中台(私有云)
金格(私有云)
联想(私有云)
永中(私有云)
5 智能文档 提供对各类文档的文档比对、文档抽取识别、
文档审核、表格解析等能力
达观(私有云)
方寸(私有云)
6 简历解析 提供对简历文件的内容解析抽取能力 穰川(???)
7 OCR识别 提供对身份证、银行卡、名片、营业执照等
规则图片的文本识别能力
百度云(SaaS)
腾讯云(SaaS)
8 视频会议 提供普通视频、会议室会议的创建、查询、取消能力,
支持获取会议录像、会议纪要
腾讯会议(SaaS)
华为云(SaaS)
瞩目(SaaS)
企业微信(SaaS)
9 商旅服务 针对企业差旅场景,提供差旅审批单同步、
机票预订、火车票购买、酒店预订、用车的能力
阿里商旅(SaaS) 携程(SaaS)
10 企业征信 提供企业基础工商信息、工商股东、融资信息、行政处罚、
产品信息、行政许可等企业征信信息查询能力
合合启信宝(SaaS)
11 发票服务 支持发票识别、发票验真,支持识别单张或多张票据
(如增值税专用发票、
增值税普通发票(卷式)、火车票,飞机票,汽车票等),
支持增值税发票的验真
大象慧云(SaaS)
百望云(SaaS)
百度云(SaaS)
慧财(SaaS)
12 物理印章 提供物理印章查询、用印申请、用印情况查询等能力 群杰(私有化)
13 电子签章 提供发起签署、签署区配置、在线签署、文档验签等能力,
支持电子签、手写签,
支持顺序签、无序签、或签,
解决传统签署成本高、效率低等问题
e签宝-天印(私有化)
14 翻译服务 提供中、英、法、德等常用的多国语言文本翻译能力,
支持语种识别
百度云(SaaS)
15 天气查询 提供全国各省市地区天气查询的能力 高德天气(SaaS) 百度天气(SaaS)
16 GIS服务 GIS专网地图服务,提供二三维一体化GIS数据和引擎服务,
应用于智慧城市、智慧农业、智慧交通等场景
上海测绘 左岸芯慧
17 地理位置 提供行政区划查询、地理编码查询、测距等地理位置能力 百度地图(SaaS) 高德地图(SaaS)
18 离线消息 提供离线消息发送能力 M5 华为
VIVO
魅族
OPPO
小米
苹果
19 AI 提供AI能力,支持AI应用接入创建,支持用量的查询 致慧泉(SaaS)
20 标签打印 纸质标签打印 智高(SaaS) 销邦(SaaS)
21 银企直连 提供对公付款、对私转账、银行流水查询、资金调服务。 中信银行前置机
22 人脸识别 提供人脸识别认证能力,可用于敏感数据查看、
操作前的人身核验。
旷视(SaaS) 百度(SaaS)
23 敏感词 提供内容审核能力、敏感词过滤 自研
24 在线支付 提供企业内对私收取能力 微信支付(SaaS)

5.8 - API服务集成

提供接口登记、数据直连、事件订阅等配置,可以将三方异构系统服务转换为符合AI-COP|V8规范的服务能力。

1、概述

提供接口登记、数据直连、事件订阅等配置,可以将三方异构系统服务转换为符合AI-COP|V8规范的服务能力。

2、能力清单

5.8.1 - 接口登记&应用

提供三方系统接口登记能力,可以将三方异构系统接口转为COP平台可以直接调用的自定义服务。

1、概述

提供三方系统接口登记能力,可以将三方异构系统接口转为COP平台可以直接调用的自定义服务。

2、操作步骤

序号 步骤名称 责任方 描述
1 查看企业名称 飞书管理员 必须,进入管理后台首页,获取企业名称

3、集成配置步骤

3.1、角色授权

3.1.1、角色分配

序号 菜单 权限 角色
1 集成平台-基础设置 查看、编辑 跟机构管理员/集成管理员
2 集成应用 查看、设计、发布 跟机构管理员/集成管理员+应用设计师
3 开放平台 查看、编辑 跟机构管理员/集成管理员
4 UDC定制应用 查看、设计、发布 应用设计师
5 BPM表单应用 查看、设计、流程设计、发布 应用设计师+流程设计师

3.2、获取接口文档

注意:接口文档应包含接口签名规范、请求地址、请求入参、入参示例、请求出参、出参示例等信息,

最好可以Postmen、APIPost、APIFox等SAAS接口调用示例,便于联调。

接口文档应提供必要的请求域名、秘钥等信息,最好区分测试环境和生产环境。

3.3、接口登记

3.3.1、新建应用参数(非必须)

1721294775195

1721294924320

1721294997753

3.3.2、新建集成应用

1721349017311
1721349017311

1721349142412

1721349247662

1721349315497

3.3.3、新建公共参数

1721349417993

1721349487804

1721349625769

3.3.4、新建接口鉴权

1721349808273

1721349907653

1721349957523

1721350153285

1721350488174

3.3.5、新建接口登记

1721350741267

1721351022292

1721350845277

1721350919028

3.3.6、在线调试

1721350948464

3.3.7、发布应用

1721352435158

3.4、UDC定制应用调用接口

3.4.1、新建UDC定制应用

1721352760598

3.4.1、依赖集成应用

1721352810448

3.4.1、新建微流程,依赖集成应用接口

1721352936946

1721353016749

3.4.1、查看日志

1721353099899

3.5、BPM流程节点调用接口

1721353308132

3.6、接口发布到开放平台

1721353450329

4、注意事项

5.9 - SPI扩展机制

1. 概述

当集成基础能力无法满足客户需求时,平台提供SPI扩展机制,用户可以在不影响上层使用的前提下,通过手写客开代码,实现统一身份认证、免登、单点登录、移动 App 接入、接口鉴权、基础能力厂商通道扩展等能力,解决个性化集成需求。

2. 能力架构

能力架构图

3. SPI 机制实现说明

3.1. spi jar 包项目开发并打包

下载帮助文档中对应功能 spi 示例的 demo 项目按需实现对应业务接口,并打包成 jar 包

  • spi 扩展 jar 包项目实现注意事项

img.png

  • 打包

1721907175054

3.2. 配置 jar 包动态加载必须的配置信息

将客开实现的 jar 包上传到私服或服务器本地, 配置到对应服务的配置中(nacos 或 yaml 文件) 配置完成后, 重启 spi jar包里实现的接口对应的项目即可

3.2.1 如果项目中配置了私服, 并通过私服管理扩展 jar 包的情况

验证 nacos 中 public 或项目中是否存在以下配置, 如果不存在则添加,如果存在则忽略

# public 配置确认
seeyon:
  # 开启 spi 动态扩展的私服配置, 用于从私服里拉取扩展 jar 包
  dynamic:
    loader:
      type: maven # 固定值
      maven:
        releaseUrl: release库地址
        snapshotUrl: snapshot库地址
        username: 账号
        password: 密码

对应项目中的 nacos 或 yaml 配置文件配置内容

# 对应服务配置
seeyon:
  spi:
    enable: true # 固定值 true
    spi-plugins:
      # 上传到私服里的扩展 jar 包的 GAV(groupId / artifactId / version)坐标。 maven: 开头
      # 固定格式 maven: 开头, 冒号后面没有空格, - 后面一个英文空格
      - maven:com.seeyon,xxx-xxx-xxx,x.y.z

注意:

spi-plugins的值:- maven:com.seeyon,xxx-xxx-xxx,x.y.z, 短横杠 后面 1 个英文空格, 前面 6 个英文空格

maven:xxx.xxx,xx-xx-xx,x.y.z 整体字符串中间 没有空格

所有缩进,以 两个英文空格 为标准, 不要使用 TAB 缩进

配置内容都是在 英文输入法 下配置,不要使用中文输入法

扩展 jar 包如果依赖外部 jar 包,也要将外部 jar 包对应的坐标配置到 seeyon.spi.spi-plugins

3.2.2 如果项目中未配置私服,通过服务器文件管理 jar 包的情况

对应服务 nacos 配置(Maven是有私服的,file是没有私服的)

# 对应服务配置
seeyon:
  spi:
    enable: true # 固定值 true
    spi-plugins:
      # 固定格式: file: 开头, 冒号后面没有空格, - 后面一个英文空格
      - file:/data/xxx/xxx.jar

注意:

  1. 两种配置根据项目情况取其一即可,jar包放到对应位置后,要确认jar包是否完整,对比下本地打的jar包大小,与服务器上的是否一致
  2. spi-plugins的值:- file:/data/xxx/xxx.jar, 短横杠 后面 1 个英文空格, 前面 6 个英文空格
  3. file:/data/xxx/xxx.jar 整体字符串中间 没有空格
  4. 所有缩进,以 两个英文空格 为标准, 不要使用 TAB 缩进
  5. 配置内容都是在 英文输入法 下配置,不要使用中文输入法
  6. 扩展 jar 包如果依赖外部 jar 包,也要将外部 jar 包对应的坐标配置到 seeyon.spi.spi-plugins

3.3. 视频讲解

4. xxxSpiUtil 工具类说明

工具类位于对应项目 api 包中的 util 下, 主要提供 spi 扩展 jar 包里的类的实例化获取, spring 管理的 bean的获取、调用、nacos或yaml中的配置信息获取功能

其中 ctp-user-api jar 包中还包含 request 对象的获取功能

4.1. 工具类介绍

以 ctp-user-api 中的 CtpUserSpiUtils 为例

@CtpUserComment("spi 扩展包工具类,可以获取 bean 的实例,通过配置 key 获取 nacos 或 yaml 配置内容等")
public class CtpUserSpiUtils {

    @CtpUserComment("获取指定类的单例实例")
    public static <T> T getInstance(Class<T> clazz) {
    }

    @CtpUserComment("获取获取被 spring 管理的指定类别的 Bean 对象")
    public static <T> T getBean(Class<T> clazz) {
    }

    @CtpUserComment("获取指定名称和类型的 Bean 对象, 获取被 spring 管理的 bean 的对象")
    public static <T> T getBean(String beanName, Class<T> requiredType) {
    }

    @CtpUserComment("调用指定 Bean 的指定方法并返回结果, beanName 是主服务中的 bean,jar 包中想用时可以通过此方法调用")
    public static <T> T invokeBean(String beanName, String methodName, Object... params) {
    }

    @CtpUserComment("通过 key 获取属性配置值, 属性配置可以是 yaml 文件也可以是 nacos 配置")
    public static String getPropertyByName(String key) {
    }

    @CtpUserComment("获取 request 对象")
    public static HttpServletRequest getRequest() {
    }
}    

方法说明:

  • getInstance(): 获取 spi jar包内的类的实例, 使用单例模式,保证每个类只被实例化一次。 注: 不会获取到 Spring 管理的 bean 的实例
  • getBean(): 获取 spring 管理的 bean 的实例, 注: 不会获取到 spi jar包内的类的实例
  • invokeBean(): 调用 spring 管理的 bean 的方法
  • getPropertyByName(): 获取 nacos 或 yaml 配置文件中的配置信息
  • getRequest(): http 的 request 对象

5. 注意事项

5.1. 配置完spi jar包重启项目失败

排查:日志搜索SPIJar || 动态加载spi的插件 查看原因

tail -n 10000  xxx-info.log | grep -C 50 '日志搜索SPIJar'

1720668371813

5.2. 配置信息不对(配置格式层级不对)

举例如下

1720668395517

根据实际上传的版本来,比如此例中应该是

1720668448122

5.3. 配置中含有中文的空格,字符导致

字符-及后面的空格等全部要求是英文才可以,配置手写重新敲一遍配置

1720668462281

6、能力清单

5.9.1 - 统一身份认证

支持通过SPI扩展机制,接入三方统一身份认证系统。

1. 概述

使用三方认证中心进行统一身份认证, 在登录 v8 系统时, 会先跳转到三方认证中心进行登录, 三方认证中心登录成功后, 重定向 v8 目标地址,完成系统登录过程。

img.png

img.png

img.png

2. spi 接入导图

统一身份认证时序图

1721720315930

1721720315930

3. 接入步骤

3.1. demo工程下载

注意:使用前请依赖平台 ctp-user-api 对应的版本进行扩展开发

cip-spi-user-sso-thirdauth.zip

3.2. 配置与使用

3.2.1. 重定向到 v8 系统的域名配置

主要配置认证中心授信信息, 如 clientId, clientSecret 等。

注意:以下配置需要在public下,其中dev.seeyonv8.com为V8平台域名,使用时请更换为对应环境域名或ip端口 yaml 格式配置:

seeyon:
  system:
    domain: dev.seeyonv8.com

properties 格式配置

seeyon.system.domain=dev.seeyonv8.com

3.2.2. 重要:开启三方认证中心开关

在ctp-user微服务下

yaml 格式配置:

开起spi认证,其中spisso为固定值

seeyon:
  user:
    authenticationType: spisso

认证类型配置,其中thirdauth为spi扩展的认证类型,对应spi代码中的类型,例如:maxkey、zhuyun等

seeyon:
  spisso:
    ssoType: thirdauth

配置与三方认证中心的授信信息

seeyon:
  thirdauth:
    clientId: xxx
    clientSecret: xxx

properties 格式配置 开起spi认证

seeyon.user.authenticationType=spisso

认证类型配置

seeyon.spisso.ssoType=thirdauth

认证配置

seeyon.thirdauth.clientId=xxx
seeyon.thirdauth.clientSecret=xxx

3.3. spi jar 打包并部署

参考 SPI扩展

配置完成后, 重启 ctp-user 服务

3.4. 测试方式

说明:免登地址拼接规则:

工程开发完成并发布后,在URL中输入【服务域名】/main/portal,点击回车/访问后,浏览器自动重定向到统一身份认证中心认证页,输入认证中心账号密码后,成功进入V8平台首页,则标识工程正确,且连接无误。

3.5. 异常跟踪

1721904733313

3.6. 内容校验

浏览器地址输入:<domain>/service/ctp-user/api/sso-config

1722921841278

1722921854925

确认内容

jar 包里的 clientId 与 ctp-user 里的关键配置是否一致

如何使用私服仓库, 确认仓库地址、账号密码是否配置

确认登录成功后的重定向域名是否正确

spi 是否配置成功

spi jar里的 spring.factories 配置是否正确

4. 工程核心接口说明

4.1. 登录

说明:URL输入【V8首页地址】,或者三方门户点击进入【V8首页地址】时,网关拦截跳转到三方统一身份认证页,

如果未登录则使用账号密码登录,成功登录后跳转到【V8首页地址】,并携带授权code;

如果已经登陆,无需输入账号密码,成功登录后跳转到【V8首页地址】,并携带授权code;

后台解析授权code,换取用户信息,V8登录成功。

【V8首页地址】可以是V8任何一个页面,除了登录页“/login”。

/**
 * 三方认证 sso 登录地址
 *
 * @param request
 * @param encodeRedirectUrl url encode 后的重定向地址,三方认证登录成功后的跳转地址
 *                          encodeRedirectUrl: http://dev.seeeyon.com/thirdauth-login/aaa?url=/main/protal
 * @return 三方认证中心登录地址
 */
@Override
public String getSsoLoginUrl(HttpServletRequest request, String encodeRedirectUrl) {
    String thirdLoginUrl = "http://xxx.sso.com/login?redirectUrl=" + encodeRedirectUrl;
    log.info("跳转到三方认证中心地址:{}", thirdLoginUrl);
    return thirdLoginUrl;
}



/**
 * 从三方认证接口中获取用户信息
 *
 * @param request
 * @param encodeRedirectUrl url encode 后的重定向地址,三方认证登录成功后的跳转地址
 * @return CtpUserSpiLoginUserInfoDto 三方用户信息 DTO
 * @throws CtpUserSpiSsoException 三方认证登录失败时, 由 v8 自定义页面显示的异常信息
 */
@Override
public CtpUserSpiLoginUserInfoDto getUserLoginInfo(HttpServletRequest request, String encodeRedirectUrl) throws CtpUserSpiSsoException {
    // 通过配置拿到三方 clientId
    String clientId = ThirdauthSsoAuthConstants.NACOS_CLIENT_ID;
    // 调用内部方法进行逻辑处理
    thirdauthSsoAuthHandler.test();
    // 调用三方认证接口,获取用户信息
    // 获取三方认证中心登录后,追加的 code 的值
    String code = request.getParameter(getRequestParaKey());
    // 通过 code 获取 token
    // eg. String token = getTokenByCode(code);
    // 通过 token 获取用户登录名
    // eg. String loginName = getLoginNameByToken(token);

    // // [按需实现] 如果需要缓存三方认证中心的 token,则需要封装下面对象
    // CtpUserSpiThirdTokenDto ctpUserSpiThirdTokenDto = CtpUserSpiThirdTokenDto.builder()
    //         .thirdToken("123456") // 三方认证中心的 token
    //         .expired(3600L) // 过期时间_秒 可空,如果为空则默认 7 天
    //         .extData(new HashMap<>()) // [按需实现] 扩展参数, 下面刷新三方 token 方法 refreshThirdauthTokenByConfig 中的 thirdauthTokenConfigMap 会将这个扩展参数传入
    //         .build();

    return CtpUserSpiLoginUserInfoDto.builder()
            // 用于登录的用户信息, 下面五个参数只选择一下赋值即可, 赋值的参数的值要与 v8系统中的对应的值一致
            .thirdLoginName("zhangsan")
            // .thirdUserId("123456")
            // .thirdMobile("13900000001")
            // .thirdUserEmail("abc@abc.com")
            // .thirdUserCode("usercode")
            //用于登录的用户信息, 上面五个参数只选择一下赋值即可

            // 如果用户有租户条件
            // .tenantType("code").tenantData(tenantCode) // or .tenantType("id").tenantData("-1")

            // .thirdUserInfoJson("{\"name\":\"张三\"}") // [按需实现] 待缓存的三方用户信息, 下面登录方法 thirdauthSsoLogout 中将这个参数传入
            // .ctpUserSpiThirdTokenDto(ctpUserSpiThirdTokenDto) // 如果需要缓存并刷新三方 token 信息,则封装这个参数
            .build();
}

4.2. 三方认证Token持久化

说明:登录成功后,V8按需将三方持久化授权token写入根域名cookie中。

/**
 * [按需实现] 三方认证中心 token 中否保存到 cookie中,如果需要, 则返回 cookie 的 key
 *
 * @return 保存三方 token 的 cookie 的 key 的值
 */
@Override
public String get4aTokenKey() {
    return "4a-token";
}

4.3. 短连接

说明:三方认证成功后,重定向地址太长时使用短连接解决,支持两种模式:

1、紧凑模式:【V8访问域名】/oauth/home/sl/abc;

2、拼接模式:【V8访问域名】/oauth/home?mappingId=abc

/**
 * [按需实现] 登录三方成功后的重定向地址是否使用短链接, 如果不需要使用短链接,不用实现或直接返回 null
 *
 * @return ShortLinkModeEnum 短链接模式<br/>
 * ShortLinkModeEnum#COMPACT_MODE: 紧凑模式, eg: domain/path/sl/xxx。<br/>
 * ShortLinkModeEnum#SPLICING_MODE: 拼接模式, eg: domain/path?mappingId=xxx
 * 如果为 null,则不使用短链接
 */
@Override
public ShortLinkModeEnum shortLinkMode() {
    return null;
}

4.4. Token同步刷新

说明:随V8 用户认证token刷新动作,按需同步刷新三方持久化授权token三方Token。

/**
 * [按需实现] 刷新三方认证中心的 token
 *
 * @param thirdToken          三方认证中心 token
 * @param thirdTokenConfigMap 三方认证中心 token 配置
 * @return CtpUserSpiThirdTokenDto 三方认证中心 token DTO 包含 token 信息和过期时间
 */
@Override
public CtpUserSpiThirdTokenDto refreshThirdTokenByConfig(String thirdToken, Map<String, Object> thirdTokenConfigMap) {
    return null;
}

4.5. 退出

说明:v8用户Token单独失效退出(通过API退出), 三方Token单独失效退出(通过API退出,页面重定向退出)

支持两个Token同步失效退出

/**
 * [按需实现] 三方登出重定向地址, 三方认证中心可通过此地址进行用户登录操作,如果没有此接口,则不用实现
 *
 * @return url encode 后的登出后的重定向地址
 */
@Override
public String getEncodeLogoutRedirectUrl() {
    return null;
}

/**
 * [按需实现] 三方登出后台逻辑
 *
 * @param request
 * @param thirdUserInfoJson
 */
@Override
public void thirdSsoLogout(HttpServletRequest request, String thirdUserInfoJson) {
    
}

4.6. 用户登录报错时,跳转到自定义错误页

说明:免登失败时,自动跳转到自定义错误页,支持自定义错误信息可视

1721627287151

4.7. Nacos配置定义、获取值

说明:例如应用ID、秘钥、访问地址等跨环境需要变更参数,可以在nacos配置文件中维护

nacos位置:ctp-user

nacos参数值获取:需要通过工具类获取

String clientId = CtpUserSpiUtils.getPropertyByName("seeyon.thirdauth.clientId");
String clientSecret = CtpUserSpiUtils.getPropertyByName("seeyon.thirdauth.clientSecret");

5. 注意事项


5.9.2 - 免登-中间页模式

支持三方异构系统免登进入COP平台SPI扩展能力。不支持免登地址中携带自定义参数

1. 概述

三方异构系统通过中间页免登地址(地址中包含 v8 目标地址, 用户信息对应的随机值 code)

登录的 v8 目标地址: 中间页免登地址中的 v8 目标地址

登录的 v8 系统的用户信息: 通过 中间页免登地址中的用户随机值 code 查询到的用户信息, 同时 v8 系统中也要存在的用户

2. 接入导图

说明:有三方系统免登进入V8

1720767916820

3. 接入步骤

3.1. 工程下载

cip-spi-user-avoid-thirdavoid.zip

3.2. Nacos配置【按需】

注意:需要再ctp-user微服务下 yaml 格式配置:

seeyon:
  thirdauth:
    clientId: xxx
    clientSecret: xxx

properties 格式配置

seeyon.thirdauth.clientId=xxx
seeyon.thirdauth.clientSecret=xxx

3.3. 工程开发

开发过程请参考【场景/方法说明】

3.4. spi jar 打包并部署

参考 SPI扩展

配置完成后, 重启 ctp-user 服务

3.5. 测试方式

说明:免登地址拼接规则:

/oauth/home
?mobile=%2Fmain-mobile%2Fportal # url encode 后重定向地址
&web=%2Fmain%2Fportal # url encode 后重定向地址
&businessType=outsider # 固定值
&type=thirdavoid # 约定的唯一类型
&dynamicField=code # 追加的 code 的 key 的值,如追加 code 这里为 code, 追加 ticket 这里值为 ticket
&code=2403832009216967675 # 三方追加的值

3.6. 内容校验

浏览器地址输入:<domain>/service/ctp-user/api/sso-config

1722921937706

通过免登地址,登录 A 账号查看待办, 后, 再打开 B 账号的待办, 不会切换账号 端: web 解决方法: ctp-user nacos配置

yaml 格式配置:

seeyon:
  avoid:
    clearCookieTypes:
      - cscc # 类型1
      - pccscc # 类型2

properties 格式配置:

seeyon.avoid.clearCookieTypes[0]=cscc
seeyon.avoid.clearCookieTypes[1]=pccscc

4. 场景/方法说明

4.1. 从免登地址中获取信息(Request)

说明:上游系统在URL请求时,携带授权信息/加密用户信息,COP平台拦截信息并模拟登陆场景。

免登地址拼接规则:

免登地址实例:

/oauth/home
?mobile=%2Fmain-mobile%2Fportal # url encode 后重定向地址
&web=%2Fmain%2Fportal # url encode 后重定向地址
&businessType=outsider # 固定值
&type=thirdavoid # 约定的唯一类型
&dynamicField=code # 追加的 code 的 key 的值,如追加 code 这里为 code, 追加 ticket 这里值为 ticket
&code=2403832009216967675 # 三方追加的值
/**
 * 从请求中提取参数并获取用户信息
 *
 * @param code    三方追加的 code 的值
 * @param extData 三方追加的扩展参数
 * @return 用户属性信息
 */
@Override
public CtpAvoidLoginUserInfoDto getUserInfo(String code, Map<String, String> extData) {
    log.info("从请求中提取参数并获取用户信息, code:{}", code);
    // 调用内部方法进行逻辑处理
    thirdavoidSsoHandler.test();
    // [按需实现] 获取 request 对象
    HttpServletRequest request = CtpUserSpiUtils.getRequest();
    // 从 request 中获取想要的参数
    request.getParameter("xxx");
    // 通过 code 获取 token
    // eg. String token = getTokenByCode(code);
    // 通过 token 获取用户登录名
    // eg. String loginName = getLoginNameByToken(token);

    //  // [按需实现] 免登成功后重定向地址, 如果不配置, 则默认跳转至打开免登时的目标地址
    // CtpUserSpiRedirectUrlDto ctpUserSpiRedirectUrlDto = CtpUserSpiRedirectUrlDto.builder()
    //       .webRedirectUrl("/main/portal") // web 重定向地址
    //       .mobileRedirectUrl("/main-mobile/portal") // mobile 重定向地址
    //       .build();

    // // [按需实现] 缓存免登后保存的三方 token
    // CtpUserSpiThirdTokenDto ctpUserSpiThirdTokenDto = CtpUserSpiThirdTokenDto.builder()
    //         .thirdToken("xxx") // 待缓存的三方 token
    //         .expired(null) // 过期时间_秒
    //         .extData(new HashMap<>()) // 扩展参数
    //         .build();

    // 返回用户信息、等缓存的三方认证 token、重定向地址
    return CtpAvoidLoginUserInfoDto.builder()
            // 用于登录的用户信息, 下面五个参数只选择一下赋值即可, 赋值的参数的值要与 v8系统中的对应的值一致
            .thirdLoginName("zhangsan")
            // .thirdUserId("123456")
            // .thirdMobile("13900000001")
            // .thirdUserEmail("abc@abc.com")
            // .thirdUserCode("usercode")
            //用于登录的用户信息, 上面五个参数只选择一下赋值即可

            // [按需实现] 登录用户的租户信息
            //.tenantType() // 租户数据类型:code / id
            //.tenantData() // 与 tenantType 对应, 租户信息的值

            // // [按需实现] 待缓存免登后保存的三方 token
            // .ctpUserSpiThirdTokenDto(ctpUserSpiThirdTokenDto) // 三方认证 token

            // [按需实现] 免登成功后重定向地址
            //.ctpUserSpiRedirectUrlDto(ctpUserSpiRedirectUrlDto); // 免登成功后重定向地址
            .build();
}

注: 不支持获取自定义追加的参数, 除了通过 dynamicField 定义人参数 key 外, 其它追加的参数无法获取

4.2. 三方认证Token持久化

说明:三方授权Token需要COP平台负责持久化存储,包含写入根域名、写入缓存、写入Redis等场景。

// // [按需实现] 缓存免登后保存的三方 token
// CtpUserSpiThirdTokenDto ctpUserSpiThirdTokenDto = CtpUserSpiThirdTokenDto.builder()
//         .thirdToken("xxx") // 待缓存的三方 token
//         .expired(null) // 过期时间_秒
//         .extData(new HashMap<>()) // 扩展参数
//         .build();

4.3. 三方Token自动刷新(定时)

说明:三方授权Token定时失效,需要定时使用原始Token换取新的Token场景。

/**
 * 刷新三方 token
 *
 * @param thirdTokenDto 三方 token 信息
 * @return 三方 token 保存 DTO
 */
@Override
public CtpUserSpiThirdTokenDto doRefreshToken(ThirdTokenDto thirdTokenDto) {
    return CtpAvoidLoginMiddlePageProviderService.super.doRefreshToken(thirdTokenDto);
}

4.4. 自定义5元素用户标识

说明:三方异构系统用户匹配COP平台用户,支持手机号码、邮箱、登录名、用户编码、UserID任一字段值匹配免登。

// 返回用户信息、等缓存的三方认证 token、重定向地址
return CtpAvoidLoginUserInfoDto.builder()
// 用于登录的用户信息, 下面五个参数只选择一下赋值即可, 赋值的参数的值要与 v8系统中的对应的值一致
        .

thirdLoginName("zhangsan")
// .thirdUserId("123456")
// .thirdMobile("13900000001")
// .thirdUserEmail("abc@abc.com")
// .thirdUserCode("usercode")
//用于登录的用户信息, 上面五个参数只选择一下赋值即可

// [按需实现] 登录用户的租户信息
//.tenantType() // 租户数据类型:code / id
//.tenantData() // 与 tenantType 对应, 租户信息的值

// // [按需实现] 待缓存免登后保存的三方 token
// .ctpUserSpiThirdTokenDto(ctpUserSpiThirdTokenDto) // 三方认证 token

// [按需实现] 免登成功后重定向地址
//.ctpUserSpiRedirectUrlDto(ctpUserSpiRedirectUrlDto); // 免登成功后重定向地址
        .

build();

4.5. Nacos配置定义、获取值

说明:例如应用ID、秘钥、访问地址等跨环境需要变更参数,可以在nacos配置文件中维护

nacos位置:ctp-user

nacos参数值获取:需要通过工具类获取

CtpUserSpiUtils.getProperjavatyByName("seeyon.thirdavoid.clientId");

4.6. 日志查询

ctp-user.info 日志下, 搜索关键字 third dto, 通过入口查询该次请求的 traceId, 再根据 traceId 查询整个链路处理情况

5. 注意事项


5.9.3 - 免登-中间页扩展模式

支持三方异构系统免登进入COP平台SPI扩展能力。支持免登地址中携带自定义参数

1. 概述

三方异构系统通过中间页免登地址(地址中包含 v8 目标地址, 用户信息对应的随机值 code, 以及自定义参数)

登录的 v8 目标地址: 中间页免登地址中的 v8 目标地址

登录的 v8 系统的用户信息: 通过 中间页免登地址中的用户随机值 code 查询到的用户信息, 同时 v8 系统中也要存在的用户

2. 接入导图

说明:有三方系统免登进入V8

1720767916820

3. 接入步骤

3.1. Nacos配置【按需】

注意:需要再ctp-user微服务下 yaml 格式配置:

seeyon:
  thirdauth:
    clientId: xxx
    clientSecret: xxx

properties 格式配置

seeyon.thirdauth.clientId=xxx
seeyon.thirdauth.clientSecret=xxx

3.3. 工程开发

开发过程请参考【场景/方法说明】

3.4. spi jar 打包并部署

参考 SPI扩展

配置完成后, 重启 ctp-user 服务

3.5. 测试方式

说明:免登地址拼接规则:

/oauth/avoid
?sydata={"c": "thirdavoid","w":"/main/portal","m":"/main-mobile/portal"} # 固定格式。 c的值:约定的唯一类型, w:web端重定向地址,m:手机端重定向地址
&a=a # 自定义参数 a
&b=b # 自定义参数 a
&... # 自定义参数... 随意增加, 最大不超过100个

3.6. 强制重新登录配置

通过免登地址,登录 A 账号查看待办, 后, 再打开 B 账号的待办, 默认不会切换账号, 可以通过下面配置, 强制重新登录。

解决方法: ctp-user nacos配置

yaml 格式配置:

seeyon:
  avoid:
    clearCookieTypes:
      - cscc # 类型1
      - pccscc # 类型2

properties 格式配置:

seeyon.avoid.clearCookieTypes[0]=cscc
seeyon.avoid.clearCookieTypes[1]=pccscc

4. 场景/方法说明

4.1. 从免登地址中获取信息(Request)

说明:上游系统在URL请求时,携带授权信息/加密用户信息,COP平台拦截信息并模拟登陆场景。


@Override
public CtpAvoidLoginUserInfoDto getUserInfo(CtpUserSpiAvoidLoginClientModeDto avoidLoginClientModeDto) {
    // 所有 url 中追加的自定义参数, 都可以通过 extData 里获取
    Map<String, String> extData = avoidLoginClientModeDto.getExtData();
    

    // 通过 code 获取 token
    // eg. String token = getTokenByCode(code);
    // 通过 token 获取用户登录名
    // eg. String loginName = getLoginNameByToken(token);

    //  // [按需实现] 免登成功后重定向地址, 如果不配置, 则默认跳转至打开免登时的目标地址
    // CtpUserSpiRedirectUrlDto ctpUserSpiRedirectUrlDto = CtpUserSpiRedirectUrlDto.builder()
    //       .webRedirectUrl("/main/portal") // web 重定向地址
    //       .mobileRedirectUrl("/main-mobile/portal") // mobile 重定向地址
    //       .build();

    // // [按需实现] 缓存免登后保存的三方 token
    // CtpUserSpiThirdTokenDto ctpUserSpiThirdTokenDto = CtpUserSpiThirdTokenDto.builder()
    //         .thirdToken("xxx") // 待缓存的三方 token
    //         .expired(null) // 过期时间_秒
    //         .extData(new HashMap<>()) // 扩展参数
    //         .build();

    // 返回用户信息、等缓存的三方认证 token、重定向地址
    return CtpAvoidLoginUserInfoDto.builder()
            // 用于登录的用户信息, 下面五个参数只选择一下赋值即可, 赋值的参数的值要与 v8系统中的对应的值一致
            .thirdLoginName("zhangsan")
            // .thirdUserId("123456")
            // .thirdMobile("13900000001")
            // .thirdUserEmail("abc@abc.com")
            // .thirdUserCode("usercode")
            //用于登录的用户信息, 上面五个参数只选择一下赋值即可

            // [按需实现] 登录用户的租户信息
            //.tenantType() // 租户数据类型:code / id
            //.tenantData() // 与 tenantType 对应, 租户信息的值

            // // [按需实现] 待缓存免登后保存的三方 token
            // .ctpUserSpiThirdTokenDto(ctpUserSpiThirdTokenDto) // 三方认证 token

            // [按需实现] 免登成功后重定向地址
            //.ctpUserSpiRedirectUrlDto(ctpUserSpiRedirectUrlDto); // 免登成功后重定向地址
            .build();
}

4.5. Nacos配置定义、获取值

说明:例如应用ID、秘钥、访问地址等跨环境需要变更参数,可以在nacos配置文件中维护

nacos位置:ctp-user

nacos参数值获取:需要通过工具类获取

CtpUserSpiUtils.getProperjavatyByName("seeyon.thirdavoid.clientId");

5. 注意事项


5.9.4 - 单点登录

支持通过SPI扩展机制,扩展集成应用免登中的单点登录模式。

1、概述

单点登录场景:

  1. 点击V8菜单跳转三方系统。
  2. 点击三方栏目更多跳转三方系统。
  3. 点击通过集成应用同步过来的三方系统待办、消息,跳转至三方系统。

2、接入导图

1721721091281

3、接入步骤

3.1、demo工程下载

cip-connector-sso-template.zip

    <parent>
        <groupId>com.seeyon</groupId>
        <artifactId>boot</artifactId>
        <version>3.10.1</version>
    </parent>
    <properties>
        <platform.version>3.10.1</platform.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.seeyon</groupId>
            <artifactId>cip-connector-api</artifactId>
            <version>${platform.version}</version>
        </dependency>
    </dependencies>

3.2. spi jar 打包并部署

参考 SPI扩展

注意:请在cip-connector微服务nacos配置文件中配置参数

上传完后需要重启cip-connector完成动态加载

3.3、工程开发

注意:每个项目下载工程并开发时,请优先修改工程名称,工程名遵守 cip-connector-auth-项目标识

开发过程请参考【场景/方法说明】

4、工程核心接口说明

4.1、定义单点登录英文表示

注意:该名称不能与其他名称重复,否则不会载入

/**
     * 获取名称
     * 需要保证名称唯一,名称+SecurityService 为当前类名称
     * @return
     */
    String getName();

4.2、定义单点登录中文描述

 /**
     * 获取描述
     * @return
     */
    String getTypeCaption();

4.3、定义前端可视化配置参数

 /**
 * 获取页面json语句
 * @return
 */
 String getPageJson();

4.3.1、字段说明:

{
    "caption": "标准认证-CAS", //单点登录类型(下拉框名称)(select的中文值)
    "type": "cas", //单点登录类型(下拉框值)(select对应的英文key)
    "extensionProperties": //扩展参数
    [
        {
            "colProps": //栅格化布局
            {
                "span": 12 //栅格化布局值
            },
            "componentType": "Input", //antd组件<br />标签名称 
            "componentProps": //扩展属性
            {
                "placeholder": "请输入" //select的placeholder提示
            },
            "validateFirst": true,
            "rules": // 校验规则,<br/>参考antd表单的rules
            [
                {
                    "required": true,
                    "message": "请输入跳转地址"
                },
                {
                    "pattern": "^[^\\s]*$",
                    "message": "禁止输入空格"
                },
                {
                    "type": "string",
                    "max": 255,
                    "message": "最多255个字符"
                }
            ],
            "caption": "跳转地址", // 自定义名称 
            "defaultValue": "", //默认值,非必填
            "name": "defaultJumpUrl"
        }
    ]
}

4.3.3、效果实例:

1724307195093

4.4、根据原始请求地址拼接单点登录地址

/**
     * 登录
     * @param url 外部想跳转到的地址
     * @param json 页面传递的数据
     * @param userMap 用户信息map
     * @param clientType 跳转类型(pc,移动)
     */
    String login(String url, String json, Map<String,Object> userMap, SsoClientTypeEnum clientType
, Map<String, Object> extendParams
);

入参说明:

  • url: 外部传过来的想要跳转的特定地址

  • json: 前端页面配置的参数

  • userMap: 用户映射信息和用户映射自定义配置的参数

    • innerUserId: 内部用户ID
    • innerUserName: 内部用户名称
    • innerUserCODE: 内部用户编号
    • outerUser: 外部用户账户
    • outerUserId: 外部用户ID
    • innerUserLoginName: 内部用户登录名
    • innerUserEmail: 内部用户邮箱
    • innerUserPhone: 内部用户手机号
    • innerUserOfficeNumber: 内部用户办公电话
    • innerUserBankAccount: 内部用户银行账户
    • innerUserOrgId: 内部用户组织编号
  • clientType: 类型(pc,phone)

  • extendParams: 外部传递过来的扩展参数

    注意:按照3.3配置完成后,json获取的数据结构示例为:

  • {
      "type": "xdHr",
      "loginType": "PERSON_ID",
      "account": "admin",
      "password": "123456",
      "ssoUrl": "http://www.login.com",
      "defaultJumpUrl": "http://www.jump.com"
    }
    

5、注意事项


5.9.5 - 移动插件

支持通过SPI扩展机制,扩展移动插件(移动管理-移动插件)。

1、概述

移动插件场景 1.V8应用接入三方APP工作台中,例如企业微信、钉钉、飞书等。

mobile1
2.点击工作台应用图标免登进入V8应用。 3.V8产生的消息推送至三方APP。 4.V8组织人员信息同步至三方APP(可选)。

2、接入导图

mobile2

3、接入步骤

3.1、demo工程下载

cip-spi-mobile-demo.zip

    <parent>
        <groupId>com.seeyon</groupId>
        <artifactId>boot</artifactId>
        <version>3.10.1</version>
    </parent>
    <properties>
        <platform.version>3.10.1</platform.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.seeyon</groupId>
            <artifactId>cip-connector-api</artifactId>
            <version>${platform.version}</version>
        </dependency>
    </dependencies>

3.2. spi jar 打包并部署

参考 SPI扩展

注意:请在cip-connector微服务nacos配置文件中配置参数

上传完后需要重启cip-connector完成动态加载

3.3、工程开发

注意:每个项目下载工程并开发时,请优先修改工程名称,工程名遵守 cip-mobile-plugin-项目标识

开发过程请参考【场景/方法说明】

4、工程核心接口说明

1.必要条件,修改自定义类型

mobile5

5、注意事项

mobile3

mobile4


5.9.6 - 接口鉴权

支持通过SPI扩展机制,扩展集成应用接口中的接口鉴权模式(集成应用-接口-安全认证)。

1、概述

接口鉴权场景: 集成应用中调用的三方接口需要前置认证的情况,例如先调用认证接口token,调用其他业务接口时,讲token放到请求头中。

2、接入导图

3、接入步骤

3.1、Demo工程下载

cip-connector-auth-template.zip

注意事项: 1.pom中的版本号要与项目当前版本保持一致,分别为boot版本、cip-connector-api版本

    <parent>
        <groupId>com.seeyon</groupId>
        <artifactId>boot</artifactId>
        <version>3.10.1</version>
    </parent>
    <properties>
        <platform.version>3.10.1</platform.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.seeyon</groupId>
            <artifactId>cip-connector-api</artifactId>
            <version>${platform.version}</version>
        </dependency>
    </dependencies>

3.2. spi jar 打包并部署

参考 SPI扩展

上传完后需要重启cip-connector完成动态加载

3.3、工程开发

注意:每个项目下载工程并开发时,请优先修改工程名称,工程名遵守 cip-connector-auth-项目标识

4、工程核心接口说明

    /**
     * 认证请求(核心)
     * @param authenticationDto 安全数据
     * authId: 该安全认证在数据库中id
     * detailId: 动作id,外部正在执行的动作id
     * json: 页面配置动态数据,自行转换对应dto或者map
     * params: 请求参数
     * user: 当前登录人用户信息(包含用户映射配置信息)
         * innerUserId: 内部用户ID
         * innerUserName: 内部用户名称
         * innerUserCODE: 内部用户编号
         * outerUser: 外部用户账户
         * outerUserId: 外部用户ID
         * innerUserLoginName: 内部用户登录名
         * innerUserEmail: 内部用户邮箱
         * innerUserPhone: 内部用户手机号
         * innerUserOfficeNumber: 内部用户办公电话
         * innerUserBankAccount: 内部用户银行账户
         * innerUserOrgId: 内部用户组织编号
     * @return 请求map  <位置-->Map<key,value>> 位置:header query body
     * 如:  {"body":{"token":"123"}}
     */
    @Override
    public Map<String, Object> doAuthentication(AuthenticationDto authenticationDto) throws Exception {
        // 转换页面动态配置信息为dto
        AuthDto authDto = JsonUtils.fromJson(authenticationDto.getJson(), AuthDto.class);
        AuthenticationUserDto user = authenticationDto.getUser();
        JsonDto jsonDto = new JsonDto();
        String username = null;
        if(user.getUserMap().get(authDto.getUsernameParam()) == null){
            throw new BusinessException("安全登录:用户名为空");
        }else {
            username = user.getUserMap().get(authDto.getUsernameParam()).toString();
            jsonDto.setXxx3(username);
        }
        if(user.getUserMap().get(authDto.getPasswordParam()) == null){
            throw new BusinessException("安全登录:密码为空");
        }else {
            jsonDto.setXxx4( MD5Utils.md5(user.getUserMap().get(authDto.getPasswordParam()).toString()).toLowerCase(Locale.ROOT));
        }
        String json = JsonUtils.toJson(jsonDto);
        String base64 = Base64.getEncoder().encodeToString(json.getBytes(StandardCharsets.UTF_8));
        log.info("安全登录,请求参数加密前:{}",json);
        log.info("安全登录,请求参数加密后:{}",base64);
        HttpResult httpResult = HttpClientUtil.sendPost(authDto.getTokenUrl(), base64);
        if(httpResult.getStatusCode()!= 200){
            throw new BusinessException("安全登录,请求返回结果码:{}", String.valueOf(httpResult.getStatusCode()));
        }
        log.info("安全登录,请求返回结果:{}",httpResult.getResult());
        AuthTokenResponse authTokenResponse = JsonUtils.fromJson(httpResult.getResult(), AuthTokenResponse.class);
        
        HashMap<String, Object> map = new HashMap<>();
        map.put("user",username);
        map.put("token", authTokenResponse.getToken());
        if("param".equals(authDto.getParameterLocation())){
            map.put("projectName",authDto.getProjectName());
        }else{
            map.put("project_name",authDto.getProjectName());
        }
        HashMap<String, Object> result = new HashMap<>();
        result.put(authDto.getParameterLocation(),map);
        return result;
    }

5、注意事项


5.9.7 - 基础能力厂商通道

适用于COP平台已完成接入能力的通道扩展。如COP平台已接入短信服务,并已适配华为云通道、腾讯云通道。若系统使用中,需要使用阿里云或其他第三方通道,则可以通过SPI机制快速完成适配接

1. 概述

1.能力扩展SPI,适用于COP平台已完成接入能力的通道扩展。如COP平台已接入短信服务,并已适配华为云通道、腾讯云通道。若系统使用中,需要使用阿里云或其他第三方通道,则可以通过SPI机制快速完成适配接入。

2.因各能力厂商的版本、接口存在差异,可能无法满足某些API接口定义,则无法实现对应能力特征。当前已适配能力的特征及各通道区隔详情,请参看本页面的已接入能力列表。

2. 接入步骤

2.1. 开始开发

需要在代码工程POM文件中引入依赖


<dependency>
    <groupId>com.seeyon</groupId>
    <artifactId>cip-capability-api</artifactId>
    <version>${capability.version}</version>
</dependency>

2.2. SPI适配层API接口定义实现

以“短信发送”API接口为例

需要实现接口:com.seeyon.cip.provider.api.sms.SmsProviderService

覆写以下方法:

com.seeyon.cip.provider.api.ProviderService#getDescription // 获取通道名称

com.seeyon.cip.provider.api.ProviderService#checkConfig // 检查配置开关,固定返回true

com.seeyon.cip.provider.api.ProviderService#getCapabilityEnum // 返回能力枚举

com.seeyon.cip.provider.api.sms.SmsProviderService#sendShortMessage // 实现短信发送逻辑

备注:服务的相关配置,可放在配置文件中。

3. 完成SPI加载配置

3.1. 工程下载

cip-spi-capability-demo.zip

注意事项: 1.pom中的版本号要与项目当前版本保持一致,分别为boot版本、cip-capability-api版本

    <parent>
        <groupId>com.seeyon</groupId>
        <artifactId>boot</artifactId>
        <version>3.10.1</version>
    </parent>
    <properties>
        <platform.version>3.10.1</platform.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.seeyon</groupId>
            <artifactId>cip-capability-api</artifactId>
            <version>${cip.version}</version>
        </dependency>
    </dependencies>

3.2. spi jar 打包并部署

参考 SPI扩展

重启 cip-capability 项目实现扩展支持


5.10 - 预制集成应用

针对高频集成场景,提供预制集成应用,达到开箱即用的基础数据集成能力。

1、概述

针对高频集成场景,提供预制集成应用,达到开箱即用的基础数据集成能力。

2、预制应用清单

5.10.1 - 致远V5

1、概述

实现V8与V5之间接口鉴权、单点登录、组织同步、事项同步、消息同步集成。

2、集成场景

2.1、V8作为门户,V5发布应用

  1. V8配置菜单,单点登录打开V5应用
  2. V8主动调用V5组织写入OpenAPI,完成组织同步
  3. V5推送待办事项,V8呈现V5待办事项并免登陆打开详情页
  4. V5推送消息到V8,V8呈现V5消息并免登陆打开详情页
  5. M5作为移动门户,单点登录打开V5菜单、事项、消息

2.2、V8发布应用,V5作为门户

  1. V5配置菜单,单点登录打开V8应用
  2. V8主动调用V5组织查询OpenAPI,完成组织同步
  3. V8推送待办事项到V5,V5呈现V8待办事项并免登陆打开详情页
  4. V8推送消息到V5,V5呈现V8消息并免登陆打开详情页
  5. M3作为移动门户,单点登录打开V8菜单、事项、消息

3、V5版本场景区隔表

1721891532837

4、集成配置步骤

5.10.1.1 - V8作为门户,V5发布应用

1、V8作为门户,V5发布应用

1.1、V8配置菜单,单点登录打开V5应用

1.1.1、V5集成页面配置

1.1.1.1、产品登记【V5】

1721891567861

1721891573690

1.1.1.2、应用注册【V5】

1721891614673

1721891622709

1.1.1.3、应用接入设置

1721891662595

1.1.1.4、用户绑定设置

1721891868364

1.1.1.5、切换系统管理员角色

1721891689905

1.1.1.6、进入REST用户管理

1721891771980

1.1.1.7、新建REST账号

1721891782630

1721891788675

1.1.2、V5配置文件修改

1.1.2.1、配置spring-v8-sso文件

【V5安装路径】

\ApacheJetspeed\webapps\seeyon\WEB-INF\cfgHome\plugin\cip\spring\spring-v8-sso.xml

1721891972347

  • url参数:【V8服务域名】+"/service/cip-manager/plug/sso/callback"
  • 说明:V8拉取待办事项并列表呈现,点击待办打开待办详情页时,会在URL后拼接ticket参数,V5拦截ticket参数后,调用V8登录认证地址接口,换取手机号码/人员编号,模拟登陆,完成免登陆打开事项详情页。*
  • key参数(加密因子):与V8连接器单点登录配置的加密因子保持一致即可。

1.1.3、V8集成配置

1.1.3.1、导入预制集成应用

说明:由于版本差异,请联系集成平台获取

1721892093148

1721892098193

1721892103440

1721892108235

1.1.3.2、免登配置

1721892253781

1.1.3.3、菜单配置

1721892263179

1721892269896

1.1.3.4、发布并启用三方集成应用

1721352435158

1.1.3.5、菜单角色授权

1721892312744

1721892316871

1721892321109

1721892325632

1.1.3.6、菜单效果查看

1721892344903

1.2、V8主动调用V5组织写入OpenAPI,完成组织同步

需要时联系集成平台获取预制集成应用

1.3、V5推送待办事项,V8呈现V5待办事项并免登陆打开详情页

1.3.1、V5集成配置

1.3.1.1、产品登记【V5】

1721891567861

1721891573690

1.3.1.2、应用注册【V5】

1721891614673

1721891622709

1.3.1.3、应用接入设置

1721891662595

1.3.1.4、用户绑定设置

1721891868364

1.3.1.5、切换系统管理员角色

1721891689905

1.3.1.6、进入REST用户管理

1721891771980

1.3.1.7、新建REST账号

1721891782630

1721891788675

1.3.2、V8集成配置

1.3.2.1、启用API

1721892826294

1.3.2.2、新建接入应用

1721892831149

1.3.2.3、API授权

1721892835361

1.3.2.4、启用接入应用

1721892840432

1.3.2.5、获取AppKey和AppSecret

1721892844323

1.3.2.6、查看接口域名

1721892849581

1721892854408

1.3.2.7、导入预制集成应用

说明:联系集成平台获取

1721892860876

1721892881078

1721892885585

1721892890600

1.3.2.8、新建事项同步

1721892898675

1.3.2.9、查看事项同步-同步能力编码

1721892904176

1.3.2.10、发布并启用三方集成应用

1721352435158

1.3.3、V5修改配置文件
1.3.3.1、配置spring-v8-sso文件

【V5安装路径】

\ApacheJetspeed\webapps\seeyon\WEB-INF\cfgHome\plugin\cip\spring\spring-v8-sso.xml

1721893052756

  • url参数(V8登录认证地址):【V8服务域名】+"/service/cip-manager/plug/sso/callback"

说明:V8拉取待办事项并列表呈现,点击待办打开待办详情页时,会在URL后拼接ticket参数,V5拦截ticket参数后,调用V8登录认证地址接口,换取手机号码/人员编号,模拟登陆,完成免登陆打开事项详情页。

  • key参数(加密因子):与V8连接器单点登录配置的加密因子保持一致
1.3.3.2、配置spring-v8-cip文件

【V5安装路径】

\ApacheJetspeed\webapps\seeyon\WEB-INF\cfgHome\plugin\cip\spring\spring-v8-cip.xml

1721893115496

  • openApiUrl(V8开放平台OpenAPI域名前缀):“https://openapi-"+【V8前台域名】;

说明:值来源请参考步骤【查看接口域名】

  • capabilityId(V8同步能力编码):V8基础集成-事项同步-编辑态-同步能力编码;

说明:值来源请参考步骤【查看事项同步-同步能力编码】

  • appKey:V8接入应用分配的AppKey

说明:¡值来源请参考步骤【查看AppKey和AppSecret】

  • secretKey:V8接入应用分配的AppSecret

说明:值来源请参考步骤【查看AppKey和AppSecret】

1.3.4、V5发布补丁包

由于版本差异,请联系集成平台获取;

打上补丁包后,修改配置文件。然后重启V5系统。

1.4、V5推送消息到V8,V8呈现V5消息并免登陆打开详情页

说明:参照事项同步配置

1.5、M5作为移动门户,单点登录打开V5菜单、事项、消息

说明:由于以上配置包含移动端配置,所以M5可以直接使用以上功能项

5.10.1.2 - V8发布应用,V5作为门户

1、V8发布应用,V5作为门户

1.1、V5配置菜单,单点登录打开V8应用

1.1.1、V5集成配置步骤

1.1.1.1. 产品登记【V5】

1721891567861

1721891573690

1.1.1.2. 应用注册【V5】

1721891614673

1721891622709

1.1.1.3. 应用接入设置

1721891662595

1.1.1.4. 用户绑定设置

1721891868364

1.1.1.5. 单点登录设置

1721895441615

1.1.1..6. 门户配置

1721895446745

1721895451573

1721895456983

1721895464060

1721895468929
1721895473021
1721895477215

1.1.2. V5单点登录地址说明

https://【COP-V8平台域名+端口】/oauth/home # 固定值前缀
?mobile=urlencode(【COP移动端待跳转目标相对地址】)  # url encode 后的 手机端跳转目标地址,相对路径
&web=urlencode(【COP PC端待跳转目标相对地址】)   # url encode 后的 web 跳转目标地址,相对路径
&businessType=outsider  # 固定值
&type=【defaultAvoid】    # 双方约定好的业务类型。 这里假设是 defaultAvoid
&dynamicField=【v5ticket】  # 默认 v5ticket, 如果定制化的参数,则 value= 参数 key。 eg: 三方追加的值不叫 code,而是叫 ticket,则在这里写 ticket
&ticket=【三方系统生成临时授权码】   #  与 dynamicField 的 value 一致并赋值

1.1.3. V8_nocas配置

微服务:ctp-user

文件修改内容

seeyon:
  avoid:
    defaultAvoidSso:
      【defaultAvoid】: { authType: default, callbackUrl: 【获取用户信息的 GET 请求 URL】 }

替换内容说明:

1、defaultAvoid替换为拼接地址中的type参数值

2、 【获取用户信息的** GET 请求 URL】替换成【根据code获取用户信息】的接口请求地址**

3、 default参数是固定值,不需要修改;

1.1.4. 注意事项

  • V5点击菜单后,无法成功跳转到V8目标菜单,URL地址栏限制【callbackUrl】,这是因为V5和V8之间的网络问题,请联系运维处理。
  • V5根据版本不同,菜单默认的dynamicField也不同,8.1以及之前是dynamicField=ticket,8.2中dynamicField=v5ticket,如果不确定,就两个都试试

1.2、V8主动调用V5组织查询OpenAPI,完成组织同步

1.2.1、V5集成配置步骤

1.2.1.1. 切换系统管理员角色

1721891689905

1.2.1.2. 进入REST用户管理

1721891771980

1.2.1.3. 新建REST账号

1721891782630

1721891788675

1.2.2、V8集成配置步骤

1.2.2.1. 导入三方集成应用

说明:联系集成平台获取

1721892860876

1721892881078

1721892885585

1721892890600

1.2.2.2. 配置安全认证

1721895648613

1.2.2.3. 测试接口

1721895653542
1721895656917

1.2.2.4. 启用组织同步

1721895662287

1.2.2.5. 运行配置

1721895666183

1.2.2.6. 数据校验

1721895671064
1721895674295

1.2.2.7. 发布并启用三方集成应用

1721352435158

由于版本差异,请联系集成平台获取

1.2.3、V8预制应用获取

有项目实施经理提供,或者联系集成平台获取

1.3、V8推送待办事项到V5,V5呈现V8待办事项并免登陆打开详情页

1.3.1. V5集成配置步骤

1.3.1.1. 产品登记【V5】

1721891567861

1721891573690

1.3.1.2. 应用注册【V5】

1721891614673

1721891622709

1.3.1.3. 应用接入设置

1721891662595

1.3.1.4. 用户绑定设置

1721891868364

1.3.1.5. 单点登录设置

1721895441615

1.3.1.6. 切换系统管理员角色

1721891689905

1.3.1.7. 进入REST用户管理

1721891771980

1.3.1.8. 新建REST账号

1721891782630

1721891788675

1.3.2. V8集成配置步骤

1.3.2.1. 导入预制集成应用

说明:联系集成平台获取

1721892860876

1721892881078

1721892885585

1721892890600

1.3.2.2. 配置安全认证

1721895648613

1.3.2.3. 测试接口

1721895653542
1721895656917

1.3.2.4. 修改事项同步配置

1721895855513
1721895860100
1721895864668
1721895868720

1.3.2.5. 启用事项推送

1721895875940

1.3.2.6. 发布并启用三方集成应用

1721352435158

1.4. V8推送消息到V5,V5呈现V8消息并免登陆打开详情页

1.4.1、V5集成配置步骤

参考事项集成配置

1.4.2. V8集成配置步骤

1.4.2.1. 导入预制集成应用

说明:联系集成平台获取

1721892860876

1721892881078

1721892885585

1721892890600

1.4.2.2. 配置安全认证

1721895648613

1.4.2.3. 测试接口

1721895653542
1721895656917

1.4.2.4. 修改消息同步配置

1721895982342
1721895985752
1721895990348
1721895994102

1.4.2.5. 启用消息推送

1721895999249

1.4.2.6. 发布并启用三方集成应用

1721352435158

1.5、M3作为移动门户,单点登录打开V8菜单、事项、消息

由于以上配置步骤包含M3移动端配置,所以使用M3可以直接使用以上功能

1.6、V8预制应用导入和发布

1.6.1、下载致远_V5预置集成应用

致远_V5_1728373780330.json

6 - 系统管理

概述

系统概述

系统管理是系统级功能、系统级配置的统称。基于技术平台底层架构,面向运维或实施人员提供V8系统的运行监控、配置、升级和维护的能力。

角色介绍

角色 介绍
系统管理员 拥有完全的系统管理权限

关键能力

序号 关键能力 简述
1 系统升级 应用的数据库表数据升级
2 租户管理 租户初始化、租户启/停、租户补发应用
3 租户推送 租户基本数据的跨环境推送/接收及日志
4 License管理 系统级已购插件明细
5 应用管理 应用运行状态监控、应用版本更新记录
6 环境配置 环境模式及环境标识配置
7 灰度发布 灰度策略制定及发布运行
8 数据资源管理 独立数据源/对象存储维护
9 资源分配 按租户分配低代码应用的创建数及运行数
10 应用测试 低代码应用的测试运行状态监控及重启
11 沙箱管理 沙箱运行状态监控及维护
12 国际化 国际化语种维护、国际化词条维护
13 登录管理 登录页设置、登录及密码策略配置、登录日志
14 显示设置 登录页及登录后页签设置
15 定时任务 定时任务维护
16 数据保护 数据加密存储配置、数据加密传输配置、数据签名/验签配置及验签日志

操作说明

系统升级

系统升级主要用于解决应用程序和SQL升级后的数据库表数据升级,保证应用升级的完整性。已适配的V8版本包括3.0、3.2、3.5及后续版本,支持跨版本升级。

升级程序覆盖的应用范围如下

应用类型 应用名称 应用编码
平台应用 消息中心 ctp-message
音视频 ctp-media
构建沙箱 app-sandbox
移动平台 m5
门户 portal
智能助手 ai
集成能力接入 cip-capability
集成连接器 cip-connector
集成转换服务 cip-convert
集成管理平台 cip-manager
报表中心 cdp-data
数据处理 cdp-schedule
用户中心 ctp-user
组织模型 organization
基础应用 app-common
待办中心 ctp-affair
工作流 bpm
流程中心 app-approval
低代码 udc
标准应用 知识管理 app-doc
会议 billarchive1957033645480561621
日程 schedulemanagement1879887445425932710
任务 taskmanagement3065533864193052469
考勤 clockin1971488181783513527
新闻 billarchive2776130152975518413
公告 announcement1492794990099121396
论坛 forum314089200045278330
工资条 payslip3198926323118263548
文档管理 docmanagement371717577236826126
归档管理 doc534502257506599167
流程绩效 lcjx2204114084702273826932271
督查督办 supervision2037982683412252721
公文 edoc335172694483814428

前置准备

  • 系统升级前须确保各应用的程序层(前/后端)已更新完成并启动成功、SQL已执行完成

发起升级

  • 新版本服务启动成功后,系统会基于已部署应用自动检测是否有可执行的升级程序并列出,此时升级状态标记为“未开始”,无需升级的应用状态标记为“无需升级”。点击升级后系统将按应用的依赖关系自动编排应用升级顺序,依次执行升级直至全部应用升级成功。

descript

descript

升级进度

  • 升级过程中可查看各应用的升级情况,跨版本升级时系统会按应用版本由低到高依次执行升级程序,升级失败可查看失败原因并重新发起升级

descript

descript

租户管理

租户管理为购买多租户插件的客户提供轻量级租户管理能力,包括租户的开通、停用、补发应用初始化等。未购买多租户插件的客户仅支持查看租户,无法进行租户新建和编辑等操作

新建租户

  • 购买多租户插件(tenant)后,支持创建指定数量的租户

descript

  • 填写租户基础信息及管理员信息:租户管理员支持通过手机号或用户名+密码的方式注册

descript

  • 填写独立域名:创建租户时可暂不启用独立域名,独立域名一旦启用后将不支持关闭,仅支持修改

descript

  • 填写独立数据信息:创建租户时请务必确认是否启用独立数据源和独立对象存储,已创建租户将不支持启用;启用独立数据源和对象存储前需前往“数据资源管理”处添加相应资源
    • 开通租户时是否支持启用独立数据信息受配置控制,系统默认关闭,如需启用可联系运维修改相关配置。启用后将不支持切换回原模式

descript

  • 选择租户初始化应用范围:默认开通应用已在应用信息处列出,其他应用可按需选择是否开通

descript

descript

  • 租户信息填写完整后系统将自动进行租户初始化,基于选中的应用数量初始化时间可能有所差异,约3-10分钟

启用租户

  • 租户开通成功后自动启用,启用后租户才可正常访问

descript

停用租户

  • 支持停用租户,租户停用后将无法访问

descript

补发应用初始化

  • 针对为已开通的租户,可以选补发应用初始化扩大租户授权的应用范围

descript

  • 应用初始化失败后会有异常提示,并标记为“应用开通异常”,可查看异常原因并重新发起初始化,如多次重发初始化失败请联系运维处理

descript

descript

查看租户详情

  • 针对为已开通的租户,可查看租户详情

descript

租户推送

租户推送用于解决多环境部署时租户ID无法保持一致的问题。如业务上需要保证各环境的租户ID一致(如使用跨环境应用配置推送、低代码应用推送、表单推送等需要租户ID一致),可在已创建租户所在环境发起租户推送,在目标环境进行接收。

前置准备

  • 使用租户推送前,请务必配置并统一环境组中各环境的摆渡桶

租户推送

  • 选择接收环境并发起推送,如接收环境存在未接收的数据降不支持发起推送

descript

  • 发起推送后,系统将自动检查推送环境和接收环境的用户中心和基础应用是否启动成功,未启动成功将不支持推送

descript

  • 选择需要推送的租户数据并推送

descript

推送日志

  • 租户数据推送后可查看推送日志及推送明细

descript

descript

租户接收

  • 在接收环境查看待接收的租户数据

descript

  • 接收时,系统将自动检查推送环境和接收环境的用户中心和基础应用是否启动成功,未启动成功将不支持接收

descript

  • 针对推送的租户数据,系统会自动判断是否在接收环境重复,重复将不支持接收并进行标记。用户可选择对可接收的租户数据进行接收或拒绝

descript

  • 接收成功后的租户状态默认“准备中”,需前往“租户管理”处启用租户(执行租户初始化)才可访问

descript

接收日志

  • 租户数据接收后可查看接收日志及接收明细

descript

descript

License管理

License管理用于查看当前系统已购的插件信息,系统对插件的控制策略包含“数量”、“周期”、“数量+周期”,可实时查看各插件的购买总量及到期时间,部分插件可查看已使用数量,如租户数、机构数、注册数、并发数、IM授权数

查看插件信息

descript

应用管理

应用管理用于管理当前环境的所有在线/下线应用,包括用户中心、消息中心等平台应用,以及低代码平台搭建的普通应用。

查看应用

  • 支持查看当前环境已上线/已下线应用,

descript

录入应用

  • 启用灰度发布功能时,支持录入(含批量录入)应用。录入后的应用状态为“待上线”,加入灰度泳道后应用状态变更为“灰度验证中”

descript

descript

上线应用

  • 启用灰度发布功能时,如灰度验证通过可对应用进行上线处理,应用上线后将从已加入的灰度泳道中移除,同时老版本将自动下线

descript

下线应用

  • 启用灰度发布功能时,如灰度验证不通过可对应用进行下线处理,应用下线后将从已加入的灰度泳道中移除

descript

查看泳道

  • 进行灰度验证的应用可查看其加入的灰度泳道

descript

descript

环境配置

由于跨环境推送业务范围较多,环境配置将系统支持的全部跨环境推送业务的模式及推送方向进行统一管理,包括表单推送、应用配置推送、低代码应用推送及租户推送。

配置要求

  • 环境标识锁定后不允许修改
  • 如需扩展环境,可基于下方的兼容方案部署新环境,其余扩展方案均不支持

descript

示例:如首个部署环境为“测试环境”需扩展到2个环境,仅支持追加1个“生产环境”;如需扩展到3个环境,可追加1个“开发环境”和1个“生产环境”

配置规范

基于客户所需的跨环境推送业务,选定相应的环境数量及模式

descript

补充说明

  • 如需使用跨环境推送能力,请至少部署2套环境,环境部署完成后需依次对各环境进行配置才可生效。
  • “不支持”指所选模式下无法开展该业务,如需开展该业务可通过扩展环境实现
  • “不限制”指该业务可由所选模式下的任意环境发起推送,并将业务数据推向所选模式下的其他任意环境

环境配置(界面操作)

  • 通过环境配置界面修改

descript

环境配置(运维操作)

部署模式 配置文件
单体 application.yaml
微服务 nacos上修改对应的public-common配置文件

  1. 单体模式下,如已部署低于V8 3.0的版本,需要升级到v8 3.0时,虽然环境配置会从程序中读取,但由于yaml中没有环境配置参数,升级后需要运维手动修改环境配置,修改方式详见下方说明
  2. 环境配置出厂预置的环境数量是2,如在某个阶段仅需要1个环境,请将环境数量修改为1,并根据实际情况定义环境标识,修改方式见下方说明
环境数量=1

环境模式=生产环境

yaml配置
seeyon: environment: checkDeploymentToProd: true currentEnv: prod deploymentEnvStr: prod

环境模式=测试环境

yaml配置
seeyon: environment: checkDeploymentToProd: true currentEnv: test deploymentEnvStr: test

环境模式=实施环境

yaml配置
seeyon: environment:implement checkDeploymentToProd: true currentEnv: implement deploymentEnvStr: implement

环境模式=开发环境

yaml配置
seeyon: environment:implement checkDeploymentToProd: true currentEnv: development deploymentEnvStr: development
环境数量=2

环境模式=测试环境+生产环境

yaml配置(测试环境) yaml配置(生产环境)
seeyon: environment: checkDeploymentToProd: false currentEnv: test deploymentEnvStr: test-prod seeyon: environment: checkDeploymentToProd: false currentEnv: prod deploymentEnvStr: test-prod

环境模式=实施环境+生产环境

yaml配置(实施环境) yaml配置(生产环境)
seeyon: environment: checkDeploymentToProd: false currentEnv: implement deploymentEnvStr: implement-prod seeyon: environment: checkDeploymentToProd: false currentEnv: prod deploymentEnvStr: implement-prod

环境模式=开发环境+生产环境 (注意:checkDeploymentToProd的配置,如果开发环境配置为false,低代码应用禁止从开发环境推送生产环境;如果配置true,低代码应用允许从开发环境推送生产环境)

yaml配置(开发环境) yaml配置(生产环境)
seeyon: environment: checkDeploymentToProd: false currentEnv: development deploymentEnvStr: development-prod seeyon: environment: checkDeploymentToProd: false currentEnv: prod deploymentEnvStr: development-prod
环境数量=3

环境模式=开发环境+测试环境+生产环境 (注意:checkDeploymentToProd的配置,如果开发环境配置为false,低代码应用禁止从开发环境推送生产环境;如果配置true,低代码应用允许从开发环境推送生产环境)

yaml配置(开发环境)
seeyon: environment: checkDeploymentToProd: false currentEnv: development deploymentEnvStr: development-test-prod
yaml配置(测试环境)
seeyon: environment: checkDeploymentToProd: false currentEnv: test deploymentEnvStr: development-test-prod
yaml配置(生产环境)
seeyon: environment: checkDeploymentToProd: false currentEnv: prod deploymentEnvStr: development-test-prod

环境模式=开发环境+实施环境+生产环境 (注意:checkDeploymentToProd的配置,如果开发环境配置为false,低代码应用禁止从开发环境推送生产环境;如果配置true,低代码应用允许从开发环境推送生产环境)

yaml配置(开发环境)
seeyon: environment: checkDeploymentToProd: false currentEnv: development deploymentEnvStr: development-implement-prod
yaml配置(实施环境)
seeyon: environment: checkDeploymentToProd: false currentEnv: implement deploymentEnvStr: development-implement-prod
yaml配置(生成环境)
seeyon: environment: checkDeploymentToProd: false currentEnv: prod deploymentEnvStr: development-implement-prod

环境配置(老模式切换新模式)

  • 该操作主要针对低代码平台私有化部署后,已经按老模式做了环境配置,更新到平台3.0或更高版本后,需要按新模式调整环境数量、环境模式及环境标识,老模式配置方式见下方截图

descript

  • 按新模式调整对应配置
配置项 调整点
环境数量 环境数量保持不变
环境模式 参照上方的“配置规范”,按需选择环境模式。 2套环境下需选择“开发环境+生产环境” 3套环境下需选择“开发环境+测试环境+生产环境”或“开发环境+实施环境+生产环境”
当前环境标识 原“应用定制”改为“开发环境” 原“测试运行”改为“测试环境”或“实施环境” 原“生产运行”改为“生产环境”

灰度发布

灰度发布用于解决微服务新版本上线的灰度验证问题, 确保少量用户验证通过后才整体切换为新版本。运维管理人员可通过泳道管理界面对灰度应用范围(应用服务集合)、用户范围(租户全员、指定用户)进行设定并发布。灰度发布过程中,可查看灰度泳道运行状态,以及灰度应用范围和用户范围等信息。灰度验证过程中,请求处理按照灰度范围以及针对的用户进行相应的流量染色和路由隔离,实现小范围用户的灰度验证。灰度验证确定通过或未通过后,可通过服务版本发布功能执行新版本上线或下线操作。

灰度发布仅可用于验证应用的代码逻辑正确性,流程等规则数据暂不支持灰度;低代码平台搭建的普通应用升级时,如数据结构有变更,如菜单新增等暂无法支持灰度。灰度验证过程中产生的数据无法自动化清理。

灰度发布需购买灰度发布插件(grayRelease)才可使用

创建泳道

  • 创建全新的灰度泳道

descript

  • 填写灰度泳道基本信息

descript

  • 选择灰度应用:系统会自动过滤出可用于进行灰度验证的应用,同一泳道支持添加多个应用,同一应用仅支持选择一个版本。支持将已添加到灰度泳道的应用删除

descript

descript

descript

  • 选择租户:同一泳道支持添加多个租户,如租户已全员加入其他泳道,则不支持添加

descript

descript

  • 授权用户:选定租户后可以对租户内的用户进行灰度授权,默认“指定用户授权”方式,需人工添加授权用户,“指定用户授权”方式下同一租户最多支持添加50人

descript

descript

  • 授权用户转移:如用户已加入其他泳道,支持将冲突用户从其他泳道移除并加入当前泳道

descript

  • 切换授权方式:支持切换至全员授权方式,采用全员授权方式时,如租户内的用户已加入其他泳道,系统会提示授权冲突的用户,支持将冲突用户从其他泳道移除并加入当前泳道

descript

  • 删除租户:如已加入灰度泳道的租户无需进行灰度验证,可将租户从灰度泳道删除

descript

保存泳道

  • 创建灰度泳道时,可以选择保存为草稿暂不发布,此时泳道策略未生效

descript

发布泳道

  • 灰度泳道发布后自动启用,此时会基于灰度泳道内配置的应用范围和用户授权范围进行灰度验证。如加入灰度泳道内的应用无法找到镜像资源,将阻塞泳道的发布,可以查看失败原因,并将无效应用从泳道移除后再次发布

descript

descript

启用泳道

  • 启用泳道后灰度策略立即生效,泳道内授权的用户将自动登出

descript

停用泳道

  • 停用泳道后灰度策略立即失效,泳道内授权的用户将自动登出

descript

删除泳道

  • 删除泳道后灰度策略将自动失效,泳道内添加的应用和用户将自动释放

descript

编辑泳道

  • 对泳道的基本信息、应用范围,用户授权范围进行阶段性调整,确保灰度业务覆盖全面

descript

检验灰度标识是否生效

  • 建议无痕或清缓存后使用
  • 授权用户登录后通过F12查看对应灰度服务的前端/后端资源 Cookie:test-seeyon-gray-tag=gray20240126034904759;test-seeyon-gray-apps=GRAY-ctp-user$22.0.0
  • 授权用户登录后对应灰度服务的后端请求header:Backend-Gray-Ctp-User:gray20240126034904759

数据资源管理

对于数据安全性、可扩展性要求较高的企业,通常提出租户独立数据源的诉求。数据资源管理用于解决租户数据隔离场景下的多数据源和对象存储的前置接入及统一维护问题。新建租户时,可按租户分别启用独立数据源或独立对象存储。

新建数据资源

  • 支持新建独立数据源或对象存储。数据源已适配mysql,对象存储已适配OSS、OBS、minio

descript

编辑数据资源

  • 编辑数据源时仅支持修改用户名及密码;编辑对象存储时仅支持修改access-key-id及access-key-secret

descript

删除数据资源

  • 仅未使用的数据资源支持删除,数据源被租户引用后将不支持删除

查看使用明细

  • 已使用的数据资源支持查看租户明细

descript

老数据迁移

原V8环境未使用租户数据物理隔离,现租户数据做物理隔离,需要迁移老数据,处理方案见:租户数据物理隔离-数据迁移

资源分配

资源分配主要用于满足多租户模式下低代码应用创建资源/测试资源的分租户管控。如系统开通多租户能力,可为各租户单独分配创建应用数和测试运行数,可创建应用总数来源于license中购买的“udc”插件的数量,可测试应用总数来源于license中购买的“udcSandbox”插件的数量

资源分配

  • 选取租户并为租户分配应用创建数和测试运行数,未分配资源的租户将无法创建和测试应用

descript

  • 首次完成资源分配后,可修改租户的应用创建数/测试运行数。租户的已创建应用数和已测试运行数清零后才可删除

descript

  • 查看系统中可分配资源及已占用资源
    • 可创建应用总数:license中购买“udc”插件的数量,如资源不足可联系商务增购
    • 已创建应用总数:当前系统中全部租户已创建应用总数
    • 可测试运行总数:license中购买“udcSandbox”插件的数量,如资源不足可联系商务增购
    • 已测试运行总数:当前系统中全部租户已测试运行应用总数

descript

应用测试

用于监控当前系统中的低代码应用的测试运行状态

查看测试应用

  • 查看当前环境正在测试运行的全部应用

descript

应用重启

  • 测试应用时,如因服务异常导致无法测试可重启应用

descript

沙箱管理

沙箱主要用于满足低代码应用的编译构建。通常情况下部署并启用1个沙箱即可,如应用测试数量并发较高,可部署多个沙箱提升构建效率

沙箱管理

  • 新建沙箱

descript

  • 删除沙箱,释放闲置沙箱资源

descript

  • 手动重启沙箱:解决因沙箱问题导致的编译构建错误

descript

  • 定时重启沙箱:设置定时重启沙箱规则,定时重启沙箱主要目的清理沙箱中的垃圾数据,及时释放沙箱资源

descript

  • 沙箱可用状态检测:实时检测沙箱可用状态,避免因网络延迟等因素导致的沙箱状态不准确

descript

国际化

国际化提供了多语种管理、静态资源国际化及数据国际化能力。系统出厂预置了简体中文、繁体中文及英语,如需扩展其他语种,可通过新增语言包实现。语种的启用/停用及词条配置支持租户级操作,如租户配置和系统配置不一致则以租户配置为准。

新增语种

  • 新增需要扩展的语种(仅系统级配置支持新增,租户级配置不支持)

descript

descript

停用语种

  • 新增语种后可停用语种,需注意,如启用后的语种已被租户使用则不支持停用;出厂预置的语种不支持停用(简体中文/繁体中文/英语)

descript

启用语种

  • 已停用的语种支持重新启用

descript

删除语种

  • 已停用的语种支持删除,删除语种后可重新添加。删除语种后不会删除词条及数据国际化配置

descript

设置数据国际化语种

  • 已启用的语种支持设置为数据国际化语种,系统默认语种强制设置为数据国际语种,不支持修改;除此语种之外,可添加的数据国际化语种未做限制。

descript

编辑词条

  • 通过词条目录找到需要修改的词条后按语种进行编辑

descript

descript

恢复默认词条

  • 通过恢复默认将词条恢复到出厂状态,支持按词条恢复或按目录恢复

descript

导出/导入词条

  • 可通过词条导入/导出功能,批量修改词条配置

descript

登录管理

登录管理属于全局配置,包括登录页管理、登录页设置、登录及密码策略等

登录页管理

descript

登录页设置

descript

登录及密码策略

descript

descript

登录日志

  • 查看运维管理员登录日志及非当前环境账号的登录失败日志

descript

显示设置

设置登录页浏览器页签信息及登录后浏览器页签显示信息

高级设置

descript

定时任务

在应用运行态查看/编辑应用的定时任务,定时任务可能来自于低代码平台设计态定义或手写代码方式定义

查看及编辑定时任务

descript

descript

数据加密

采用校验技术或密码技术保证重要数据在传输/存储过程中的保密性。重要数据包括用户密码、附件、证件号码、电子邮件等信息

加密存储

  • 仅支修改加密方式,数据加密范围已锁定

descript

  • 加密算法如下:

descript

加密传输

  • 支持开启/关闭加密传输。加密方式默认国密算法,不支持修改;数据保护范围仅支持证件号码和电子邮件

descript

数据签名

采用校验技术或密码技术保证重要数据在传输/存储过程中的完整性。重要数据包括用户信息、角色信息、授权信息、日志信息等

数据签名设置

  • 数据签名开关:支持开启/关闭数据签名
  • 数据保护范围:数据保护范围已锁定,详见下方截图
  • 验签方式:开启数据签名/验签后,进入列表页和详情页均会触发验签。列表页的验签方式为按页验签,只有切换分页时才会触发验签

descript

验签不通过日志提醒

  • 对验签不通过的数据记录日志

descript

  • 对验签不通过的数据在列表页高亮显示并提示(人员验签示例)

descript

7 -

1.概述

应用中心作为系统中统一管理应用的模块,支持应用的接入和管理(含第三方应用)、菜单管理、多端工作台的设置。主要特征如下:

  • 应用接入:预置应用、UDC应用发布、第三方应用、集成应用接入
  • 菜单管理:按业务场景重组应用菜单,包括菜单改名、重组、排序、多层级等
  • 工作台:应用分类及应用中心多端呈现

1.1 角色介绍

角色 介绍
根机构管理员 拥有应用中心完全的管理权限,包括:应用启停用、菜单重组、工作台设置

1.2 术语说明

名词 含义
应用 为完成某项或多项特定工作的计算机程序
菜单 应用的功能或页面入口,一个应用一般会有多个菜单
应用类型 分为预置应用、自建应用、商城购买的应用、第三方应用

1.3 关键操作步骤

应用的全生命周期管理

descript

序号 分类 内容 步骤说明
1 应用接入 预置应用 目前预置应用仅有通讯录、流程中心
2 商城应用 从应用商城购买的应用
3 UDC自建应用 在udc自定义创建的应用
4 第三方应用 在应用中心创建的第三方应用
5 应用管理 应用启用、停用 应用启用停用管理
6 应用菜单重组 根据业务需要把已有的菜单进行重组,
7 工作台设置 统一设置PC、移动端工作台的显示
8 应用能力设置 提供应用的机器人、选项卡给团队协作使用
9 应用更新、淘汰 应用更新 更新应用
10 应用停用 淘汰应用,停用应用

2.关键操作说明

2.1 应用接入

应用中心支持管理的应用类型包括:预置应用、UDC应用发布、第三方应用、集成应用接入 。

2.1.1 预置应用

目前预置应用仅有通讯录、流程中心。

2.1.2 商城应用

从应用商城中购买的应用。

2.1.3 udc自建应用

即通过低代码设计中心自行设计的应用,发布成功后,在应用中心的类型为自建应用。

2.1.4 第三方应用

场景:用于三方系统或页面接入V8

第一步:新建第三方应用,启用单点登录,选择基础插件实现单点登录,基础插件的说明见[「集成平台基础插件操作文档」]{.underline}

descript

第二步:创建菜单,如果需要单点登录需要开启单点登录开关,并指定单点登录使用的集成应用

descript

第三步:在用户中心 - 角色管理页面,创建角色,并选中这个三方应用,按需勾选菜单;按需创建一个或多个角色

descript

descript

第四步:将此角色授权给人员

descript

2.1.5 集成应用

将集成应用纳入应用中心统一管理。

集成应用是是用来封装三方异构应用,使其符合COP自建应用规范,UDC应用可以采用调用自建应用的方式调用三方应用。满足三方接口调用、单点登录、菜单挂载、事件订阅等场景。三方集成应用包含连接器、基础集成、应用集成三个二级模块内容。详细操作见[企业级一站式集成解决方案-3.0]中的【8.2三方集成应用】

descript

2.1.6 灰度应用

将灰度应用纳入应用中心统一管理。

灰度应用是用于解决微服务新版本上线的灰度验证问题, 确保少量用户验证通过后才整体切换为新版本,运维管理人员可通过泳道管理界面对灰度发布应用范围(应用服务集合)、用户范围(租户全员、指定用户)进行设定并发布。详细说明见[系统管理操作手册]中的【4. 灰度发布】

descript

2.2 应用管理

2.2.1 应用启停用

启用、停用应用

2.2.2 应用菜单重组

应用内菜单管理

菜单管理是基于应用层之上,按业务需要和优化业务人员的使用体验,将应用的菜单进行重组、编排,不影响原应用层的数据。

  1. 应用固有的菜单

应用发布后安装成功后,在应用中心即可查看此应用及其下的菜单,并支持修改菜单名称、图标、显示总数属性。

descript

descript

  1. 第三方应用的菜单

第一步:创建第三方应用,并开启单点登录、选择单点登录插件。

descript

第二步:在应用菜单页面,创建外链菜单,将第三方系统的链接加过来,并开启单点单点登录开关

descript

descript

基于业务场景做菜单重组

场景:围绕费用报销场景提供一套完整的应用菜单,需要用到费控管理应用、发票管理应用等应用下的菜单。普通用户使用时,只需要访问重组后的「费用报销」菜单就好,不用关心其中的功能来源于多少个应用。真正做到以业务为中心,减少因IT本身的复杂性给业务人员带来的业务上的复杂性。

操作:菜单显示设置>在目标菜单处点击"+" > 选择要添加的菜单 > 确定

descript

descript

2.2.3 工作台设置

工作台是多端统一的应用快捷入口,支持管理员统一预置、分组呈现、用户个性化配置。

管理员设置

根机构管理员可管理工作台的分组、各分组下的应用及其他快捷功能,如门户、新建会议等。

  • 分组管理:PC、移动的分组分别维护

  • 添加快捷应用或功能的方式:

    • 从其他组拖动到当前组
    • 通过点击当前组的"+“选择

1)管理PC端工作台

descript

2)管理移动端工作台

descript

前端呈现

1)web端工作台

descript

2)M5 PC客户端和移动端

descript

2.2.4 应用能力设置

  • 选项卡:将应用的页面、数据做成选项卡,可在IM聊天中配置快捷入口
  • 机器人:按场景订阅应用中的事件,通过自动发送IM消息实现通知到相关人员
应用类型 选项卡 机器人
预置应用 √(开启单点登录后可用)
自建应用 √(开启单点登录后可用)
商城购买的应用 √(开启单点登录后可用)
第三方应用 √(开启单点登录后可用)

选项卡、机器人设置说明见[「移动平台操作手册 - 2.5 团队协作能力配置」]{.underline}

2.1.5 与其他应用的关系

模块 关系描述
用户中心 应用菜单资源、角色权限注册到用户中心进行统一授权、鉴权
门户 为门户提供应用资源,如菜单、页面、栏目等备选资源
低代码平台 1. 低代码平台设计的应用发布后,进入“应用中心”自动启用 2. 应用菜单,纳入“应用中心”统一管理
应用商城 商城应用通过统一机制注册进入应用中心: 1. 私有化部署,购买→下载→上传 2. SaaS,在线开通
集成连接 创建第三方应用时,支持选择集成连接的基础插件实现单点登录
开发平台 开发平台统一管理API权限,事件订阅,第三方应用接入

8 -

9 -

10 -

整体介绍

新一代组织模型,支持大型/超大型多层级组织、多元多业务线的分工协作体系,完整描述组织工作群集与上下级关系,并提供集权分权管理模式,成为组织协作、业务管理的基础。支持多集团、多层级、多业态、多管控方式、多授权体系。

1.1 角色介绍

角色 介绍
机构管理员 1. 区分层级:根机构管理员、下级机构的管理员,管理的组织范围不同
2. 管理内容:该角色有完整的后台管理权限,支持管理组织模型、用户中心、应用中心、门户、流程管理、集成连接、数据报表、移动、基础设置等模块
组织模型管理员 1. 区分层级:根机构的组织模型管理员、下级机构的组织模型管理员,管理的组织范围不同
2. 管理内容:仅支持管理机构的组织模型模块

1.2 术语说明

术语 含义
行政组织 即组织基于企业行政管理或人事管理定出的组织结构,是组织最基础的组织结构
机构 是组织中数据隔离的基准,支持挂在集团、单位下
部门 是组织中最末端的单元,支持挂在单位、部门下
岗位 在特定的组织中,在一定的时间内,由员工承担完成若干项工作任务,并具有一定的职务和责任、权限,就构成一个岗位。例如:产品经理、开发工程师。
岗位类别 根据工作内容、任职或对组织的贡献的相似性而划分为同一组的职务。如:管理类、技术类、营销类。
职务 组织中承担相同或相似的职责或工作内容的若干职位总称。如部门经理
职级 是对所有职务等级的统一划分,如:高级经理、经理、项目经理。
人员 也称雇员,为了工资或其它报酬而为别人工作的人。这里的员工指的是一个组织(企业事业单位)内部各个部门的工作人员,包括永久性雇员和临时性工作人员。如:产品开发人员、行政人员、采购员、销售员、生产工人以及各个部门的管理人员等。员工与组织构成雇佣关系。这里所指的员工不包括虽然与该组织发生业务关系但与该组织并没有雇佣关系的人员,如客户/供应商的联系人,海关、银行、工商税务的工作人员。
业务线 基于行政组织的机构、部门,按业务重组汇报关系。如人力业务线、财务业务线等

1.2 操作步骤

descript

2.管理员关键操作说明

2.1 权限说明

机构管理员、组织模型管理员拥有组织模型的管理权限,管理范围受设置控制:

  • 本机构:仅支持管理本机构的组织模型信息
  • 本机构及下级机构:支持管理本机构及所有下级机构的组织模型信息

注:根机构管理员默认可管理本租户内所有机构的组织模型信息

2.2 维护基础数据

组织模型的基础数据包括:

  • 扩展字段:为行政组织、人员提供自定义描述能力
  • 外部单位扩展字段:为外部单位提供扩展描述能力
  • 枚举管理:为枚举类型的扩展字段提供枚举
  • 编码规则:机构、部门、岗位、职务、职级、人员、业务线、外部组织、联系人等编码规则维护
  1. 扩展字段管理

场景:某集团公司的总部及分子公司的各部门都有具体的职能(如:人力、财务、营销、法务),用于在流程中按业务匹配到具体的审批部门和人员。

具体维护分为两步:

a. 维护扩展字段本身:定义类型、名称、引用的枚举(如是枚举类型字段)

b. 在行政组织管理 - 扩展字段中,添加扩展字段,并设置使用的组织范围、组织类型

descript

descript

descript

  1. 枚举管理
  • 预置枚举有:岗位分类、职能类型、证件类型
  • 自定义枚举:按需增加

descript

3)编码管理

预置了组织模型各对象的编码规则,支持用户自定义编辑,不允许新建。

descript

2.2 维护行政组织

组织分为两种类型:机构、部门,如何区分机构、部门,有两个原则:

  • 法人单位视为机构
  • 相对完整、独立的业务协作单元,视为机构

2.2.1 新建机构

1)新建单个机构

descript

descript

2)通过导入做机构的初始化

descript

2.2.2 新建部门

1)新建单个部门

descript
descript

2)通过导入做部门的初始化

descript

2.2.3 维护组织

维护的具体内容包括:组织基本消息、扩展字段信息、组织历史上级、所属业务线。

descript

2.3 维护岗位职务职级

岗位职务职级的说明,见「术语说明」,综合用来起来描述人员的任职信息。

权限说明:

对象 管理权限 支持下发
岗位 各级机构 基准岗位支持下发
职务 各级机构 基准职务支持下发
职级 仅根机构 租户内各机构使用一套职级

2.3.1 新建岗位

1)新建基准岗,设置适用范围,选择「本机构及下级机构」下发给下级机构

descript
descript

2)下级机构如果已使用了自用岗位,上级后下发了基准岗位,下级机构可以通过将自用岗位绑定到上级下发的基准岗位,既能实现岗位的标准化,也不用调整本机构现有的流程、授权等。

descript

3)批量导入,快速初始化岗位。

descript

2.3.2 新建职务

与岗位定义基本一致。

1)新建基准职务,设置适用范围,选择「本机构及下级机构」下发给下级机构

descript

descript

2)下级机构如果已使用了自用职务,上级后下发了基准职务,下级机构可以通过将自用职务绑定到上级下发的基准岗职务,既能实现职务的标准化,也不用调整本机构现有的流程、授权等。

descript

3)批量导入,快速初始化职务。

descript

2.3.3 新建职级

职级是定义在根机构,下级机构使用同一套职级体系。

1)根机构管理员做统一的职级管理。

descript
descript

2)批量导入,快速初始化职级。

descript

2.3.4 维护岗位、职务、职级

具体操作同2.3.1、2.3.2、2.3.3

2.3.5 维护汇报关系

产品中的汇报关系,主要用于流程审批,汇报关系分为两类:

  • 按组织维度和层级体现出的人员的汇报关系:如行政组织、业务线、多维组织中的部门负责人、部门分管领导、上级部门的负责人、上级部门的分管领导等

  • 单独维护的汇报关系:

    • 岗位汇报关系:按组织+岗位体现的一种汇报关系,有效减少因频繁的人员变动产生的汇报关系的调整
    • 领导秘书管理:一种特殊的汇报和协作关系,多出现在政府、国企、大型企业中

1)业务线

业务线是基于基础的行政组织,按业务协作需要形成的组织的汇报关系,多用于流程审批、业务数据的授权等场景。

① 新建业务线

descript

② 维护业务线

在机构、部门管理页面的详情页,支持将当前机构、部门加入业务线。

descript

2)岗位汇报关系

① 新建岗位汇报维度,一般按业务维度呈现。

descript

② 新建岗位汇报维度

descript

descript

3)领导秘书管理

领导秘书主要用于公文流转中的处理、领导日程的管理。

descript

descript

2.4 维护人员及任职

人员信息分为:基本信息、账号信息、任职信息(主岗、兼职)、扩展信息

2.4.1单点维护人员

0)人员的批量初始化:通过导入功能做人员

1)人员列表:默认展示生效的人员

descript

2)人员基本信息

descript

3)人员任职信息

  • 主岗信息:岗位职务职级需要在所属机构下选择,显示的扩展字段是所属机构下的人员扩展字段
  • 兼职信息:仅允许设置兼职组织、岗位、职务、职级,组织的选择范围是当前管理员有权限管理的机构

descript

  1. 工作交接

对人员调岗、离职、挂职等情况时,做工作交接,内容包括:

  • 待办事项
  • 组织的信息:组织信息中选择的当前人员
  • 流程信息:流程节点、分支、节点属性中的当前人员
  • 角色权限:当前人员拥有的角色权限

descript

2.4.2批量维护人员

1)批量新建人员

第一步:选择下载模板字段,下载导入模版。

descript

第二步:按模板字段梳理并填入人员信息。

descript

第三步:将梳理好的人员信息文件,上传进行导入。如有错误请按提示操作并修改信息,再进行导入操作。

descript

2)批量更新人员信息

第一步:查询出要更新的人员,导出这部分人员;如果不查询,默认导出当前机构下的生效人员。

descript

第二步:在导出的文件中更新人员信息

descript

第三步:将更新好的人员信息文件,导入系统。如有错误请按提示操作并修改信息,再进行导入操作。

descript

2.5维护组织角色及人员

企业集中维护组织角色信息,并设置在不同组织下的角色授权人员,满足各业务场景下复杂流程的找人、选人等。

2.5.1维护组织角色

根机构管理员统一维护组织角色信息,包括角色名称、角色分类、适用组织等。

descript

角色分类可在【基础数据管理-枚举管理】中通过「角色分类」枚举维护。

descript

角色的适用组织可设置为本组织、本组织及下级组织、指定组织、指定组织及下级组织,并可根据组织类型(机构、部门)进行设置。:不在角色适用组织范围内的组织将无法使用该角色。

descript

2.5.2角色人员设置

机构管理员可维护管理范围内组织的各个角色授权人员。即:xx组织下的xx角色是谁

descript

设置角色人员信息时:

1)【业务线】需在【组织】的所属业务线范围内。组织所属业务线可查看《2.3.5维护汇报关系》;

2)【组织角色】需在【组织】的适用角色范围内

3)若选择【业务线】,则维护xx组织在xx业务线上的xx角色人员;若选择【业务线】,则维护xx组织下的xx角色人员

descript

2.6 维护外部单位

外部单位是描述组织外部的供应商、经销商、外包机构等合作伙伴的组织形式,包括外部单位管理、外部人员管理。

2.5.1 维护外部单位

descript

descript

2.5.2 维护外部人员

入口:外部单位管理 - 外部人员

  1. 创建外部人员:填写基本信息、主岗信息、扩展字段,会在用户中心同步创建对应的用户。

descript

descript

2)扩展字段

与内部组织、人员共用扩展字段,其中组织扩展字段支持按组织类型指定使用范围。

descript

2.7维护外部个人用户

前提:环境的nacos中配置了外部单位用户和外部个人用户的注册租户A

入口:A租户后台 - 组织模型 - 外部个人用户管理

新建外部个人用户,同时在用户中心创建对应的外部个人用户。

descript

descript

2.8设置注册人员

2.8.1 设置

第一步:环境的nacos中配置了外部单位用户和外部个人用户的注册租户A

第二步:登录系统的system-admin设置登录页的功能入口,如外部单位人员、外部个人用户的注册入口

descript

第三步:设置登录页面

  • 外部人员与内部人员使用统一登录页

descript

  • 外部人员与内部人员使用单独登录页

descript

2.8.2 前端注册入口

场景一:外部人员与内部人员使用统一登录页

descript
descript
descript

场景二:外部人员与内部人员使用单独登录页

内部人员登录页

descript

外部人员登录页

descript

注册页面:外部个人用户注册

descript

注册页面:外部单位用户注册

descript

2.9对接OCIP

前置准备:

  1. 部署了OCIP平台
  2. 需购买开放协同互联平台集成(OCIP)插件,后台集成平台下才会有【OCIP】菜单

具体操作步骤如下:

第一步:在OCIP平台中做对接配置,将V8系统的信息配置好

descript

第二步:在V8平台根机构下,上报组织数据,包括:机构、部门、岗位、职级、人员

descript

第三步:在OCIP平台中,将创建的组织视图授权给接入的V8系统

descript

第四步:在应用中就可以正常使用了,如发文场景选择OCIP平台中的组织,实现跨系统公文交换等

2.10 其他设置

2.10.1 维护组织互访权限

组织互访权限管理分为机构间的互访权限、部门(机构内)互访权限。用来解决以下场景需求:基于业务管理合规、新业务保密、外包人员管理等需要,设置协作可见的组织、人员范围。

互访权限控制的地方:

  • 通讯录:组织树、人员列表
  • 选人界面:组织树、人员列表

1)机构互访权限

仅根机构管理员设置,其他机构管理员仅可查看「机构互访权限」的设置

descript

2)部门互访权限

优先级说明:

  • 机构互访权限与部门互访权限的优先级:部门互访权限 > 机构互访权限
  • 部门互访权限优先级:可见 > 不可见

descript

2.10.2 维护系统组

系统组是协作组织的一种扁平化的描述形式,适用于小范围的团队协作,如跨部门的开发小组、委员会等。

新建系统组:可选对象包括机构、部门、岗位、人员、外部单位和外部人员

descript

descript

2.10.3 通讯录设置

3端的通讯录列表、人员卡片的显示字段,敏感字段、敏感成员的设置,满足显示个性化、领导联系方式小范围成员可见等需求。

  1. 显示字段设置

支持设置人员的基本信息字段在通讯录中的显示,并支持设置通讯录的自定义字段。

descript

descript

其中自定义字段值的维护,在前端用户 - 个人设置页面维护。

descript

  1. 敏感字段设置

设置的含义是:所有人不可见「敏感成员」的「敏感字段」的值,但「白名单」人员可见。

descript

前端查看的效果如下:

descript

案例

视频:https://pan.baidu.com/s/1f2D0oloZ_5Wj9qFFumzIGQ?pwd=1chw

常见问题

Q1:组织模型中是否可以删除以下对象,如:机构、部门、岗位、职务、职级、人员等?

A:无删除功能,但支持停用。这么处理是为了保证业务历史数据中的组织数据正常留痕显示。

11 -

12 -

13 -

概述

用户中心提供4A级统一安全管理,以RBAC模型为基础构建的完整权限体系,同时支持基于国家保密标准的三员分离、涉密信息系统的分级保护等。主要从特征如下:

  • 统一账号:集中协同账号管理,包括企业员工账号、外部人员账号、设备账号等;
  • 统一认证:提供丰富的认证方式,包括登录及密码策略配置,登录设备管理,账号及IP锁定管理,用户在线管理;
  • 统一授权:以RBAC模型为基础构建的完整权限体系,包括功能权限、数据权限、字段权限;
  • 统一审计:提供详细的日志审计,包括登录及异常登录日志,操作日志,授权日志,越权日志等

1.1 角色介绍

角色 介绍
根机构管理员 拥有用户中心完全的管理权限,包括:用户管理、角色管理、授权管理、安全管理、日志管理、权限审计、认证服务
普通机构管理员 仅拥有部分管理权限,包括:用户管理、角色管理、授权管理、日志管理

1.2 术语说明

名词 含义
用户 即系统中的账号
角色 特定权限的集合
资源 主要指各种业务对象,包含:菜单、页面、控件、按钮等
权限 角色可使用的功能,分角色的功能权限和角色的数据权限
功能 指对资源的操作,是资源与操作类型的二元组,如增加销售单、修改销售单等
操作类型 对资源可能的访问方法,如增加、删除、修改等
功能权限 指能干什么,如新建销售订单等
数据权限 指能在哪里干什么,如:查看北京分公司销售部的销售订单

1.3 关键操作步骤

序号 步骤 步骤说明
1 用户管理 1. 内部用户、外部用户来自于组织模型自动注册、开通 2. 特殊用户需要手动新建
2 角色管理 1. 预置角色、应用角色是自动追加的,无需手动新建 2. 按需创建机构角色
3 授权管理 1. 普通人员角色、外部联系人角色自动按类型授权,无需手动授权 2. 按需将应用角色、机构角色授权给用户
4 认证方式 1. 按需设置认证服务
5 安全设置 2. 登录及密码策略 3. 三员分离设置
6 查看日志 查看登录日志、操作日志、授权日志、越权日志
7 审计 根机构管理员、审计管理员查看审计日志、做权限审计
8 udc udc中使用角色权限管理,见「低代码平台操作手册 - 2.11角色权限」

2.关键操作说明

2.1 用户管理

用户类型分为三类:内部用户、外部用户、特殊用户,其中内部用户、外部用户来自于组织模型自动注册、开通,仅特殊用户需要手动新建。

1)内部用户

随组织模型的人员及任职管理同步创建内部用户,支持以下管理方式:

  • 查看用户权限
  • 启用/停用用户
  • 重置用户密码

descript
2)外部单位用户

随组织模型的外部单位人员管理同步创建外部单位用户,支持以下管理方式:

  • 查看用户权限
  • 启用/停用用户
  • 重置用户密码

descript

3)外部个人用户

随组织模型的外部个人用户管理同步创建外部个人用户,支持以下管理方式:

  • 查看用户权限
  • 启用/停用用户
  • 重置用户密码

descript

4)特殊用户

特殊用户是无档案的用户类型,分为两种类型:

  • 管理员:用于授权机构管理员、组织管理员,用户登录后会直接进入后台
  • 特殊设备:多用于大屏设备展示报表数据

descript
descript

2.2 角色管理

角色分为三类:

  • 预置角色:系统预置的角色,目前仅有两个,分别是普通人员角色、外部联系人角色
  • 应用角色:各应用内的角色,不允许自定义资源,如流程设计师、会议室管理员等
  • 机构角色:即用户自定义角色,按业务授权需要打包资源形成角色,便于授权
  1. 预置角色
  • 维护权限:仅允许根机构管理员自定义普通人员角色、外部联系人角色的资源
  • 维护资源的范围:仅限于授权给普通人员权限的资源,不可选择授权给keyuser的资源

descript

  1. 应用角色

预置应用的角色,不允许修改;搭建应用的角色说明如下:

  • udc设计态:允许自定义角色的资源
  • 运行态:不允许修改keyuser的资源,允许修改普通人员角色的资源,规则见「1)预置角色」

注:udc中使用的角色权限说明,见[「低代码平台操作手册 - 2.19角色权限」]{.underline}

descript

  1. 机构角色

即自定义角色,支持跨应用选择应用资源,便于按业务场景自定义角色,简化授权。

descript
descript

2.3 授权管理

2.3.1 角色授权

授权有两种方式:

a. 新建授权:新建授权,选择角色、授权对象、设置数据权限

b. 修改授权:基于已有授权,新增/移除授权对象、添加/移除角色

授权对象:支持授权给具体用户,也支持授权给机构、部门、岗位、职务、职级、组,避免因人员变动,频繁调整授权规则。

c)授权生效机制:近实时生效,最长1分钟内会生效

descript

设置数据权限

注:应用中的实体需要开启【数据权限】,这里的受控实体才会显示,受控维度是受控实体的子实体。

descript

2.3.2 机构管理员授权

用于维护每个机构的机构管理员、组织模型管理员、安全保密管理员(开启三员分离后才显示此管理员)的授权。仅根机构管理员有权限维护机构管理员,共有两个入口:

  • 组织模型:机构管理页面 - 设置管理员
  • 用户中心:授权管理 - 机构管理员授权

descript
descript

2.4 安全管理

2.4.1分级保护

2.4.1.1 三员分离

  • 系统提供三员账户:组织管理员,安全保密管理员,安全审计员
  • 安全保密管理员:与机构一一对应,授权行为需要经过「安全保密管理员」审核通过才能生效,包含添加、移除授权
  • 安全审计管理员:租户内仅有一个安全审计管理员,可以查看系统中各个用户行为轨迹
  • 互斥规则:同一个用户不允许同时担任三员中的两员

三员的权限说明:

一级菜单 二级菜单 组织管理员 安全保密管理员 审计管理员
用户管理 内部用户管理 × ×
外部用户管理 × ×
特殊用户管理 × ×
角色管理 - × ×
授权管理 角色授权 × ×
机构管理员授权 × ×
审批列表 ×
安全管理 三员分离 × ×
登录设备管理 ×
账户锁定管理 ×
用户在线管理 ×
水印设置 ×
安全保密管理员配置 - × ×
安全审计管理员配置 - × ×
日志管理 登录日志
操作日志
授权日志
越权日志
权限审计 资源审计
用户权限审计
认证服务 - × ×
一级菜单 二级菜单 组织管理员 安全保密管理员 审计管理员
用户管理 内部用户管理 × ×
外部用户管理 × ×
特殊用户管理 × ×
角色管理 - × ×
授权管理 角色授权 × ×
机构管理员授权 × ×
审批列表 ×
安全管理 三员分离 × ×
登录设备管理 ×
账户锁定管理 ×
用户在线管理 ×
水印设置 ×
安全保密管理员配置 - × ×
安全审计管理员配置 - × ×
日志管理 登录日志
操作日志
授权日志
越权日志
权限审计 资源审计
用户权限审计
认证服务 - × ×

开启三员分离功能

descript

  1. 组织管理员

[组织模型操作手册]{.underline}

  1. 安全保密管理员

安全保密管理员与机构一一对应,

  • 负责授权信息的审批,包含权限的添加、移除
  • 查看日志
  • 权限审计
  • 安全保密管理员的授权维护

descript

  1. 安全审计管理员

租户内仅有一个安全审计管理员,支持授权多人,仅支持根机构管理员授权第一批安全审计管理员。

安全审计管理员可做的操作如下:

  • 查看审计日志
  • 查看资源、权限审计信息
  • 授权安全审计管理员

descript

2.4.1.2 密级管理

密级管理是对人员、业务数据进行分级管理,是有效保障信息安全的管理方式。

第一步:根机构管理员/用中心管理员在后台 - 用户中心 - 安全管理 - 分级保护管理页面,开启密级管理,按需维护密级枚举。

descript
descript

第二步:给人员定密,可以按人员定密,也可以按岗位批量给人员定密

descript

第三步:前台业务人员给业务数据定密,如发文给文单、附件定密等

第四步:人员查看业务数据,或处理流程选人受密级规则过滤

2.4.2 登录及密码策略

支持设置以下内容:

  • 用户名生成策略:按手机号、姓名全拼、手动输入自动生成默认用户名,默认策略是按手机号生成用户名
  • 密码强度设置:设置密码的强度要求规则
  • 修改密码规则:设置密码的有效期,到期强制修改密码
  • 设置与找回密码的验证方式:设置、找回密码时的验证方式,可选短信、邮件,多选
  • 登录保护:设置密码验证失败多次后,增强验证、锁定账号
  • IP访问控制:设置密码验证失败多次后,增强验证、锁定IP
  • 超时保护:设置超时无操作自动锁屏

descript
descript

2.4.3 登录设备管理

登录设备管理是为了将在保证使用安全的同时,不影响用户的使用体验设计的。主要策略是:

  1. 登录新设备需要短信验证并绑定设备
  2. 手机号+短信验证码登录的,默认绑定设备
  3. 本人、机构管理员可管理登录设备
  4. 解绑设备后,再次登录需要重新验证绑定

descript

2.4.4 账户锁定管理

  • 操作内容:解锁锁定账号、锁定IP
  • 操作权限:机构管理员

descript

2.4.5 用户在线管理

对管理员来说,用来查看、管理系统在线人员;对普通用户来说,查看、管理个人账号的当前在线情况和历史在线记录。保障用户账号的在线安全。

1)后台管理员

descript

2)前端用户

web端

descript

桌面客户端

descript

2.4.6水印设置

水印从以下两个方面解决数据安全问题:

  1. 防止截图、文件下载等方式的数据泄露
  2. 便于事后追溯
  1. 管理员设置

按应用控制水印的显示。

descript

  1. 前端显示效果

descript

2.5 日志管理

为了系统安全、合规、留痕,记录了用户在系统的敏感操作行为,并提供备查、审计。

  1. 登录日志

记录用户的登录、退出时间和在线状态。

descript

  1. 操作日志

记录用户操作除角色授权之外的操作。

descript

  1. 授权日志

记录角色授权记录。

descript

4)越权日志

记录越权访问记录动作,并不意味了访问成功。

descript

2.5 权限审计

用于审计管理员做资源和权限审计。

  1. 资源审计

支持查看实体资源、菜单资源、其他资源。

descript

  1. 用户权限审计
  • 角色:支持查看用户拥有的角色权限
  • 其他资源:支持查看用户拥有的资源权限,如指定的门户、报表、系统组等资源

descript

2.6 认证服务

AD/LDAP统一认证

descript

案例

场景:开启三员分离的情况下,给销售人员,需要授予客户管理、费控管理、YonBIP的应用权限。

视频演示:用户中心授权管理案例.mp4