优维低代码实践:数据加工/转化详解

news2024/10/6 6:05:48

 

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。


优维低代码实践连载第⑧期

《数据加工/转化详解》

一、表达式

Visual Builder在处理数据时,大部分情况都可以使用表达式,或者微应用函数满足场景;表达式的使用,大多数情况都是针对相对简单的场景,如果场景过于复杂,我们还是推荐使用微应用函数,因为您不仅可以在函数内拥有更多高级语法到操作,还可以针对您的函数编写测试用例,加强微应用的健壮性。

在之前章节已经介绍过一些简单表达式的编写以及它们的含义,本节课讲介绍更加高级的用法,回到我们的编排,我们将给我们的表格增加一列创建时间,那么我们要怎么做呢?

 1.1 表格编排修改

属性面板-属性:
  columns:
    # 略...
    # 以下ctime为新增列
    - dataIndex: ctime
      key: ctime
      title: 创建时间
    - dataIndex: operator
      title: 操作
      key: operator
      useChildren: '[operator]'

1.2 DATA数据修改

# 查询字段入参增加 ctime
Args:
  - TASK_FOR_VB_LESSON
  - fields:
      - name
      - state
      - assignee
      - reporter
      - description
      # 新增查询字段
      - ctime
    page: '${QUERY.page=1|number}'
    pageSize: '${QUERY.pageSize=20|number}'
    query: <% CTX.query %>

修改完毕后, 我们将在预览画布中看到数据更新,但是这个时间太长了,并不是我们想要的,那怎么办呢?

这个时候我们可以使用表达式,对时间进行格式化,只展示日期,下面看下编排怎么修改吧。

1.3 Table表达式加入解析ctime能力

属性面板-属性:
  # 其他不变
  dataSource: |-
    <% 
      "track context", 
      {
        # 解构,
        ...CTX.taskList ?? {},
        # CTX.taskList.list 遍历,将其中的ctime进行处理
        list: CTX.taskList?.list?.map(item => ({
          ...item,
          ctime: item.ctime.split(" ").shift()
        }))
      }
    %>

处理完后,数据就变成我们预期的输出啦,如下图:

 二、微应用函数

前文说过表达式大多数情况下只适用于一些简单场景,如果是比较复杂的场景,我们推荐使用微应用函数会比较好,推荐同学有兴趣可以学习 《微应用函数》,那么我们要怎么编写一个函数呢?

2.1 新增函数

 在左侧菜单选择函数菜单,然后点击新增函数按钮,函数名为 test, 类型为 typescript, 点击确定创建函数成功,然后编写我们的方法,具体如下:

 

function test(
  params: Params = {
    list: [],
    totol: 0,
    page: 1,
    pageSize: 20,
  }
): Params {
  const colorMap = {
    待研发: "blue",
    研发中: "yellow",
    研发完成: "green",
  };
  const arr = params.list.map((item) => ({
    ...item,
    stateColor: colorMap[item.state],
    ctime: item.ctime.split(" ").shift(),
  }));


  return {
    ...params,
    list: arr,
  };
}


interface Params {
  list: Array<any>;
  totol: number;
  page: number;
  pageSize: number;
}

最后点击保存,然后点击build & push 按钮,编排即可使用该函数

2.2 编排修改

属性面板-属性:
  # 只需要改这行
  dataSource: '<% "track context", FN.test(CTX.taskList) %>'

在table构件下找到 [state] 插槽下的
presentational-bricks.brick-tag 构件,属性修改如下:

属性面板-属性:
  # 只增加 color 属性
  color: <% DATA.rowData.stateColor %>
  showCard: false
  tagList:
    - <% DATA.rowData.state ?? "待研发" %>

最后看下编排预览画布,是符合我们的预期的

 三、结语

至此,简单的数据加工转化就完结啦,这个章节对与微应用编排是相当重要的哟~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/692712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5大最热门云原生API Gateway

文章目录 前言&#xff1a;为什么需要API Gateway&#xff1f;一、APISIX二、Kong三、TyK四、Easegress五、Gloo六、API Gateway应该如何选择&#xff1f; 公众号&#xff1a; MCNU云原生&#xff0c;文章首发地&#xff0c;欢迎微信搜索关注&#xff0c;更多干货&#xff0c;…

Windows安装使用Nacos并进行服务治理

Nacos简介 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos其实就是一个注册中心,用来管理和注册微服务 搭建Nacos环境 安装nacos(版本1.1.4) 下载网址 htt…

【AIGC】ChatGLM2-6B大模型 据称推理性能超越Chat4.0

ChatGLM2-6B ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本&#xff0c;在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上&#xff0c;ChatGLM2-6B 引入了如下新特性&#xff1a; 更强大的性能&#xff1a;基于 ChatGLM 初代模型的开发经验&…

Flink CDC 2.4 正式发布,新增 Vitess 数据源,更多连接器支持增量快照,升级 Debezium 版本

Flink CDC 2.4 正式发布&#xff0c;新增 Vitess 数据源&#xff0c;更多连接器支持增量快照&#xff0c;升级 Debezium 版本 1. Flink CDC 简介2. Flink CDC 2.4 概览3. 详解核心特性和重要改进3.1 深入解读3.2 其他改进 4. 未来规划 1. Flink CDC 简介 Flink CDC [1] 是基于…

皓峰防火墙存SQL注入复现

