首页 > 其他分享 >服务编排的从知到行,我做了一个化繁为简的工程师支援小工具

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具

时间:2023-12-13 15:32:44浏览次数:32  
标签:__ 12 name 工程师 知到 编排 10gd000000cEMpInogYS test 化繁为简

梅开二度

前一篇使用华为云 Astro 的工作流,快速完成了活动需求的开发。

在使用过程中,接触到服务编排,文档中介绍到服务编排和工作流有相似性,让我留下对它留下印象。

上篇写完,意犹未尽,正好这篇了解一下服务编排。

接下来,我将体验 华为云 Astro 提供的服务编排功能,熟悉使用流程的同时,考虑它在我实际开发中使用场景

欲善其事,先解其义

简介

服务编排提供了图形化、拖拽式开发的能力,来看华为云官网的完整介绍:

服务编排是一种通过简单的拖拉拽式流程编排以及参数配置的方式,来进行服务开发的能力,并支持对已开发的服务重新进行组合编排。用户能够在服务编排编辑器内,以图形化编排的形式快速地进行服务的开发并扩展出更丰富的业务功能,同时能够与API接口进行绑定,以API的形式对外提供服务。

将代码编程的方式转化为图形化、拖拽式编程的方式,很适合零基础的用户实现自己需要的功能。

结合官网介绍,我们来大致总结一下服务编排的优点。

优点

1、支持已实现的脚本、服务编排等功能进行复用,减少了开发时间。

2、图形化编排以及相关参数配置,不需要有任何编程经验即可完成服务的开发,降低了使用成本。

3、支持与其他模块的互相调用,可支持实现的功能更加全面。

开发流程

整个服务编排的开发流程如下图:

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排

这个流程完整性很强,在创建前,先根据业务场景进行设计,避免开发过程中产生遗漏导致流程不通顺。

想了解更多可以阅读官方文档:如何开发服务编排

工程师支援小工具,化繁为简

通过阅读文档,对服务编排已经有了初步的了解。

阅读完文档:使用服务编排开发业务的基本逻辑,里面分享的呼吸机案例给了我启发。

接下来我准备开发一个工程师支援小工具,练练手。

需求描述

叶一一所在的部门,平均的将所有工程师分成了三个项目组。

最近接到了支援营销活动的开发任务,当某位工程师被某个活动组借走之后,在任务完成前无法接其他活动组的任务。所以需要设计一个简单的工具,高效、便捷的方便营销部门借调工程师。

即:

根据查询到的工程师人数,数据判断当前需要借调人员数量是否支持,并修改相关资源信息。

前置工作

创建对象

1、创建工程师资源对象Programmer,作为工程师支援申请服务处理的对象。

下表为Programmer对象自定义字段:

字段名

字段类型

字段含义

status

文本

工程师当前状态,“空闲”、“支援中”。

name

文本

申请人姓名

2、登录新版应用设计器,选择「数据」,点击「对象」后的➕,进入创建对象页面。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_02

注:如果不清楚如何登录新版应用设计,参考如何登录新版应用设计器中操作。

3、置对象的名称和唯一标识为「Programmer」,单击「确定」。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_03

4、在创建的对象Programmer中,单击编辑图形。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_04

5、在「字段」页签,单击「添加」。

设置字段显示名称和唯一标识为status,字段类型设置为「文本」,单击「确认」。

设置字段显示名称和唯一标识为name,字段类型设置为「文本」,单击「确认」。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_05

启动开发

经过前面的准备工作,就可以进入正式的服务编排开发了。

注:华为云提供的使用服务编排开发业务的基本逻辑文档中,有一个完整的可供参照的呼吸机案例,帮助快速进入服务编排。

步骤1:创建服务编排

1、在左侧导航栏中,选择「逻辑」,单击编排后的「➕」,进入添加编排页面。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_06

2、创建服务编排 ProgrammerFlow,录入必填项,单击「添加」。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_07

步骤2:定义使用变量

1、下表为服务编排使用的变量说明,参照该表可以定义服务编排使用的变量。

变量名

变量类型

变量说明

num

数字

申请的工程师数量。

count

数字

添加到此次申请的工程师资源数组中资源数量。

name

