首页 > 其他分享 >优维低代码实践:数据加工/转化详解

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

时间:2023-06-27 18:00:34浏览次数:46  
标签:ctime 代码 item 编排 详解 函数 优维低 表达式 属性

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

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


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

《数据加工/转化详解》

一、表达式

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

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

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

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()
        }))
      }
    %>

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

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

二、微应用函数

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

2.1 新增函数

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

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

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

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 ?? "待研发" %>

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

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

三、结语

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

标签:ctime,代码,item,编排,详解,函数,优维低,表达式,属性
From: https://blog.51cto.com/u_15605878/6564804

相关文章

  • PHP代码加密实战过程 Swoole Loader
    帮一个客户处理一个小程序bug修复,前面不知道客户是直接购买一个倒闭的公司产品,还是破解版本的。其中一些核心工具类代码进行了加密,通过排查就找到了SwooleCompiler 今天演示下如何进行代码加密:大致步骤如下:注册 SwooleCompiler 账号地址:Swoole-Compiler-最佳PHP......
  • 怎么部署代码到git上,并配置idea 拉取代码等操作
     怎么部署代码到git上,并配置idea拉取代码等操作?1要将代码部署到Git上并配置IDEA以拉取代码,您可以按照以下步骤进行操作:231.创建一个Git仓库:首先,在Git托管平台(如GitHub、GitLab、Bitbucket等)上创建一个新的仓库。请根据您的需求进行设置,并获取仓库的URL。452.......
  • 代码优化
    代码优化1.使用对象池减少对重复对象的创建,比如tcp链接、数据库链接、多线程2.调整连接数,连接池、数据库链接数、tomcat、nginx连接数3.利用缓存技术增加缓存、本地缓存(tomcat内存之中,不走网络)、redis缓存4.串行改并行,即单线程改多线程5.同步改异步,使用场景:本次调用接口的结果会影......
  • 三层代码生成器
    packagecom.uma.hsnn.util;importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.core.exceptions.MybatisPlusException;importcom.baomidou.mybatisplus.core.toolkit.StringUtils;importcom.baomidou.mybatisplus.generator.AutoGe......
  • 【HarmonyOS】低代码开发使用module中的自定义组件
     “Module是应用/服务的基本功能单元,包含了源代码、资源文件、第三方库及应用/服务配置文件,每一个Module都可以独立进行编译和运行。一个HarmonyOS应用/服务通常会包含一个或多个Module,因此,可以在工程中创建多个Module,每个Module分为Ability和Library两种类型。”这个是HarmonyOS......
  • 计算执行特定代码所花费的时间
    计算执行特定代码所花费的时间━━━━━━━━━━━━━━━━━━━━━━importtimestarttimetime.time()a=1b=2c=a+bprint(c)#3endtime=time.time()totaltime=endtime-start_timeprint("Time:"totaltime)#('Time:',1.1205673217773438e-85)......
  • python:一行代码读写文件
    1、读取文件lst=[line.strip()forlineinopen('data.txt')]print(lst)这里我们使用列表来处理。首先,我们打开一个文本文件,并使用for循环,逐行读取。最后,使用strip删除所有不必要的空间。通过使用列表功能,使得代码更简单,更短。list(open('data.txt'))##Usingwithwi......
  • 静态代码检测工具十大特点
    静态代码检测工具是现代软件开发流程中不可或缺的一环。它可以在代码编写过程中自动检测出潜在的错误和漏洞,帮助开发者在测试和上线前尽早发现和解决问题,从而提高代码质量和开发效率。静态代码检测工具主要有以下几个特点:一、自动化检测静态代码检测工具不需要运行软件,可以直接......
  • 分布式锁的实现方式介绍和代码示例
    分布式锁的实现方式介绍分布式锁是一种用于分布式系统中实现互斥访问的机制。在分布式系统中,多个进程或线程可能同时访问共享资源,为了保证数据的一致性和正确性,需要使用分布式锁来实现资源的互斥访问。分布式锁的基本原理是通过在分布式环境下协调各个节点之间......
  • 国内好用的五款低代码平台,你用的哪一款?
    随着信息化技术的发展,软件开发领域也在不断更新迭代,在企业数字化升级的浪潮中,低代码平台的应用也越来越广泛。从业务系统到办公软件,从BI分析到移动开发,越来越多的企业和IT团队开始使用低代码平台来构建数字化应用,加快自身数字化转型进程。然而在国内市场中,低代码平台产品丰富多样,......