简介 深圳市皓峰通讯技术有限公司成立于2004年&#xff0c;位于深圳市高新技术产业园&#xff0c;是经过国家认定的“双软”企业和“国家高新技术企业” 登陆界面如下 复现 fofa 搜索 app"皓峰防火墙系统登录" 抓取登录的post包 POST /login.php HTTP/1.1 Host:…

专项练习13

目录 一、选择题 1、1true的返回值是true&#xff0c;这句话是否正确&#xff1f; 2、下列关于JavaScript中变量的说法&#xff0c;错误的是&#xff1f; 3、以下哪些表达式的结果为true&#xff08;&#xff09; 二、编程题 1、将数组参数中的数字从大到小进行排序并返回 一…

CVE-2023-34541 LangChain 任意命令执行

漏洞简介 LangChain是一个用于开发由语言模型驱动的应用程序的框架。 在LangChain受影响版本中&#xff0c;由于load_prompt函数加载提示文件时未对加载内容进行安全过滤&#xff0c;攻击者可通过构造包含恶意命令的提示文件&#xff0c;诱导用户加载该文件&#xff0c;即可造…

ROS:服务通信机制详解

目录 ROS&#xff1a;通信机制一、服务通信机制简介1.1概念1.2作用 二、服务通信理论模型三、服务通信自定义srv3.1目的3.2流程3.2.1创建srv文件3.2.2编辑配置文件3.2.3.编译 四、服务通信自定义srv调用(C)4.1要求4.2流程4.3vscode配置4.4服务端代码4.5客户端代码4.6配置 CMake…

知识图谱相关概念整理

文章目录 1、概论2、什么是知识图谱&#xff1f;3、知识图谱构建3.1、构建知识图谱的生命周期3.2、Schema定义3.3、知识抽取3.4、知识融合3.5、知识存储3.6、知识推理 4、图谱建设的一些经验 1、概论 知识图谱&#xff08;KnowledgeGraph&#xff09;以结构化的形式描述客观世界…

C# Winform DataGridView 控件和 DataTable

目录 一、概述 二、DataTable 的用法 1.创建表和列 2.添加行 3.取值和赋值 4.删除行 5.遍历 DataTable 6.判断 DataTable 列中是否存在某个值 7.设置主键 8.获取 DataRow 所在的行号 9.DataTable 转换为 List 10.将 List 转 DataTable 三、DataGridView 的用法 1…

记录好项目D16

记录好项目 你好呀&#xff0c;这里是我专门记录一下从某些地方收集起来的项目&#xff0c;对项目修改&#xff0c;进行添砖加瓦&#xff0c;变成自己的闪亮项目。修修补补也可以成为毕设哦 本次的项目是个电影购票系统 一、系统介绍 前台 普通用户注册、登录、注销 用户…

Redis哨兵——单机安装部署

Redis哨兵——单机安装部署 目录 主从配置&#xff1a; 部署redis哨兵&#xff1a; 结 果 验 证&#xff1a; 主从配置&#xff1a; 1.安装epel源&#xff1a;yum install epel-release -y 2.安装软件&#xff1a;yum install redis -y 3.新建文件夹便于验证&#xff1a;m…

DAY31:回溯算法(六):子集+子集Ⅱ+递增子序列(经典子集问题)

78.子集 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[],[1],[2],…

Label,RC,HPA

上面简单说了一下 pod 的基本知识点&#xff0c;待到后面会使用到 pod 的一些高阶知识点的时候&#xff0c;还可以再细细琢磨底层原理 我们接着继续学习 Lable &#xff0c; RC&#xff0c;HPA 的相关知识点 Label 是什么&#xff1f; label 就是标签&#xff0c;例如之前我们…

Redis进阶 - Redis哨兵

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis进阶 - Redis哨兵 | CoderMast编程桅杆https://www.codermast.com/database/redis/redis-advance-sentinel.html 思考 slave 节点宕机恢复以后可以找 master 节点同步数据&#xff0c;那么 master 节点宕机怎么办&am…

Vue事件捕获和事件冒泡

什么是事件&#xff1f; 当一个HTML元素产生一个事件时 该事件会在元素节点与根节点之间的路径传播&#xff0c; 路径所经过的节点都会收到该事件&#xff0c;这个传播的过程叫做DOM事件流 什么是事件捕获&#xff1f;(网景) 事件捕获&#xff1a;事件捕获会从document开始触…

神经网络如何入门?

推荐《Python神经网络编程》这本入门书。豆瓣评分9.2。 如果你可以进行加、减、乘、除运算&#xff0c;那么你就可以制作自己的神经网络。我们使用的最困难运算是梯度演算&#xff08;gradient calculus&#xff09;&#xff0c;但是&#xff0c;我们会对这一概念加以说明&…

基于Java+Springboot+Vue的校园爱心捐赠互助管理系统设计和实现

博主介绍&#xff1a;擅长Java、微信小程序、Python、Android等&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案例…

Android Studio 找不到 uploadArchives 入口

在4.2之前版本的 Android Studio 中想要module 打包arr&#xff0c;上传Maven 我们只需要 在对应module的build.gradle文件顶部添加 apply plugin: maven然后每一次修改记得要修改版本号&#xff0c;相同版本号提交失败&#xff0c;是不会覆盖的 defaultConfig {......versi…

GitLab+Jenkins实现持续集成自动化测试

一、Jenkins和GitLab互相关联 1、在Jenkins设置gitlab的认证。 1)复制gitlab->clone with HTTP 的URL 如果你想学习接口自动化测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站播放全网第一的接口自动化测试教程&#xff0c;同时在线人数到达1000人…