文本

申请工程师的员工。

msg

文本

申请结果。

ProgrammerInfo

Programmer对象

系统中空闲状态下的工程师资源数组元素。

ProgrammerInfos

Programmer对象数组

系统中空闲状态下的工程师资源数组。

ProgrammerRecs

Programmer对象数组

此次申请的原始工程师资源数组。

ProgrammerInfosUpdate

Programmer对象数组

申请成功后,已修改所在地信息和状态的工程师资源数组。

2、参照设置该服务编排的入参和出参。

在服务编排编辑器页面右侧,选择「交换」,展开全局上下文页面。

在全局上下文页面,单击「变量」后的「➕」,创建普通变量。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_08

3、单击新增变量后的「...」,选择「设置」。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_09

4、配置数字类型的变量 num,单击「保存」。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_10

5、参考上述操作,创建其他普通变量count(数字类型)、name(文本类型)和 msg(文本类型)。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_11

6、在全局上下文页面,单击「对象变量」后的「➕」,创建对象变量ProgrammerInfo

对象中选择前置工作中创建的对象Programmer,设置字段描述信息(可选),单击「保存」。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_12

7、创建数组类型对象变量ProgrammerInfos

对象中选择前置工作中创建的对象Programmer,设置字段描述信息(可选),选中「是否为数组」,单击「保存」。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_13

8、依次创建数组类型的对象变量 ProgrammerRecsProgrammerInfosUpdate

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_14

步骤3 设置图元的入参和出参

1、设置开始图元的入参和出参

在画布中,单击「开始」图元。

图元的入参和出参可以直接从「全局上下文」中拖拽过来。

将变量num、nanme、ProgrammerInfos 拖拽到「入参」中,将变量msg、ProgrammerRecs、ProgrammerInfosUpdate拖拽到「出参」中。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_15

注:由于步骤中设置的参数较多,所以大家注意随时保存自己新增的内容,避免发生丢失。

2、开始图元后面新增“赋值”、“循环”、“跳出循环”和“决策”等图元,注意摆放位置。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_16

3、设置循环图元信息。

单击画布中的循环图元,在「基本信息」页面中配置图元“标签”为“循环工程师资源”、“名称”为“LoopProgrammer”。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_17

配置循环图元的循环数据。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_18

4、增加如下图连线。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_19

5、配置赋值图元Assignment0

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_20

设置基础信息,并连向下方发决策图元。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_21

6、配置决策图元Decision1。

设置基础信息

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_22

决策的默认值设置为:ProgrammerNotEnough1

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_23

新增一个:ProgrammerEnough1,并配置公式:

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_24

按照下图增加判断资源是否充足的连线。

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_25

7、配置跳出循环图元Break0。

设置基础信息

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_26

跳出循环设置,选择前面的循环图元LoopProgrammer

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_27

改跳出循环图元赋值图元Assignment2

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_28

8、配置赋值图元Assignment2。

设置基础信息

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_29

配置赋值信息

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_30

9、配置决策图元Decision0。

设置基础信息

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_31

决策的默认值设置为:ProgrammerEnough2

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_32

新增一个:ProgrammerNotEnough2,并配置公式:

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_33

按照下图进行连线

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_34

10、配置赋值图元Assignment1

设置基础信息

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_35

配置赋值信息

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_36

步骤4 调试

1、在页面上方,单击「保存」按钮,保存服务编排。

2、保存后,单击「运行」按钮,运行服务编排。

3、测试1:申请支援人数<空闲人数

输入参数:

