CMDB的任务做了一些之后,开始做ITSM相关的任务了。
写了有关ITSM中具体任务的一两个小脚本,其中一个脚本涉及到前后端交互和连接以及穿透的范畴。“穿透”这个词听着感觉有点玄乎,但是其实可以用一句话解释,“穿透”就是把用户在前端输入框里打下的字,毫无保留地“传”给后端接口去查库。不穿透的话,不管用户在其前端想查什么,都只会返回最新的数据,而不是根据用户搜索的关键词查询指定的数据。逻辑就是,允许前端传入额外的参数-->获取参数-->转发给api
代码实现就是:
- 开启“额外字段允许”模式(pydantic是一个用于数据验证的库,如果不写这行配置,Pydantic 的严格模式会认为这是非法数据。)
model_config = ConfigDict(extra="allow")
- 取参数(前提:当在 ITSM 前端配置一个“下拉框”组件,并开启“远程搜索”功能时,ITSM 前端组件内部写死了这样的逻辑:“只要用户在输入框打字,我就把输入的内容存到一个固定的变量里,这个名字就叫
remote_search)
remote_search = getattr(input_obj, "remote_search", None)
- 传给API
1. 标准的 Web 开发流程
在普通的 Web 开发中(比如用 Vue 写前端,用 Python Django/Flask 写后端):
- 前端:发起请求。
Axios.get('/api/tickets?keyword=打印机')
- 后端:接收请求,处理业务。
- 从
request.args里拿到keyword。 - 去数据库查询
like %打印机%。 - 把结果整理成 JSON。
- 从
- 前端:拿到 JSON,渲染页面。
2. ITSM 脚本开发
在 ITSM 这种低代码平台中,为了灵活性,把“后端”拆分了:
- 平台本身:负责基础的路由、鉴权、前端框架。
- 你的脚本:负责具体的业务逻辑(也就是上面标准流程中的第 2 步)。
脚本就是一个微型的“后端接口”。
- 输入:前端传来的参数 ->
execute(input_data)。 - 处理:跑逻辑 ->
run_logic()。 - 输出:返回 JSON ->
OutputSchema。
3. 区别?
ITSM动作脚本还要定义 Schema,并且参数是系统注入的
因为 ITSM 平台为了通用性,做了一层标准化封装:
- 强类型约束: 普通开发里,后端接口返回什么字段,前端得去看文档才知道。 而在这里,平台强制你先定义
Schema(input_schema和output_schema)。这样平台的前端组件才能自动生成输入框、自动渲染列表。这叫 “契约驱动开发” 。 - 网关代理: 你的脚本并不是直接暴露给前端的。前端请求先打到 ITSM 的网关,网关解析后,再按照约定调用你的脚本,并把参数(
remote_search)注入进去。






Comments NOTHING