本文介绍如何通过工作流 ASW 编排云函数,快速完成订单数据的处理。

工作原理

  1. 工作流调用函数获取一定时间段内的订单数据,对数据进行预处理。
  2. 将预处理的数据交给 Map 迭代任务处理:每个订单进行数据处理后,分别写到不同的数据库表中,或者绘制成图表展示。

操作步骤

创建工作流程需要首先创建一个状态机,通过编排状态机的不同元件,改变状态机结构,从而实现用户自定义的功能集合。

简单三步即可完成:创建云函数 → 创建工作流 → 运行状态机

Step 1:创建云函数

创建 GetOrder 函数

  1. 登录 云函数控制台,单击左侧导航栏的【函数服务】。
  2. 在主界面上方函数服务区域选择广州,并单击【新建】,进入函数创建流程。
  3. 在新建函数页面,基本信息中填写以下信息:
    • 函数名称:GetOrder。
    • 运行环境:Nodejs10.15。
    • 创建方式:选择空白函数,单击【下一步】进入函数配置。
  4. 在函数配置页面中的 Cloud Studio 窗格中,删除原有代码,复制如下所示的代码:
   'use strict';exports.main_handler = async (event, context) => {console.log("this is get order function");# 您可以通过api请求获取真实的订单数据,样例中数据方便模拟工作流执行var orderlist = [{"orderId":"202012200001","goodsId":"1004","goodsName":"橘子#1004","unit":"件","specific":"5斤一箱","linePrice":100,"salePrice":90,"costPrice":80,"number":30,"isVoucher":1,"voucherPrice":2,"voucherId":"3dr55678hj","isDiscount":1,"discountPrice":3,"carriage": 8,"receiver":"susu","phone":"18633567898","address":"深圳市南山区腾讯大厦20楼","createTime":"2020-12-20 10:00:00","payTime":"2020-12-20 11:00:00","payMethod":1, "payOrder":"202012201100003940","orderStatus":3,"deliveryTime":"2020-12-21 11:00:00","finishTime":"2020-12-25 11:00:00","deliveryOrder":"ZT12345789d786","isReturn":1,"returnId":"2020122600012","returnNumber":2,    },{"orderId":"202012200001","goodsId":"2001","goodsName":"梨子#2001","unit":"件","specific":"6斤一箱","linePrice":150,"salePrice":120,"costPrice":90,"number":20,"isVoucher":1,"voucherPrice":3,"voucherId":"3dr55678hj","isDiscount":1,"discountPrice":5,"carriage": 0,"receiver":"susu","phone":"18633567898","address":"深圳市南山区腾讯大厦20楼","createTime":"2020-12-20 10:00:00","payTime":"2020-12-20 11:00:00","payMethod":1, "payOrder":"202012201100003940","orderStatus":3,"deliveryTime":"2020-12-21 11:00:00","finishTime":"2020-12-25 11:00:00","deliveryOrder":"ZT12345789d786","isReturn":0,"returnId":"","returnNumber":0,        },{"orderId":"202012200001","goodsId":"3005","goodsName":"香蕉#3005","unit":"件","specific":"10斤一箱","linePrice":180,"salePrice":150,"costPrice":98,"number":6,"isVoucher":1,"voucherPrice":8,"voucherId":"3dr55678hj","isDiscount":1,"discountPrice":20,"carriage": 0,"receiver":"susu","phone":"18633567898","address":"深圳市南山区腾讯大厦20楼","createTime":"2020-12-20 10:00:00","payTime":"2020-12-20 11:00:00","payMethod":1, "payOrder":"202012201100003940","orderStatus":3,"deliveryTime":"2020-12-21 11:00:00","finishTime":"2020-12-25 11:00:00","deliveryOrder":"ZT12345789d786","isReturn":1,"returnId":"2020122600013","returnNumber":3,        }];return {"orderList":orderlist};};
  1. 单击【保存】,则成功创建了云函数

创建 ProcessOrder 函数

参考【创建 GetOrder 函数】的方式,创建 ProcessOrder 函数,代码如下:

'use strict';
exports.main_handler = async (event, context) => {console.log("this is processOrder function");var order = event;#数据处理var income = order["salePrice"]-order["costPrice"];var goodsInfo = {"goodsId":order["goodId"],"goodsName":order["goodsName"],"number":order["number"]};var incomeInfo = {"goodsId":order["goodId"],"goodsName":order["goodsName"],"number":order["number"],"income":income};return {"goodsInfo":goodsInfo,"incomeInfo":incomeInfo,"salesInfo":salesInfo};
}

创建 GoodsSold 函数

参考【创建 GetOrder 函数】的方式,创建 GoodsSold 函数,代码如下:

'use strict';
exports.main_handler = async (event, context) => {console.log("this is goodsSold function");//一些写入数据库或者图表展示操作console.log(event);return "GoodsSold success";
};

创建 Income 函数

参考【创建 GetOrder 函数】的方式,创建 Income 函数,代码如下:

'use strict';
exports.main_handler = async (event, context) => {console.log("this is income function");//一些写入数据库或者图表展示操作console.log(event);return "Income success";
};

创建 SalesReturn 函数

参考【创建 GetOrder 函数】的方式,创建 SalesReturn 函数,代码如下:

'use strict';
exports.main_handler = async (event, context) => {console.log("this is salesReturn function");//一些写入数据库或者图表展示操作console.log(event);return "SalesReturn success";
};

Step 2:创建工作流

  1. 登录 应用与编排服务流控制台。
  2. 在状态机页面,单击【新建】,进入创建工作流页面中,选择使用【代码创建】:

  1. 直接在代码编辑框中粘贴以下 TCSL 代码:
   {"Comment": "订单处理","StartAt": "GetOrder","States": {"GetOrder": {"Type": "Task","Comment": "拉取数据","Resource": "qrn:qcs:asw:ap-guangzhou:12345678:sdk:json:qcloud:scf:Invoke/GetOrder","Next": "MapProcess"},"MapProcess": {"Type": "Map","ItemsPath": "$.orderList","MaxConcurrency": 6,"Iterator": {"StartAt": "ProcessOrder","States": {"ProcessOrder": {"Type": "Task","Resource": "qrn:qcs:asw:ap-guangzhou:12345678:sdk:json:qcloud:scf:Invoke/ProcessOrder","Next": "ParallelDataProcess"},"ParallelDataProcess": {"Type": "Parallel","End": true,"Branches": [{"StartAt": "GoodsSold","States": {"GoodsSold": {"InputPath": "$.goodsInfo","Type": "Task","Resource": "qrn:qcs:asw:ap-guangzhou:12345678:sdk:json:qcloud:scf:Invoke/GoodsSold","End": true}}},{"StartAt": "Income","States": {"Income": {"InputPath": "$.incomeInfo","Type": "Task","Resource": "qrn:qcs:asw:ap-guangzhou:12345678:sdk:json:qcloud:scf:Invoke/Income","End": true}}},{"StartAt": "SalesReturn","States": {"SalesReturn": {"InputPath": "$.salesInfo","Type": "Task","Resource": "qrn:qcs:asw:ap-guangzhou:12345678:sdk:json:qcloud:scf:Invoke/SalesReturn","End": true}}}]}}},"End": true}}}
  1. 单击右上角【下一步】,进入保存界面,输入状态机名称,运行角色选择【新建角色】,类型选择【标准状态机】,单击右上角【完成】,在状态机列表页可以看到创建好的状态机。

使用已有角色需要先创建角色,并给角色授权相关策略,操作详情参考 运行角色。

Step 3:运行状态机

状态机创建完成后,您可以在登录后的主页面查看创建好的状态机。

  1. 单击需要运行的状态机的【名称】,进入状态机。

  1. 您可以在界面中看到状态机的基本信息。单击【工作流执行】下的【开始执行】 。

  1. 在弹出的“输入”窗口中,以 JSON 格式输入状态机需要的输入内容。例如:
{"comment": "invoke workflow"}
  1. 单击【确定】,完成状态执行后,可以在详情页查看执行结果:

  1. 滑动至页面最下方,在【执行历史记录】条目下,您可以查看子节点的运行情况。

上述步骤介绍了一个订单数据处理场景的基本工作流流程。

真实的业务场景中每个 Task 节点会涉及配置一些相关参数信息,例如做参数传递、异常重试和错误捕获处理等,更多详情参考 状态机语言。

申请试用 ASW

ASW 目前处于公测阶段,公测阶段免费提供服务。欢迎提出产品改进建议,反馈采纳后即可获得腾讯萌新短鹅公仔!

立即申请公测,我们将会在 3 个工作日内完成审批,并通过短信和站内信通知您,感谢您的支持。

One More Thing

立即体验腾讯云 Serverless Demo,领取 Serverless 新用户礼包

简单三步,通过工作流(ASW)快速完成订单数据处理相关推荐

  1. 简单三步,教你快速接入淘宝开放平台,调用官方API

    淘宝开放平台是为了方便开发者接入淘宝平台,进行商品.订单等信息的管理和交互而设计的.接入淘宝开放平台需要经过一系列审核和申请流程,而在API权限包审核时,一定要提供真实有效的证件和资料,并满足相应的条 ...

  2. qchart 怎么点击一下 出一条线_新手修眉教程:初学者怎么自己修眉毛?简单三步图解让你快速学会...

    对于眉毛够多的人来说,修眉很重要,有了一个好看的眉型,就算是不画眉毛,也能好看哦.所以修好眉毛比化好眉毛还重要呢,特别是对于初学化妆的人来说,修眉还是有点难度.那么,初学者怎么修眉呢? 新手修眉教程- ...

  3. 简单三步 用Yolov5快速训练自己的数据集

    简单三步 !用自己的数据集快速训练Yolov5模型 文章目录 简单三步 !用自己的数据集快速训练Yolov5模型 1 第一步:准备好划分完的数据集 2 第二步:写一个数据集的配置文件 3 第三步:修改 ...

  4. 如何将jpg图片做成gif?教你简单三步快速做gif

    想要将jpg格式的静态图片制作成gif格式的动态图片,应该如何操作呢?很简单,使用gif动态图片制作(https://www.gif.cn/)工具-[GIF中文网]的gif合成功能,简单三步就能轻松制 ...

  5. 简单三步,使用 Docker 搭建一个多端同步网盘!

    原文地址:https://www.jianshu.com/p/54f157a211af  作者:zhaoolee 搭建环境: 第一步:安装docker 第二步: 获取nextcloud镜像, 完成网盘 ...

  6. 照片模糊怎么办?教你简单三步瞬间修复照片清晰度!

    清晰度低的图片看起来比较模糊,不方便我们使用,为了快速提高图片的清晰度,我们可以借助专门的图片处理工具,只需要上传图片即可进行修复,效率很不错. 不管是网上下载的照片还是平时手机自己拍摄的相片,太模糊 ...

  7. 搭建公司内部论坛 只需简单三步 1 (安装Discuz)

    系列文章 ​​​​​​​搭建公司内部论坛 只需简单三步 1 (安装Discuz) 搭建公司内部论坛 只需简单三步 2 (发布Discuz) 随着公司快速发展,人员也越来越多,但员工人数多也会带来问题, ...

  8. 简单三步搭建公司内部论坛:安装部署Discuz 1-2

    系列文章 简单三步搭建公司内部论坛:安装部署Discuz 1-2 简单三步搭建公司内部论坛:将论坛发布公网 2-2 随着公司快速发展,人员也越来越多,但员工人数多也会带来问题,就是小群组也越来越多.虽 ...

  9. 简单三步!教你用前端表格控件SpreadJS做购物车

    SpreadJS结合40余年专业控件技术和在电子表格应用领域的经验而推出的纯前端表格控件,基于 HTML5,兼容 450 多种 Excel 公式,具备"高性能.跨平台.与 Excel 高度兼 ...

最新文章

  1. 操作系统学习:内存分页与中断
  2. AI 机器人也能成佛?日本人觉得可以。
  3. maven中pom文件解析
  4. The operation could not be performed because OLE DB provider SQLNCLI11 for linked server SDSSDFCC...
  5. clickhouse 物化视图_再谈clickHouse:微博基于 ClickHouse 监控百亿流量下的指标
  6. linux下高可用性群集和负载均衡群集的实现
  7. 开发管理·华为IPD
  8. 全国计算机绘图师第三期工业产品,工业产品类CAD技能等级考试试题集
  9. 精细化运营探索:基于响应模型场景化应用
  10. 终极算法——第一章:机器学习的革命
  11. 全国计算机考试等级考务管理系统,全国计算机等级考试考务管理系统:https://ncre-bm.neea.edu.cn/...
  12. 问题解决:opencv imwrite图片保存为黑色
  13. 【超简单】latex 参考文献 引用 跳转 多余的空格
  14. scrum要素读书笔记
  15. 学习笔记之——Python中类和对象的理解
  16. Linux系统---Discuz论坛网站创建部署
  17. [06.21] LinkLabel 代码重构和我的SinaWeibo7 Project Todolist
  18. C#开源组件NPOI处理Excel导入DataTable数据至Sheet
  19. Navicat远程连接Linux上的Mysql数据库
  20. 181216 MacOs上如何将多页PDF文件合成打印在一张PDF表单上面

热门文章

  1. ERP实施过程可能存的问题
  2. JAVA打车拼车系统服务端计算机毕业设计Mybatis+系统+数据库+调试部署
  3. 【JAVA SE】一篇文章带你弄懂抽象类与接口
  4. 某月某日前包括当天吗_合同约定的某日之前履行,是否包括该日当天履行
  5. 金融直播系统一般包含哪些功能?
  6. Mop行话经典(转)
  7. stm32cube学习1-rcc配置选择
  8. 青龙面板之KS普通版、极速版(3/19更新)
  9. java毕设项目家庭安防系统(附源码)
  10. WIN10在文件夹对着文件点击右键无反应!鼠标一直在转圈圈然后会文件夹处会显示未响应!