# 如何定制开发

# 前言

用户总会有个性化需求和集成类需求,面对A8、G6版本客户,我们提供了定制开发的机制。

我们提供了ctp-studio平台进行定制开发代码托管,防止代码丢失。同时该平台有成千上万项目成果,我们也有限地提供了重复方案共享。

原则上,我们均要求尽量接口化开发,不要侵入源码。直接修改标准产品源码是项目交付最快捷的方案,但其引发的后续维护问题:比如标准产品团队处理客户BUG时修改了客开文件,就涉及代码合并。

本章末尾【开发文档资料】提供了相关资料链接供不熟悉定制开发的技术参阅。

# 怎么做定制开发?

# 确认开发方案

平台提供了多种开发方案,用来应对不同场景开发的:

接口方案 适合场景 特点 面向人群
CIP集成平台 第三方系统登录认证、数据同步 开箱即用、低代码、零代码 运维实施
插件化开发 致远V5系统内增加新功能、无侵入源码二次开发 解耦、模块化、可升级、V5容器下共同运行 技术开发
Restful API 第三方系统远程调用致远V5、前后端分离开发 轻量、无侵入、快速开发、跨平台跨语言 技术开发
WebService SOAP 第三方系统远程调用致远V5 跨平台跨语言、偏重 技术开发
Event Listener 利用插件化开发为基础,在同一容器范围内监听致远V5应用事件,去做用户需要的事情 解耦、可拆卸、可升级、V5容器下共同运行 技术开发
动态接口 (当遇到需要修改源码的场景时)通过埋点接口或Bean替换的形式达到不修改源码的目标 源码无侵入、可升级、V5容器下共同运行 技术开发
ctp-studio源码修改 以上都无法满足需求,需要修改标准产品源码文件时,可通过平台申请对应文件修改编译打包 侵入源码 技术开发

1)CIP集成平台--开箱即用的低代码集成平台,CIP是致远V5的标准产品能力,利用可视化配置的形式实现与第三方系统的认证和信息交互,运维实施通过配置就可以完成异构系统的集成。

2)插件化开发,插件化开发是致远V5平台提供的弹性扩展架构能力,如客户期望做一个标准产品没有的功能,完全可以通过插件化开发无侵入完成;若客户期望在标准产品基础上扩展额外的功能,同样可以基于插件化+其它的接口化开发完成,插件化开发是一切开发的本源,是基本技能。

插件化开发文档详见"快速开始">"插件化开发"章节

3)Restful远程Http调用,Restful API是通用技术标准,通过Http远程调用V5服务,彻底做到无源码侵入、服务分离的能力。我们总计开放了几百个Rest API接口,如组织机构的增删改查均可通过Rest远程调用解决(Rest接口文档全部存放于Open Api菜单中)。

Restful文档详见SeeyonAPi菜单

4)Webservice SOAP集成(已过时),这是多年前的异构系统通信方案,此技术采用了XML、多通信协议、WSDL方案,开发调用非常臃肿,已被现在的Rest Api和轻量级RPC框架替代,目前平台继续保留原来开放的SOAP接口,但不再扩充。新的开发请使用REST接口。

5)Event事件监听,采用类似Observable+Observer模式,其作用是监听标准产品指定动作,然后进行二次开发实现自己的需求。 如与第三方的组织机构同步,可监听标准产品组织机构的增删改Event事件,然后将事件信息推送给第三方进行数据同步。 以及监听人员处理协同、回退协同事件,以此来通知第三方刷新待办数据。

Event事件监听文档详见"CTP技术平台">"Event事件监听"章节

6)动态接口,动态接口是V8.0SP2 LTS版本开始推出的一种致远技术标准,其存在的目的是解决前面“插件化开发”、“Rest API”、“Event事件监听”、“APPS API”无法解决的问题。比如客开需要在某个标准产品源码块中间插入一段代码以实现客户需求,过去只能通过修改源码解决。而动态接口出现以后,则是由研发在需要修改源码的位置增加一个“动态接口”埋点,客开则只需要继承该动态接口,即可无侵入源码实现客户需求。

动态接口文档详见"CTP技术平台">"动态接口"章节

7)修改源码,如果接口化开发无法满足,我们也允许修改源码,从ctp-studio申请源码文件修改并提交,方便做版本管理。

如何确认修改哪个源码文件,这个需要一定基础,文档详见“快速开始” > “问题调试分析方法”

# 按场景推荐

# 场景一:第三方主动与OA通信

如第三方系统要与标准产品进行数据增、删、改、查操作(如人员的新增、修改)。

