# 系统集成平台 **Repository Path**: zxynick/system-integration-platform ## Basic Information - **Project Name**: 系统集成平台 - **Description**: 基于NC开发的系统集成平台,旨在降低集成类需求全生命周期成本 - **Primary Language**: Java - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-06-09 - **Last Updated**: 2025-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 系统集成平台 ## 介绍 基于NC开发的系统集成平台,旨在降低集成类需求全生命周期成本 * 工程版本:2111 * 开发工具:IDEA * 数据库版本:DM >经过验证,其他版本和数据库也能使用此功能,如有适配问题可以与我取得联系 ### 更新日志 * 2025年5月7日:增加同步会计平台工具,支持任意聚合VO传会计平台 * 2025年4月1日:为避免pnpm依赖冲突,使用vue重构前端 * 2025年2月20日:优化创建异常工具,修复人员接口增加任职记录报错问题 * 2025年2月14日:增加事务管理功能,优化API翻译器,增加自带接口,优化缓存机制,优化工具类减少各版本依赖异常 * 2024年12月15日:简化初始化配置,优化API注册逻辑,增加自动注册脚本功能 * 2024年11月20日:增加了基于maven的jar包构建功能 * 2024年10月11日:优化注解扫描功能;修复若干问题;优化翻译器翻译,现在将自动根据元数据匹配编码或名称;封装jar包创建发行版 * 2024年6月3日:引入基于AntV的报表统计 * 2024年5月31日:增加插件扫描功能 * 2024年5月30日:初始版本提交 ### 代码托管平台 [https://gitee.com/sillage_c/system-integration-platform](https://gitee.com/sillage_c/system-integration-platform) ### 主要特性 ``` 内置API管理框架:快速开发,面向切面,支持转移 内置基于Caffeine的缓存管理组件:详情可参考下文 内置常用工具类 内置VO实体翻译器:可基于元数据,以编码或名称的形式,快速完成vo翻译为json/json翻译为vo 内置插件扫描器:在快速部署场景下,可通过注解形式注册服务 适配低代码功能:可通过低代码形式访问完整功能 适配独立前端服务:可不受版本影响访问数据统计看板,后续版本更新优先考虑在此服务实现 ``` [基于Caffeine的缓存服务发布](https://blog.csdn.net/qq_41855955/article/details/135477276?spm=1001.2014.3001.5501) ### 工程结构 可通过[treee -L 2 -d]显示最新工程结构 ``` system-integration-platform ├── doc--用于放置相关文档手册 ├── front--前端源码 ├── sip-be--后端工程 │ ├── sip --核心工程 ├── sip-fe--前端工程,由于各版本脚手架不同,故未上传脚手架,后续将逐渐减少前端依赖 │ ├── nccpub-2111 --低代码平台源码 │ ├── sip --独立工程源码 └── sql--预置脚本 ``` ### 软件架构 + **后端**: NC通用工程,支持全版本NCC,NC65理论上也可以使用,但需要做jdk7语法适配; + **前端-低代码版本**: 代码路径[.\sip-fe\nccpub-21111],可以使用低代码自动生成的前端,由于各版本前端不一致,本工程只提供了2111版本源码;
+ **前端-独立工程版本**: 代码路径[.\sip-fe\sip],为了解决不同NCC版本前端语法冲突的问题,此处独立写了一套前端工程,主要使用技术为react+tinper+vite+antv;
![模型](doc/模型.jpg) ### 表结构 #### 接口档案 bd_itfdoc | 字段 | 含义 | 类型 | 备注 | |---------------|----------|---------------|-------------------------------------| | pk_itfdoc | 接口档案主键 | varchar2(20) | | | code | 接口编码 | varchar2(50) | 每个接口都有独立的ID | | name | 接口名称 | varchar2(50) | | | flowid | 流程ID | varchar2(50) | 一批接口属于同一个流程 | | flowname | 流程名称 | varchar2(50) | | | datatype | 接口类型 | varchar2(50) | 例:21,F3 | | datatype_name | 接口类型名称 | varchar2(50) | 例:采购订单,付款单 | | actiontype | 动作类型 | varchar2(50) | 取值为动作枚举01-06 | | runclass | 插件全类名 | varchar2(255) | 用于接口反射 | | sender | 发送方 | varchar2(50) | 例:OA | | receive | 接收方 | varchar2(50) | 例:NC | | itfkey | 接口匹配标识 | varchar2(50) | 同接口类型下,itfkey不能重复,用于做插件分发 | | memo | 备注 | varchar2(255) | | | enablestate | 启用状态 | int | 1=未启用,2=已启用,3=已停用 | | isdefaultitf | 是否默认接口 | char(1) | 接口中存在一组默认实现,若使用默认实现,则不用维护插件类名,取值Y/N | | loglevel | 日志级别 | int | 1=不启用,2=日志文件,3=日志表,4=ALL | | pk_org | 组织 | varchar2(20) | | | pk_group | 集团 | varchar2(20) | | | transaction | 事务模式 | int | 1=容器管理事务,2=独立事务 | | warn | 启用警告通知 | char(1) | Y/N | | enlevel | 加密级别 | int | 1=不加密;2=对称加密;3=非对称加密;4=其他加密 | | def1-20 | 自定义项1-20 | varchar2(101) | | | dr | 删除标识 | char(1) | | | ts | 时间戳 | char(20) | | #### 日志表 sip_log | 字段 | 含义 | 类型 | 备注 | |-------------|--------|---------------|-------------| | pk_log | 主键 | VARCHAR2(20) | | | itfdoc_code | 接口档案编码 | VARCHAR2(20) | | | datas | 详细信息 | CLOB | | | rxStatus | 处理状态 | VARCHAR2(32) | 取值Y/N | | billCode | 单据编码 | VARCHAR2(60) | | | returnmesg | 返回信息 | CLOB | | | errorCode | 异常码 | int | 档案参考《异常码清单》 | | stack | 异常堆栈 | CLOB | | | pk_group | 集团 | VARCHAR2(20) | | | beginTime | 开始时间 | CHAR(19) | | | endTime | 结束时间 | CHAR(19) | | | ts | 时间戳 | CHAR(19) | | | def1-def5 | 自定义项 | VARCHAR2(101) | | #### 异常码清单 | 异常码 | 代码值 | 描述 | |-----------------------|---------|-----------| | TRUE | "0000" | 无异常 | | INSTANCE_DOC_ERROR | "-1001" | 接口档案初始化失败 | | INSTANCE_ACTION_ERROR | "-1002" | 接口实例初始化失败 | | TOKEN_ERROR | "-1003" | 身份认证异常 | | ERROR | "-1004" | 发生ERROR异常 | | Exception | "-1005" | 未定义的异常 | ## 使用说明 ### 补丁安装 如果想以开箱即用的方式使用此功能,请按照如下步骤操作 1. [点击此处](https://gitee.com/sillage_c/system-integration-platform/releases)下载最新的发行版 2. 下载完成后将会得到一个nc标准格式的补丁 3. 编辑resources\sip\sipconfig.properties中的[DATASOURCE]条目,设置其为当前环境的数据源编码 4. 将补丁打到NChome中 5. 打开home\bin\sysConfig,点击部署按钮 6. 使用系统管理员登录,打开元数据管理节点,点击升级按钮,选中[modules\sip\METADATA\bd_itfdoc.bmf]并确定 7. 重启服务 ### 验证是否安装成功
此步骤不建议省略,部分初始化操作会在第一次访问时执行!
如果你是windows系统,打开Windows PowerShell,输入以下指令
```` cmd curl --location "http://ip:port/service/ItfplatformService" ^ --header "Content-Type: application/json" ^ --data "{\"code\":\"RE_SYS_TOOL\",\"data\":{\"type\":\"help\"}}" ```` 如果你是linux系统,则输入以下指令
```` cmd curl --location 'http://ip:port/service/ItfplatformService' \ --header 'Content-Type: application/json' \ --data '{"code":"RE_SYS_TOOL","data":{"type":"help"}}' ```` 如果能正常返回json格式的返回报文,则说明安装成功 ### 通用接收接口请求方式 - 接口方式:http-post - 服务方:NC - 接口触发:即时 - 调用方:外系统 - 接口方向:外系统->NC - 接口地址:http://ip:port/service/ItfplatformService 请求体格式:JSON | 字段 | 含义 | 类型 |备注| |------|------|--------|-------| | code | 接口编码 | String |接口唯一标识| | data | 详细信息 | String |接口详细请求信息| 例: ```json { "code": "RE_SYS_TOOL", "data": { "type":"help" } } ``` 响应格式:JSON | 字段 | 含义 | 类型 |备注| |------------|------|--------|-| | flag | 响应状态 | String |true/false| | data | 响应内容 | String | | errorcode | 异常码 | int |异常码含义可见[异常码清单]| 例: ```json { "flag": "true", "errorcode": "0000", "data": "请求成功" } ``` ![接口请求_01.png](doc/接口请求_01.png) ## 使用案例 ### 接收接口使用案例 可参考[nc.bs.sip.internal.receive.Sys_Psndoc_Action]实现 1. 实现@SipClass注解,设置接口编码,接口名称,接收方,发送方,更多控制用注解可在[nc.annotation.sip.SipClass]查看 2. 继承[nc.factory.sip.Sys_Itf_Action],并实现execute()方法 3. execute方法传参为外系统调用json,根据此编写自己的业务逻辑 4. 调用 this.logvo.setBillCode(code); 设置日志中的单据编码 ### 发送接口使用案例 可参考如下截图实现 1. 在合适的位置调用自己的接口,例如业务插件或后台任务中,参数1为接口编码 ``` NCLocator.getInstance().lookup(Itfplatform.class).execute("SE_OA_COMMON",aggvo); ``` 2. 实现@SipClass注解,设置接口编码,接口名称,接收方,发送方,更多控制用注解可在[nc.annotation.sip.SipClass]查看 3. 继承[nc.factory.sip.Sys_Itf_Action],并实现execute()方法 4. execute方法传参为,编写自己的业务逻辑 5. 调用 this.logvo.setBillCode(code); 设置日志中的单据编码 6. 调用 this.logvo.setDatas(CommonUtil.initstr(obj)); 设置日志中的发送报文 ![发送接口案例.png](doc/发送接口案例.png) ## 开发环境搭建 如果你不满足于使用此功能,希望能够自己上手改造,可以按照如下步骤搭建开发环境 ### 启动后端服务 1. 请确保自己的idea已经安装了[YonBuilder Premium开发者工具](https://community.yonyou.com/article/detail/658)并正确配置 2. 右键[sip-be]->[YonBIP高级版项目工具]->[启动YonBIP高级版中间件] 3. 等待项目启动 ### 打包工程 1. 执行maven指令:mvn install 2. 执行maven指令:mvn clean package ## 项目效果展示 ### 接口档案前台效果展示 ![接口档案.jpg](doc/接口档案.jpg) ### 日志效果展示 ![日志截图.png](doc/日志截图.png) ### VO翻译器使用案例 ![接口档案.jpg](doc/VO翻译器_01.jpg) ![接口档案.jpg](doc/VO翻译器_02.jpg)