{
  "num": 2,
  "name": "叶一一",
  "ProgrammerInfos": [
    {
      "BEAST__name__CST": "开发1组",
      "BEAST__status__CST": "空闲",
      "createdBy": "10gd000000cEMpInogYS",
      "createdBy.name": "test",
      "createdDate": "2020-12-14 17:18:12",
      "currencyIsoCode": "USD",
      "id": "cVjc000000fgrFwQI9WC",
      "lastModifiedBy": "10gd000000cEMpInogYS",
      "lastModifiedBy.name": "test",
      "lastModifiedDate": "2020-12-14 17:18:12",
      "name": "工程师3",
      "owner": "10gd000000cEMpInogYS",
      "owner.name": "test"
    },
    {
      "BEAST__name__CST": "开发1组",
      "BEAST__status__CST": "空闲",
      "createdBy": "10gd000000cEMpInogYS",
      "createdBy.name": "test",
      "createdDate": "2020-12-14 17:18:12",
      "currencyIsoCode": "USD",
      "id": "cVjc000000fgrFwSqXgm",
      "lastModifiedBy": "10gd000000cEMpInogYS",
      "lastModifiedBy.name": "test",
      "lastModifiedDate": "2020-12-14 17:18:12",
      "name": "工程师4",
      "owner": "10gd000000cEMpInogYS",
      "owner.name": "test"
    },
    {
      "BEAST__name__CST": "开发2组",
      "BEAST__status__CST": "空闲",
      "createdBy": "10gd000000cEMpInogYS",
      "createdBy.name": "test",
      "createdDate": "2020-12-14 17:18:12",
      "currencyIsoCode": "USD",
      "id": "cVjc000000fgrFwUpjbE",
      "lastModifiedBy": "10gd000000cEMpInogYS",
      "lastModifiedBy.name": "test",
      "lastModifiedDate": "2020-12-14 17:18:12",
      "name": "工程师5",
      "owner": "10gd000000cEMpInogYS",
      "owner.name": "test"
    },
    {
      "BEAST__name__CST": "开发2组",
      "BEAST__status__CST": "空闲",
      "createdBy": "10gd000000cEMpInogYS",
      "createdBy.name": "test",
      "createdDate": "2020-12-14 17:18:12",
      "currencyIsoCode": "USD",
      "id": "cVjc000000fgrFwX6Wdk",
      "lastModifiedBy": "10gd000000cEMpInogYS",
      "lastModifiedBy.name": "test",
      "lastModifiedDate": "2020-12-14 17:18:12",
      "name": "工程师6",
      "owner": "10gd000000cEMpInogYS",
      "owner.name": "test"
    },
    {
      "BEAST__name__CST": "开发3组",
      "BEAST__status__CST": "空闲",
      "createdBy": "10gd000000cEMpInogYS",
      "createdBy.name": "test",
      "createdDate": "2020-12-14 17:18:12",
      "currencyIsoCode": "USD",
      "id": "cVjc000000fgrFwbe6im",
      "lastModifiedBy": "10gd000000cEMpInogYS",
      "lastModifiedBy.name": "test",
      "lastModifiedDate": "2020-12-14 17:18:12",
      "name": "工程师8",
      "owner": "10gd000000cEMpInogYS",
      "owner.name": "test"
    }
  ]
}

总共工程师5人,申请2人,应该是可以申请成功的。

输出:

{
  "interviewId": "002N0000013M4HJfdcTg",
  "outputs": {
    "ProgrammerInfosUpdate": [
      {
        "BEAST__name__CST": "叶一一",
        "BEAST__status__CST": "支援中",
        "createdBy": "10gd000000cEMpInogYS",
        "createdBy.name": "test",
        "createdDate": "2020-12-14 17:18:12",
        "currencyIsoCode": "USD",
        "id": "cVjc000000fgrFwQI9WC",
        "lastModifiedBy": "10gd000000cEMpInogYS",
        "lastModifiedBy.name": "test",
        "lastModifiedDate": "2020-12-14 17:18:12",
        "name": "工程师3",
        "owner": "10gd000000cEMpInogYS",
        "owner.name": "test"
      },
      {
        "BEAST__name__CST": "叶一一",
        "BEAST__status__CST": "支援中",
        "createdBy": "10gd000000cEMpInogYS",
        "createdBy.name": "test",
        "createdDate": "2020-12-14 17:18:12",
        "currencyIsoCode": "USD",
        "id": "cVjc000000fgrFwSqXgm",
        "lastModifiedBy": "10gd000000cEMpInogYS",
        "lastModifiedBy.name": "test",
        "lastModifiedDate": "2020-12-14 17:18:12",
        "name": "工程师4",
        "owner": "10gd000000cEMpInogYS",
        "owner.name": "test"
      }
    ],
    "ProgrammerRecs": [
      {
        "BEAST__name__CST": "开发1组",
        "BEAST__status__CST": "空闲",
        "createdBy": "10gd000000cEMpInogYS",
        "createdBy.name": "test",
        "createdDate": "2020-12-14 17:18:12",
        "currencyIsoCode": "USD",
        "id": "cVjc000000fgrFwQI9WC",
        "lastModifiedBy": "10gd000000cEMpInogYS",
        "lastModifiedBy.name": "test",
        "lastModifiedDate": "2020-12-14 17:18:12",
        "name": "工程师3",
        "owner": "10gd000000cEMpInogYS",
        "owner.name": "test"
      },
      {
        "BEAST__name__CST": "开发1组",
        "BEAST__status__CST": "空闲",
        "createdBy": "10gd000000cEMpInogYS",
        "createdBy.name": "test",
        "createdDate": "2020-12-14 17:18:12",
        "currencyIsoCode": "USD",
        "id": "cVjc000000fgrFwSqXgm",
        "lastModifiedBy": "10gd000000cEMpInogYS",
        "lastModifiedBy.name": "test",
        "lastModifiedDate": "2020-12-14 17:18:12",
        "name": "工程师4",
        "owner": "10gd000000cEMpInogYS",
        "owner.name": "test"
      }
    ],
    "msg": "人员充足,申请工程师成功!"
  }
}

