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


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

《运维自动化工具流程执行demo》


一、工具执行


工具执行需要设置执行用户、输入参数和分批信息。


执行用户和输入参数的信息直接使用tools.enhanced-tools-input-form构件来设置。


首先通过获取工具详情接口providers-of-tool.basic-api-get-tool获取工具的详情数据。结果存在toolInfoContext这个变量里面。



然后设置tools.enhanced-tools-input-form构件的toolData属性为工具的详情数据,这时候就可以在页面上设置执行用户和输入参数的信息了。



分批策略的信息通过一个新的form表单来收集。



信息都收集完成后,点击开始执行按钮,在按钮的点击事件发生时开始校验分批策略表单;



如果分批策略表单校验成功,在表单的validate.success事件发生时更新存放分批策略信息的batchStrategyContext变量,继续校验tools.enhanced-tools-input-form表单;



如果tools.enhanced-tools-input-form表单也校验成功,会触发表单的validate.success事件,这时候就可以调用执行工具的接口providers-of-tool.execute-api-execute-tool来执行工具,其中要注意输入参数中执行目标参数需要做一些转换处理,具体见下图的@agent字段部分,如果工具成功开始执行了,就跳转到查看工具执行结果的页面。这样一个工具调用的流程就结束了



二、工具执行结果展示


页面展示执行结果的基本信息,可以跳转到工具平台查看更加详细的任务执行情况。


首先使用providers-of-tool.execute-api-get-execute-result接口,指定具体的taskId,获取工具执行结果的数据。



有些工具可能会执行比较长的时间,第一次获取执行结果的时候工具还没有执行完成,这时候需要使用轮询的方式查询执行结果,工具执行完成后结束轮询。在页面加载完成后开始轮询。有关轮询的更多配置请参考文档。



工具执行结果数据里面包括了工具的toolId和工具的版本信息vId,结合providers-of-tool.basic-api-get-tool接口获取工具详情信息。



获取到了执行结果数据和工具详情数据后,开始展示这些数据。


通过presentational-bricks.brick-descriptions构件展示执行结果的基本信息,这里注意构件的dataSource属性的赋值使用了track context的能力,track context的能力可以查看功能介绍/Context/State部分的文档,这个构件的具体使用方法参考构件文档,这里不再展开讲。



三、流程执行


流程执行需要设置流程的输入参数和流程的环境变量。首先调用获取流程详情的接口providers-of-flow.basic-api-get-flow-info获取流程的详细信息。



输入参数使用tools.enhanced-tools-input-form构件来设置。



环境变量使用flow.environment-variable构件来设置,流程的环境变量信息存放在详情数据的flowEnv属性中,如果flowEnv信息为空,则不需要使用这个构件。



信息设置完后,点击开始执行按钮,对设置的信息数据进行校验。



输入参数的表单校验成功后,就可以调用providers-of-flow.execute-api-execute-flow接口执行流程了,流程成功开始执行后,可以跳转到一个新的页面查看执行结果。



四、流程执行结果展示


页面展示流程执行结果的基本信息,可以跳转到流程平台查看更加详细的任务执行情况。


首先使用providers-of-flow.execute-api-get-flow-result接口获取流程任务的执行结果,结果存在taskDetail这个CTX中。



使用providers-of-flow.basic-api-get-flow-info接口获取流程的基本信息数据。



有些流程任务的执行耗时会比较长,所以还需要在页面加载完成时开启轮询来持续查询执行结果,每次轮询得到结果时,把taskDetail的值更新为最新的结果,任务执行完成后停止轮询。



任务执行结果基本信息的展示。使用到的都是基础构件,可以在开发者中心查看相关文档。