附录3:标准插件开发

创建Django APP 和目录结构

在根目录下执行 Django-admin startapp custom_atoms ,然后新建components/collections 和 static/custom_atoms 目录。

修改settings配置

打开conf/settings_custom.py文件,找到INSTALL_APPS_CUSTOM,加入步骤1)中创建的custom_atoms。

接入ESB API

如果需要调用自定义的API,请在完成ESB接入后,更新标准运维bluking/component下的文件。

标准插件后台开发

在custom_atoms/components/collections 目录下创建 test.py 文件,其中需要定义的属性和类如下所示。

test.py 属性详解:

  • group_name:标准插件所属分类(一般是对应 API 的系统简称,如配置平台(CC))
  • class TestCustomService(Service):标准插件后台执行逻辑
  • need_schedule = True:是否是异步执行,默认为 False
  • interval = StaticIntervalGenerator(5):异步标准插件的轮询策略
  • def execute:前端参数获取、API 参数组装、结果解析、结果输出
  • def schedule:轮询逻辑、结果输出
  • def outputs_format:输出参数格式化
  • class TestCustomComponent(Component):标准插件定义
  • name: 标准插件名称
  • code:唯一编码
  • bound_service:绑定后台服务
  • form:前端表单定义文件路径

TestCustomService中execute函数详解:

  • 可以是任何 python 代码,如果对应于 ESB API 调用,一般分为参数组装、API 调用、结果解析。
  • data 是标准插件前端数据,对应于前端的表单,可以用 get_one_of_inputs 获取某一个参数;执行完成可以使用 set_outputs 写入返回值和异常信息(ex_data)。
  • parent_data 是任务的公共参数,包括 excutor—执行者,operator—操作员,biz_cc_id—所属业务 ID。详细请查看 gcloud/taskflow3/utils.py。
  • 返回 True 表示标准插件执行成功,False 表示执行失败

TestCustomService 中 execute函数详解:

  • 返回列表格式。
  • 列表格式的每一项定义一个返回字段,是 execute 函数中的 set_outputs 输出的字段的子集;key—输出字段标识,name—输出字段含义,type—输出字段类型(str、int等python 数据结构)。

TestCustomService 中 shedule 函数详解:

  • 由 interval 控制调用策略,如 pipeline.core.flow.activity.StaticIntervalGenerator(每隔多少秒轮询一次)、DefaultIntervalGenerator(每次轮询间隔时间是上一次的两倍)。
  • 使用 self.finish_schedule 结束轮询。
  • 返回 True 表示标准插件执行成功,False 表示执行失败。

标准插件前端开发

在 custom_atoms/static/custom_atoms 目录下创建 test 目录,并创建 test_custom.js 文件,注意文件路径和标准插件后台定义的 form 保持一致。通过 $.atoms 注册标准插件前端配置,其中各项含义是:

  • test_custom:标准插件后台定义的 code。
  • tagcode:参数 code,请保持全局唯一,命名规范为“系统名参数名”
  • type:前端表单类型,可选 input、textarea、radio、checkbox、select、datetime、datatable、upload、combine等
  • attrs:对应type的属性设置,如 name、validation

标准插件测试

创建流程模板,新增标准插件节点,标准插件类型选择新开发的标准插件,展示的输入参数和前端配置项一致,输出参数和后台outputs_format一致,其中执行结果是系统默认,值是True或False,表示节点执行结果是成功还是失败。

根据上一步创建的流程模板,新建任务执行后查看结果。

如果标准插件执行出错,请先查看节点执行详情,确定是否是代码逻辑异常。

接着查看APP组件类型日志,确定是都是ESB API 调用异常。

提交代码

执行 python manage.py collectstatic –noinput,然后就可以提交代码并打包发布了。

标准插件开发规范

  • 分组命名规则是“系统名(系统英文缩写)”,如“作业平台(JOB)”。
  • 标准插件编码(code)使用下划线方式,规则是“系统名_接口名”,如 job_execute_task。
  • 后台类名使用驼峰式,规则是“标准插件编码+继承类名”,如 JobExecuteTaskService。
  • 前端 JS 文件目录保持和系统名缩写一致,JS 文件名保持和标准插件编码一致。
  • 参数 tagcode 命名规则是“系统名参数名”,这样可以保证全局唯一;长度不要超过 20 个字符。
Copyright © 腾讯蓝鲸 2012-2019 all right reserved,powered by Gitbook最后修订日期: 2019-06-17

results matching ""

    No results matching ""