返回了"人员充足,申请工程师成功!"的提示,且工程师3和工程师4的状态变从"空闲"变更为"支援中"。

4、测试1:申请支援人数>空闲人数

输入参数:

{
  "num": 4,
  "name": "叶一一",
  "ProgrammerInfos": [
    {
      "BEAST__name__CST": "开发2组",
      "BEAST__status__CST": "空闲",
      "createdBy": "10gd000000cEMpInogYS",
      "createdBy.name": "test",
      "createdDate": "2020-12-14 17:18:12",
      "currencyIsoCode": "USD",
      "id": "cVjc000000fgrFwUpjbE",
      "lastModifiedBy": "10gd000000cEMpInogYS",
      "lastModifiedBy.name": "test",
      "lastModifiedDate": "2020-12-14 17:18:12",
      "name": "工程师5",
      "owner": "10gd000000cEMpInogYS",
      "owner.name": "test"
    },
    {
      "BEAST__name__CST": "开发2组",
      "BEAST__status__CST": "空闲",
      "createdBy": "10gd000000cEMpInogYS",
      "createdBy.name": "test",
      "createdDate": "2020-12-14 17:18:12",
      "currencyIsoCode": "USD",
      "id": "cVjc000000fgrFwX6Wdk",
      "lastModifiedBy": "10gd000000cEMpInogYS",
      "lastModifiedBy.name": "test",
      "lastModifiedDate": "2020-12-14 17:18:12",
      "name": "工程师6",
      "owner": "10gd000000cEMpInogYS",
      "owner.name": "test"
    },
    {
      "BEAST__name__CST": "开发3组",
      "BEAST__status__CST": "空闲",
      "createdBy": "10gd000000cEMpInogYS",
      "createdBy.name": "test",
      "createdDate": "2020-12-14 17:18:12",
      "currencyIsoCode": "USD",
      "id": "cVjc000000fgrFwbe6im",
      "lastModifiedBy": "10gd000000cEMpInogYS",
      "lastModifiedBy.name": "test",
      "lastModifiedDate": "2020-12-14 17:18:12",
      "name": "工程师8",
      "owner": "10gd000000cEMpInogYS",
      "owner.name": "test"
    }
  ]
}

总共工程师3人,申请4人,应该会申请失败。

输出:

{
  "interviewId": "002N0000013M4fTRDqPw",
  "outputs": {
    "ProgrammerInfosUpdate": null,
    "ProgrammerRecs": null,
    "msg": "人员不足,申请失败!"
  }
}

返回了"人员不足,申请失败!"的提示。

小结

一个包含多重校验的工程师支援小工具就十分快速的完成了。

整个开发过程简单易懂,得益于 华为云 Astro 的拖拉拽式、可视化服务编排。

总结

这段时间对 华为云 Astro 的体验,有一个非常不错的收获:

从知到行,从熟悉到使用,知行合一,使优秀的工具,发挥它的作用。

