一、概述


适用范围

  • 本规范适用于ISV开发的规范,YonBuilder标准版和专业版都适用。遵循规范开发会避免很多问题。

名词解释

  • ISV:英文全称是Independent Software Vendors ,意为“独立软件开发商”,特指专门从事软件的开发、生产、销售和服务的企业。
  • 沙箱环境:用于用户在一个隔离的区域进行自己的业务开发,与线上是独立分开的。
  • 云市场:ISV用户将自己的产品发布到云市场进行销售给用户。

整体介绍

  • 为了加快基于ISV和用友的快速开发和接入,避免开发的过程中出现一些比较奇怪的问题,加速开发过程,提高开发效率而制定的一部开发规范。

  • 基于融合模式的ISV流程如下图:

    image-20210426185819735

  • 基于YonBuilder模式构建应用流程

    image-20210426185904759

  • 用户购买生态应用流程

    image-20210426190014013

  • 用户购买云市场应用流程。

    image-20210426190114006

适用阅读对象

  • 开发人员

  • 产品经理

  • 架构师

  • 运营人员

文档修订摘要

日期 版本号 描述 作者 审阅
2021.4.21 V1.0 初版 黄青石
2021.4.26 V1.1 修订 黄青石

二、系统对接方式


  • 我们提供基于开放平台(OpenApi)的HTTPS的API接口去操作现有单据、档案以及操作通过YonBuilder构建的单据和表单等,接口调用采用幂等方式调用

    • 幂等方式传送
    • 幂等方式初期用在保存/更新方式上,目前方式幂等方式不能获取到ID, 需要通过查询接口查询一遍(未来会调整为直接返回幂等key和单据/档案ID)
  • 一些基本单据、档案通过事件订阅的方式,可以接收到自己租户下的变化

三、基于YonBuider的数据同步方式


  • 用户在沙箱环境进行开发的单据、表单、报表、智能分析以及基础档案的话可以通过“构建平台”- 传输包管理、传输包部署、传输包上载等方式将数据同步到其他租户
  • 如果用户想复现生产的问题,也可以通过以上方式将生产的数据同步到沙箱环境
  • 如果用户想用外部的数据源进行数据分析的话,需要“智能分析平台”模块

四、系统集成方式


  • 基于YonBuilder方式构建的应用发布后只需要通过openApi进行调用,事件回调等进行集成
  • 融合模式构建的应用可以通过SSO方式登录到YonSuite,事件回调等进行集成

五、用友云产品基于YonBuilder开发规范


1. ISV编码规则

  • 专业版自建应用编码(标准版系统自动创建):I${两位ISV编码}${1位数字},ISV编码,产品编码为数字、小写字母组合。

  • 引擎编码:i${两位ISV编码}${1位数字},ISV编码,产品编码为数字、小写字母组合。

  • 实体编码: I${两位ISV编码}${1位数字}_${实体编码}(大写字段I+两位大写产品编码+1位数字), 产品编码、实体编码长度不限制,为数字、字母组合,依次类推。例如有个齐力条码项目,我们可以指定ISV编码为 ql, 需要创建的实体为条码打印:barprint,那么实体编码为 ql1_barprint

  • 枚举、函数编码同实体编码规则

  • 流水线编码分为前端、后端、移动端分别为 I${两位ISV编码}${1位数字}-${env}-fe, I${两位ISV编码}${1位数字}-${env}-be, I${两位ISV编码}${1位数字}-${env}-mobile , ${env}为环境, 开发-dev, 生产-pro

2. 域名使用规范

  • 公有云可以使用公有云域名
  • ISV用户需要使用用友生态业务部创建的域名 ${ISVName}.yonisv.com
  • 测试环境和生产环境需要两个不同的域名

3. 数据建模规范

  • 新建的数据实体字段可以使用字母、下划线、数字,实体编码为:${两位ISV编码}${两位产品编码}_${实体编码}。主、子表不用创建ID字段,系统会自动创建。子表实体不允许blob数据类型
  • 添加的字段一旦发布后尽量不要删除, 因为需要一系列的原数据需要同步删除。
  • 引用接口说明参考如下,如果需要的话可以沟选,不需要的话先不用沟通,不会产生多余的字段
     ** 审批:支持审批流
    
    • 业务流:如果需要进行推单拉单的话,需要勾选业务流
    • 交易类型:根据该类型区分不同的单据,也是生成不同单据的标志
    • 树型结构:支持树型结构保存
    • 自动编码:支持业务单据按钮“编码规则”进行自动编码
    • 档案状态:支持启用、停用标志
    • 主组织: 该单据支持组织
  • 数据实体支持,单表、主子表、一主多子、主子孙表形式
  • 数据类型支持大多数的数据类型,如文本、数值、图片等

4. 页面建模规范

  • 页面修改之后需要重新进行发布,发布后需要重新刷新页面。
  • 目前页面名称不允许重复,删除页面后数据暂时存储的,过一段时间会清理历史数据。

