Appearance
深入
在了解完织信的基础能力后,深入阶段将介绍将指导用户完成长流程、多模块、有定制交互需求的复杂业务开发。例如开发项目管理、ERP等综合性业务系统。
表达式
平台使用的表达式采用的是JUEL标准,它是UEL标准的实现,UEL实现是J2EE开发中的JSTL表达式规范。表达式执行分为服务器端和客户端,表达式执行时可使用上下文变量进行动态计算。 平台内的表达式除了基础的逻辑计算外,平台还提供了对于Array(集合)
、Date(日期)
、Math(数学计算)
、String(字符串)
、User(应用成员)
、Record(数据表记录)
、 Context(数据上下文)
、Misc(工具集)
、Encode(编解码)
数据操作。
表达式能力
- 集合:创建、拼接、元素包含判定、求和、平均数、获取集合元素等
- 日期:系统时间、日期操作、对比计算等
- 数学计算:绝对值、平方、随机、立方、四舍五入等
- 字符串:拼接、左右填充、截取、字符替换等
- 应用成员:用户查询、归属部门查询等
- 数据表记录:记录按照ID、字段值查询等
- 数据上下文:获取应用ID、用户ID、环境变量读取、权限判断等。
- 工具集:数据类型转换、调用脚本/自动化/API、SQL预处理等。
- 编解码:MD5计算、url地址转译等
使用场景
- 数据表权限:满足条件时允许查看、修改、删除数据
- 数据表字段:条件隐藏/编辑、动态取值等
- 控件权限:满足条件隐藏或禁用控件等
- 自动化:基于上下文数据计算变量值等
- 模块:模块名称、模块角标、描述等
注意事项
因此对于需要逻辑运算的部分需要使用${}进行包裹,比如${Date.sysdate()}获取当前时间。
自动化
平台的自动化提供了一个图形化的函数式编程功能,一个自动化等同于传统代码开发模式下一个“函数”的概念。自动化中包含了输入、输出、变量定义、循环、条件控制、调用其他自动化等完备的编程步骤。用户可根据自己业务需求结合系统提供的自动化原子性步骤,实现对数据表、工作流、http请求、界面交互等操作。可以在定时任务、监听器、API场景中中调用自动化,实现场景需求。
平台提供了数据表
、控制与变量
、函数
、AI
、工作流
、界面交互
等分类的自动化步骤。在不同的业务场景下,可通过自动化步骤组合实现。
脚本
平台脚本采用ES6语法规范实现,同时兼容ES5语法。平台会向脚本的运行环境中注入inforamt
上下文,上下文中提供了丰富的平台函数。
服务端脚本
服务端脚本:脚本运行在由平台集成的GraalVM引擎来执行,通过搭配JS原生语言和系统内置的informat
对象,实现对应用、数据表、工作流、自动化等的数据调用。服务端脚本支持npm方式导入第三方库。
服务端脚本提供了aiagent(AI助手)
、app(应用)
、bpmn(工作流)
、codec(数据编码)
、company(团队)
、console(日志)
、csv(CSV文件操作)
、date(日期)
、 dept(组织架构)
、 email(邮件)
、excel(EXCEL文件操作)
、file(沙盒文件操作)
、ftp(FTP工具集)
、sftp(SFTP操作)
、http(HTTP请求)
、jdbc(数据库JDBC)
、ladp(AD域)
、 mpp(Project文件读取)
、mq(消息队列)
、notification(系统通知)
、redis(内存缓存)
、storage(共享存储)
、survey(问卷调查)
、system(系统函数)
、 table(数据表)
、transaction(数据库事务)
、user(应用成员)
、 utils(工具函数)
、website(网站资源)
、word(WORD文件操作)
、xml(XML操作)
等丰富的功能模块,通过系统提供功能模块和原生脚本结合,在一些逻辑复杂场景下更加实用。
使用提示
- 服务器端脚本支持使用git进行管理。
- 服务器端脚本与自动化在功能上有交叉,在一些逻辑复杂自动化步骤众多的场景下,推荐直接使用脚本来实现。
客户端脚本
客户端脚本:脚本运行在浏览器运行环境中,浏览器环境支持的支持的函数均可使用,除此之外平台额外提供了system(系统)
、 app(应用)
、http(网络操作)
功能模块,可以通过平台功能模块快速的完成系统功能的调用。
选项值字典
平台的选项值字典等同于传统代码开发模式下的数据字典概念。
选项值字典数据源
- 设计器内定义分类可选项值
- 来自于系统内的一个数据表。选项值字典定义完成后,可以在数据表的列表选择、下拉选择、级联选择等字段中使用。
注意事项
设计器内定义分类可选项值是固定不变的;如果选项值字典项在使用时需要有添加、更新、删除操作,需要通过修改选项值字段为来自于数据表
使用场景
- 多个模块的选择型字段具有相同的选项定义
- 选择型字段中的可选项使用时会跟随业务发展而发生变化
监听器
监听器是在不同场景下处理由平台内派发的事件。支持监听应用、数据表、视图、表单等范围下的事件,通过配置调用脚本或自动化处理
可用监听器
使用场景
- 使用应用监听器,监听用户进入应用、模块,并做出相应的数据逻辑
- 使用应用监听器,监听数据表记录创建、更新、删除变动,进行下一步的处理或上报第三方系统
- 使用数据表监听器,监听数据表字段值变化后,执行表单字段动态赋值或上报变更
- 使用数据表视图监听器,监听用户点击记录行为,实现数据联动
主题样式
平台内支持通过编写css样式,覆盖平台内登录页、工作台、应用、模块、仪表盘等功能模块下的页面展示样式。
平台会在模块被访问时,将CSS内容动态插入到当前页面,离开模块时自动移除插入的模块样式,以此解决模块间的样式冲突问题。
使用场景
- 隐藏系统页面功能
- 覆盖系统页面样式
- 修改系统页面布局方式
数据查询优化
随着业务的开展数据表内的数据量达到一定的数据量级比如百万级以上的数据,整个数据的操作效率会降低,这种场景下我们可以根据业务使用需求通过添加数据表字段索引或者数据分区优化数据操作效率,提升用户体验。
对于大部分字段,织信会根据实际使用场景自动的建立索引,如果业务场景需要也可以单独为字段建立数据库索引
- 普通索引:对单个或多个字段进行索引,在用户查询数据命中索引字段可加快查询效率
- 唯一索引:对单个或多个字段进行索引,保证数据的唯一性。唯一索引是数据库的原生行为,在一些并发场景中可避免数据的重复。
在一些大型业务系统中,单表数据量到达一定级别后,数据查询效率会明显下降。优化的手段有对数据库分库、数据表分表、数据表进行分区。
数据库分库、数据表分表
业务侵入性太强,需要手动操作分库和分表,需要在代码层面处理用户查询行为的具体路由的数据库和数据表,并且在一些场景下未命中分库和分表规则时,需要对所有库或表进行扫描操作,该场景下性能会急剧下降。
数据表分区
由数据库底层提供的能力,支持
范围
、值
、哈希
方式进行分区。上层业务在对数据进行查询、新增、更新、删除动作时,有数据库进行判定具体操作的分区表,业务逻辑侵入性低。在未命中分区规则时,数据库也会发生扫描分区的行为,但相较于分库和分表的性能也有较高的用户体验。
分区创建和合并
创建分区
织信平台内对于一张数据表进行分表动作时,平台会创建一个包含分区规则的复制表,并使用数据库创建表时自动插入数据能力,自动完成原数据表数据自动归并到分区中;
合并分区
如果将一个已经分区的表移除分区操作时,平台会创建一个不包含分区规则的复制表,并使用数据库创建表时自动插入数据能力,自动完成原数据表数据自动归并到分区中。
应用依赖
在织信的架构设计中,同一个团队的应用会被分配在同一个数据库内。平台会基于应用再进行一次数据隔离,即应用内的数据操作仅限于本应用内的数据表。 为此平台提供了应用依赖功能,来实现跨应用间的数据交互。在一些单个数据表被多个应用重复使用的情况下,可以将该表的数据作为基础数据单独创建在一个应用中。
使用场景
- 整体构建的应用中包含公共数据,比如OA中的人员,在其他业务的应用中可以直接引用OA应用中的成员数据。
- 单一应用维护外部对接的数据,其他应用通过依赖方式,引入数据。保证数据的唯一性和准确性。
回收站
平台支持回收站功能,支持在数据表中配置数据被删除后的是否进入回收站。回收站默认会清理7天
的删除数据,也可以通过回收站模块调整清理间隔。
例外情况
使用回收站时需要注意,如果模型发生变化后,再将模型变化前的数据恢复可能会出现恢复失败的问题。
应用操作日志
平台支应用级操作日志,操作日志支持记录成员、角色、工作流等数据变化信息。
使用场景
- 数据审计:通过
应用操作日志
模块,为数据追溯和操作行为提供支持 - 行为统计:对
应用操作日志
模块数据进行统计,分析热点模块、用户行为等
应用登录页
平台支持对应用进行单独的登录页配置,配置完成后应用将拥有一个独立的登录入口。用户登录后将直接进入到该应用中。
使用场景
- 应用用户仅有一个应用需要访问,可通过配置应用登录入口,单独开放该入口给相关用户
- 应用集成到第三方平台中,用户登录后自动进入应用中,无需通过工作台跳转
环境变量
平台支持环境变量配置,方便应用在不同环境间部署时动态调整应用内的配置的参数值,比如调用的第三方服务地址,在其他环境运行时需要调整,可通过调整运行环境或者环境变量值实现。
平台环境变量支持通过配置切换应用运行时读取的环境变量值,或者在工作台的应用管理
中,单独调整应用环境变量值。通过这两种方式,可实现应用在不同部署环境迁移部署过程中,无需调整应用设计。
使用说明
平台环境变量值支持设置加密,应用允许时读取值将自动解密,以此保证数据的安全。