开发思维也发生了变化:

服务编排的从知到行,我做了一个化繁为简的工程师支援小工具_服务编排_37

在华为云体验里几个产品之后,我发现实践并不是一件很消耗时间和精力的事情。

华为云提供的产品文档专业且全面,提供了许多完整的指引案例,且内含丰富的功能模板,对于刚入门的开发者十分友好。


作者:非职业「传道授业解惑」的开发者叶一一简介:「趣学前端」、「CSS畅想」系列作者,华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。如果看完文章有所收获,欢迎点赞

标签:__,12,name,工程师,知到,编排,10gd000000cEMpInogYS,test,化繁为简
From: https://blog.51cto.com/u_15838863/8803566

相关文章

  • Veeam Recovery Orchestrator v7.0 (Windows) - 恢复编排
    VeeamRecoveryOrchestratorv7.0(Windows)-恢复编排VeeamDataPlatform|面向混合云和多云的备份和恢复监控和分析恢复编排请访问原文链接:https://sysin.org/blog/veeam-recovery-orchestrator-7/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org切勿将业......
  • 知到 智慧树-大学生心理健康课
    军事理论1.第一次见面课2.做阳光大学生,走健康成长之路3.从内卷到自在4.两种心理学——心理健康的…一、绪论单元测试二、第一章单元检测三、第二章单元检测四、第三章单元检测......
  • 知到 智慧树-军事理论课
    1.走向深蓝的中国海军2.东北亚战略形势3.大国博弈:既做好斗争准备,…4.历史为什么选择了(正治敏感)?一、第一单元测试二、第二单元测试三、第三单元测试四、第四单元测试五、第五单元测试......
  • 构建业务剧本,客户旅程编排赋能金融机构业绩提升
    “拥有技术之后,如何稳定地打磨产品竞争力?”围绕这个问题,中国用户体验联盟副秘书长、时光创新咨询合伙人罗浩进行了分享。他表示,从2007年前后,他就被“体验管理”所影响,并进行了深度探索。本文根据其分享内容整理。一、金融业需要剧本化客户旅程编排(CustomerJourneyOrchestration......
  • Aloudata 余俊:数据虚拟化技术如何实现敏捷高效的逻辑数据集成与链路编排
    一、Data Fabric 与数据虚拟化简介在正式介绍 Data Fabric 之前,我想先回顾一下我们现有的数据仓库体系面临的问题。当提到数据仓库时,许多从事数据工作的人可能会想到 ETL(抽取、转换、加载)和一些技术工具,如 Hive、Hadoop 和 Spark。我在过去十多年一直在数据仓库领域工作,与......
  • 九、安装Docker Compose 编排工具
    根据前面所学的知识可知,想要使用Docker部署应用,就要先在应用中编写Dockerfile文件来构建镜像。同样,在微服务项目中,我们也需要为每一个服务编写Dockerfile文件来构建镜像。构建完成后,就可以根据每一个镜像使用dockerrun或者dockerservicecreate命令创建并启动容器,这样我们就可......
  • 容器编排工具选择----主要以K8S为主
    dockermachine主要用于准备dockerhost现已弃用建议使用dockerdesktopdockercomposeCompose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用YAML文件来配置应用程序的服务。使用一个命令,您可以从您的配置中创建并启动......
  • docker-compose容器编排管理
    一、简介Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工......
  • 如何使用docker编排生产环境?
    在生产环境中使用Docker编排,可以通过DockerCompose或Kubernetes这两种主要的工具实现。DockerCompose:DockerCompose是一个用于定义和运行多容器Docker应用程序的工具。它使用YAML文件定义应用程序的服务、网络和卷,并通过一个命令运行整个应用程序。以下是使用Docker......
  • 神策数据桑文锋:企业数字化客户经营落地,客户旅程编排是关键
    “数据为基、旅程引领,开启数字化经营新时代。”在神策2023数据驱动大会现场,神策数据创始人&CEO桑文锋围绕该主题展开分享。一、八年迭代,神策数据经营理念持续升级桑文锋基于对商业模式的思考,总结了企业面临的三个主要任务——价值创造、客户经营和效率提升。他表示,当前企业在......