5. 流程&自动化规范

  • 函数分为前端、后端、API函数,针对不同的数据类型选择不同的函数
    • 前端函数针对前端进行编写,用于编写一些事件,需要遵循前端的规范
    • 前端函数可以调用后端函数或者API函数
    • 后端函数用于进行后端数据调用,比如查询某个数据。也可以进行http接口的访问等

6. 集成配置规范

  • 通过应用构建的单据需要将API发布、授权后才可以进行外部调用
  • 发布的API,但是未经授权的API则不能通过通过外部调用

7. 发布规范

  • 发布管理页签中分组列表中分组列表也要好好命令,否则发布的菜单也是这个名字
  • 所有更新的页面需要重新进行发布
  • 发布后的页面需要进行授权后才可以看到

六、用友云产品基于脚手架规范


1. 脚手架的GIT推送代码注意事项

  • 只允许推送一次git代码,再次推送将覆盖原有代码。注意、注意。

2. 脚手架的前端说明

  • 前端脚手架的结构,需要按以下的说明进行前端文档编写。
packages/mdf-app
├── docs
│   └── mdf-intro.md
├── manifest.development.json
├── manifest.production.json
├── package.json
├── pm2.json
├── src
│   │── business                    # 业务扩展脚本(JS)
│   │   └── common
│   ├── client
│   │   ├── index.jsx
│   │   └── styles            # 业务样式代码
│   │       └── default
│   ├── common
│   │   ├── extends             # 扩展UI元数据中的控件类型(React 组件方式)
│   │   │   ├── basic         # 基础控件扩展
│   │   │   ├── formatter     # 格式化
│   │   │   ├── home
│   │   │   ├── index.jsx
│   │   │   ├── meta          # 扩展容器组件
│   │   │   ├── modal         # 扩展模态框
│   │   │   ├── popover
│   │   │   ├── portal         # 扩展页面
│   │   │   └── toolbar
│   │   ├── config.env.js            # 全局环境变量配置
│   │   ├── config.comp.js       # 组件交互扩展入口registerMetaComp
│   │   ├── registerMetaComp.js # 注册扩展组件
│   │   ├── pages
│   │   │   └── demoRouter
│   │   └── redux
│   │       ├── Isomorph.jsx
│   │       ├── reducers.jsx
│   │       ├── routes.jsx
│   │       └── store
│   └── server                                  # Node Server 相关
│       ├── controllers
│       │   ├── amap.js
│       ├── env
│       │   └── index.jsx
│       ├── index.js
│       ├── middlewares
│       │   └── viewhook
│       └── router.js
├── static                                          # 无需编译的静态资源
│   ├── scripts
│   │   ├── font.js
│   │   ├── vendor.js
│   │   ├── vendor.js.map
│   │   ├── vendor.min.js
│   │   ├── vendor.min.js.map
│   │   └── yonyou-yyy.js
│   ├── styles
│   └── ueditor
│       
├── webpack.dev.config.js               # 基于Webpack的前端编译脚本
├── webpack.dll.config.js
├── webpack.package.config.js
└── webpack.prod.config.js

3. 脚后架的后端说明

  • 后端脚手架工程结构如下
    • ${projectName}-be, 总模块,里边将所有模块汇总起来,新加的模块需要加到此工程的pom文件中
    • dev-${projectName}-bootstrap,该模块用于启动相关所需要的数据,一般我们自己建的module需要加入到依赖里边,才可以正常使用
    • dev-${projectName}-extend,该模块用于实现扩展模块,里边可以进行事件、后端函数、规则链定义,用于实现一些原厂的一些扩展功能
    • dev-${projectName}-isv, 用于给isv开放的个别功能,比如sso模块,规则的保存、提交、删除等
    • dev-${projectName}-mobile, 用于移动端的接口调用、token等方法
    • dev-${projectName}-app, 应用级模块处理,用于处理一些授权、cookie、流程等
  • 后端代码规范
    • 如果自己创建的module,里边的类路径可以遵循用友的包创建规则,也可以使用自己创建的包命名规则,这个时候需要在包扫描类中加入到@ComponentScan注解中,类为com.yonyou.ucf.mdf.MDFApplication
    • 遵循一些基本的开发规范,比如不用在变量名中使用$或_,不能使用中英文混合含义变量,if语句里边处理的内容要用大括号括起来等避免一些基本的问题出现
    • 使用lambda表达式的时候一定要注意提前做空判断和处理,避免出现NPE错误
    • 如果涉及到跨域的情况,需要将ISVWebMvcConfigurer类的UCFCoreProperties类进行重写或重载,加入到自己需要的域名即可

4. 数据库字符集

  • 数据库导出的脚本要自己指定一下字符集"utf8mb4",然后再导入到数据库。为以后索引使用。
Copyright © 用友 -【生态技术部】 2021 all right reserved,powered by Gitbook修订时间: 2022-01-10 17:44:43

results matching ""

    No results matching ""