优先使用Rest API,通过远程Rest调用。这种调用方式,二次开发可以自行搭建一个微服务项目,使用HttpClient远程调用,做到完全解耦、轻量级开发。

如果标准产品的Rest接口不够,可以通过运维支持工单向研发申请开放接口以满足需求。

如果研发一时半会开不出来,二次开发也可以自己上:通过平台的插件开发规范,新建独立的客开插件,自己编写Rest接口服务,独立插件可以引用标准产品范围内的类方法,同时也能做到对标准产品源码无侵入。

# 场景二:OA主动与第三方通信

如果OA产生的数据变化,需要同步到第三方系统。比如组织机构变化需要与第三方同步,或者统一待办集成,OA侧待办数据变化需要推送到第三方更新待办。

这种情况可以优先考虑CIP集成平台、OCIP、DEE等一系列低代码组件是否能满足需求。

如果以上不能满足需求,则必然要在标准产品中进行代码开发--监听数据变化+推送数据到第三方。我们推荐的方案依然是:新建独立的客开插件!利用平台的Event Listener监听数据变化,然后将变化数据通过某种通道推送给第三方。

优先引用标准产品的Event API。如果标准产品的Event接口不够,可以通过运维支持工单向研发申请开放接口以满足需求。

如果没有对应Event触发接口,还可以采用动态接口开发的模式,从Open API中查看是否有匹配的动态接口,在标准产品需要触发动作的地方增加动态接口埋点或者采用Bean替换直接接管标准产品对应类的方法。

# 场景三:在OA中增加新页面新功能

如果客户需要在OA中增加新的页面功能。这种场景的实现方案非常简单:通过平台的插件开发规范,新建独立的客开插件,开发独立功能即可。可以做到完全无侵入。

# 场景四:改造OA现有功能

如果客户需要改造标准产品页面功能,则涉及到与标准产品源码交互,尽量采用无侵入源码方式开发。

其开发思路是:利用Event、动态接口能力+独立的客开插件化开发规则进行无侵入开发,动态接口有专门的文档明确给出了开发思路。

最后不得已,可以申请源码来修改。

# 技术要求

为了使用V5平台进行应用开发,开发人员必须掌握以下相应的技能:

# 后端服务开发

  • Java语言编程(JDK1.8)

  • JavaEE(Servlet、Filter等)

  • Spring、Spring MVC

  • XML和JSON

  • Restful

  • 熟悉致远CTP平台技术

# 后端数据层开发

  • JDBC原理和编程方法

  • Hiberante原理与编程方法

  • 数据库的配置和使用:Postgresql、MySQL、Oracle、SQL Server等

# 前端界面开发(JSP)

  • JavaSrcipt基本用法

  • CSS的使用

  • JSP/JSTL/EL

  • JQuery

  • Ajax

  • SeeyonUI框架代码

# 前端界面开发(Html)

  • JavaSrcipt基本用法

  • CSS的使用

  • HTML结构、Html5特性

  • VueJs

  • Ajax

# 移动应用开发(Html5)

  • JavaSrcipt基本用法

  • CSS的使用

  • HTML结构、Html5特性

  • 熟悉致远CMP平台API

# 开发文档资料

编号 开发类型 文档资料
0 开发准备、环境搭建 本站>快速开始:安装协同系统、搭建开发环境、代码管理、插件化开发,依次看完
1 培训视频文档(很丰富) 链接:https://pan.baidu.com/s/1xRY4yTJRu6D429ssCZRbOw 提取码:y7w0
2 问题分析排查、源码文件搜索 本站>快速开始>常见调试分析方法
3 安全类开发规范(与OA相关) 本站>快速开始>安全开发规范
4 平台组件类:系统框架、数据库操作、日期/缓存/国际化/消息/AJAX等各种组件 本站>开发文档>CTP技术平台
5 移动端开发:M3 H5/微协同H5标准产品开发或集成三方开发,第三方APP集成H5开发 技术文档>移动开发文档 https://open.seeyoncloud.com/cmpdev/
6 前端开发:Vue、CSS、常见前端规范 本站>开发文档>前端文档
7 表单业务开发:自定义控件、表单内页面操作 本站>开发文档>CAP应用平台
8 致信客户端开发 1、致信平台https://zhixin.seeyon.com/doc ;2、编号1培训视频
9 部分客开场景的解决方案 本站>开发文档>技术解决方案
10 集成类解决方案 1、培训视频;2、ctp-studio复用别的项目方案;3、技术文档>集成平台
11 第三方调用本系统Rest接口 技术文档>SeeyonAPI
创建人:admin
修改人:het